SQL语言(二)

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后面的子查询叫做内建视图
我凝视这恒星,等待这那场风暴,我已经准备好了
原文地址:https://www.cnblogs.com/cheng5350/p/11466363.html