SQL约束与策略
create table student( id int primary key, //主键约束 name varchar(200) not null, //非空约束 idCard varchar(50) unique, //唯一性约束 age int auto_increment, //自动增长策略 add foreign key(category_id) references category(id)//外键约束 )
多表操作
多表关系 一对一 多对多 多对一 实践:省和市 CREATE TABLE province( id INT PRIMARY KEY, NAME VARCHAR(20), description VARCHAR(20) ); CREATE TABLE city( id INT PRIMARY KEY, NAME VARCHAR(20), description VARCHAR(20) add foreign key(id) references province(id); );
多表查询
内连接 select * from A a,B b where a.字段 = b.字段; 外连接 以左表数据为基准,匹配右表,如果匹配到,将数据显示,如果匹配不 到,右表中的数据显示null select * from A left join B on 条件 以右表数据为基准,匹配左表,如果匹配到,将数据显示,如果匹配不 到,左表中的数据显示null select * from A right join B on 条件 自连接 查询出工资比小胡高的员工的姓名和工资 SELECT e1.name,e1.salary FROM emp e1,emp e2 WHERE e1.salary>e2.salary AND e2.name='小胡' 子查询 子查询的结果是一个值的时候 Select * from emp where salary<(select avg(salary) from emp) 子查询结果是单列多行的时候 查询工资大于5000的员工,来自于哪些部门的名字 放在from后面的子查询叫做内建视图