数据约束

默认值:

    create table student(

             id int,

             address=varchar(20) default '山东淄博'

              )当不输入值时,就会使用默认值。同时允许值可以时null.

非空:

    create table student(

             id int,

             gender varchar(2) not null

              )必须要有值,并且不能输入null

唯一:

  create table student(

             id int unique,

             gender varchar(2) 

              )表示在这个字段中,不能出现相同的值,但是唯一字段可以插入Null,并且可以插如多个null.

主键:

  create table student(

           id int(4) zerofill primary key auto_increment,

           name varchar(20)

            )1: 每一张表都要设置主键,最好选择id作为主键,并且主键需要满足非空加唯一

            2:自增长字段不需要赋值,会自动相加。并且删除一段数据之后,自增长依旧会+1,相加即使时1,3的排序。delete from 不可以删除约束,而truncate 可以删除约束的内容,但不可以删除约束的作用。

外键:

   创建部门表

  create table  dept(
                          did int primary key auto_increment,
                dname varchar(10),
                mgr varchar(10)
        )
       创建员工表
        create table emp(
                eid int primary key auto_increment,
                ename varchar(10),
                sal double,
                sex char(5),
                did int,
                constraint fk_emp_dept foreign key(did)
                references dept(did)
        ) 外键约束主要是用来解决表中一些重复的数据,分为2张表,为员工表的did字段添加一个外键约束。被约束的表是副表,约束别的表是主表,并且外键设置在副表上。主表的参考字段通用为主键。

  constraint 表示的声明。 fk_emp_dept表示的是外键的名字。foreign key 表示的是在这张表中谁是外键。references表示的是参照的是 dept 中的did.

  添加数据:先主在副。删除数据:先副在主。修改数据:先副在主

交叉连接:

    select * from emp join dept 将2个表硬连接在一起,数据会混乱。

内连接:

    语法:from  表1  [inner]  join  表2  on  表1.字段1=表2.字段2

    select * form emp join dept on emp.did=dept.did 将连个表连接在一起,数据没有多余且准确,将两个表符合条件的连接在一起。并且内连接后可以加 where 条件。

左外连接:

    语法:from  表1  left  [outer]  join   表2   on  连接条件 连接条件与内连接相同

    select * form emp left join dept on emp.did=dept.did     左外连接表示的是在内连接的结果基础上,加上左边表中所有不符合连接条件的数据,相应放右边表的字段的位置就自动补为“null”值

右外连接:

    语法: from  表1  right  [outer]  join   表2   on  连接条件

    select * from emp right join dept on emp.did=dept.did   右外连接表示的是在内连接的结果基础上,加上右边表中所有不符合连接条件的数据,相应本应放左边表的字段的位置就自动补为“null”值

    select * form 表1 join 表2 on 表1.id=表2.id join 表3 on 表2.id=表3.id  可以三个表连接。
 子查询:

     表示的是将一个查询的结果当成另一个查询的条件。

    select did from emp where ename='李四'

    select dname from dept where did=()

    select dname from dept where did=(select did from emp where ename='李四')  只需要查询完第一个时,将did里的条件改为第一个查询结果

    当查询的结果是多个时,可以使用in多为关键字,同时in不管是一个值,还是多个值都可以使用。

    select did from emp where sex='男'

    select mgr from dept where did in(1,2)

    select mgr from dept where did in(select did from emp where sex='男')     将()里的1,2替换为第一个查询结果,使用in作为关键字

联合查询:

    语法:selcet 语句1   union    select  语句2  并且两个语句字段数目需要相等,且类型需要一样。

    select eid,ename from emp union select did,dname from dept

 

posted @ 2020-09-12 16:46  马雪峰1  阅读(145)  评论(0编辑  收藏  举报