数据约束
默认值:
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