码迷,mamicode.com
首页 > 数据库 > 详细

mysql

时间:2019-01-11 23:24:13      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:控制   实体   limit   dql   管理数据   min()   unique   批量   实例   

一、数据库的基本概念

  1.数据库包括数据库(DB)和数据库管理系统(DBMS)两个部分。DB是指数据的文件系统,用来存储数据的仓库;DBMS是操作和管理数据库的软件。
  数据库:存储、维护和管理数据的集合
  2.数据在数据库中是以一张二维表的形式存在的;其中,表中的列叫字段,表中的行代表一
条记录,也叫一个实例。

二、sql:结构化查询语言

  sql分类:    

    DDL: 数据定义语言;用来操作表和数据库;
      常用关键字:create/alter/drop
    DML: 数据操作语言;用来操作表中的数据;
      常用关键字:insert update delete
    注:字符串类型在sql中用‘‘;
    空值:null:不占用内存;
        ‘‘:占内存
    (1)插入操作 insert
      insert into 表名(列名1,....) values(列值1,....);
      批量插入:insert into 表名 values((...),(...),(...));
    (2)修改操作 update
      update 表名 set 列名1=列值1,.... where 列名 = 值;
    (3) 删除操作 delete
      delect from 表名 where 列名=值;
    注:delect删除表中的数据,表的结构还在,删除后数据可以找回
      truncate:删除是直接把表Drop掉,然后再创建一个同样的表,表中的数据找不回。执行速度相对较快。
    DQL:数据查询语言;
      关键字:select
      1.基础查询
        (1) select * from stu; //查询所有列
           selec id,name,age from stu; //查询指定列
           from 表名 //要查询的表名称
           where condition //行条件
           group by //对结果分组
           having condition //分组后的行条件,分组后再筛选
                                  order by //对结果分组
           limit 起始行,总行数; //结果限定
        (2) 书写顺序:select from where group by having order by limit;
          执行顺序:from where group by having select order by limit;
        (3) having与where的区别:
          a).having是在分组后对数据进行过滤.
              where是在分组前对数据进行过滤
          b).having后面可以使用分组函数(统计函数)
           where后面不可以使用分组函数。
                                    c).WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;
           HAVING是对分组后数据的约束。

      2.条件查询

        (1) =,!=(获取<>),<,<=,>,>=;
        (2) between...and;
        (3) in(set);
        (4) is null,is not null;
        (5) and;
        (6) or;
        (7) not.
      3.模糊查询
        通配符:_任意一个字符
        %任意0~n个字符
      4.字段控制查询
        (1)去除重复记录 select distinct x from emp;
        (2)任何值和null相加结果为null,为了避免出现相加结果为null,使用:字段1 + ifnull(字段名2,0);
      5.聚合函数:sum() avg() max() min() count()都是滤空的
        注:凡和聚合函数同时出现的列名,则一定要写在group by之后,不能颠倒

    DCL:数据控制语言;

三、数据的完整性

  1.为了确保数据的完整性,需要在创建表的时候给表添加约束
  2.分类:
    1) 实体完整性(行级):
      主键约束:primary key
      唯一约束:unique
      自动增长列:auto_increment
    2) 域完整性(列级):
      数据类型
      not null(非空约束)
      default(默认值约束)
      check(mysql不支持)
    3) 引用完整性:
      外键约束:FOREIGN KEY
      constrain XXX foreign key(id) references 表名(id);

四、表关系

     一对一
    一对多(多对一)
    多对多

五、多表查询

    1.连接查询
      连接查询会产生笛卡尔积,会有很多无用信息,需要使用主外键关系来去除无用信息
      (1)99查询法:
        select * from 表名1 as x,表名2 as y where x.列名 = y.列名1
      (2)内连接(join .. on)
        select * from 表1 x join 表2 y on x.列名 = y.列名1
        注:on只能用作主外键关联
      (3)外连接
        左连接:select * from 表1 x left join 表2 y on x.列名 = y.列名1
        右连接:select * from 表1 x right join 表2 y on x.列名 = y.列名1
        两张表的连接查询一定有一个主外键关系,三张表的连接查询就有两个主外键关系,N张表就一定有N-1个条件。
    2.自然连接
      两张表的表中的名称和类型完全一致的作为条件
      select * from 表1 natural join 表2
      select * from 表1 natural left join 表2
      select * from 表1 natural right join 表2
    3.子查询(*****)
      一个select语句包含另一个完整的select,即嵌套查询。
      (1)子查询出现的位置:
        1)where后,作为条为被查询的一条件的一部分;可以使用关键字any、all
        2)from后,作表;
      (2)子查询结果集的形式:
        单行单列(用于条件)
        单行多列(用于条件)
        多行单列(用于条件)
        多行多列(用于表)
    4.自连接:自己连接自己

mysql

标签:控制   实体   limit   dql   管理数据   min()   unique   批量   实例   

原文地址:https://www.cnblogs.com/q-1993/p/10241643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!