约束

1.主键约束
1.2联合主键:
例:
CREATE TABLE stu(
classid INT,
stuid INT,
styname VARCHAR(50),
PRIMARY KEY(classid,stuid)
);

1.3 创建表之后添加主键 :
CREATE TABLE stu(
classid INT,
stuid INT,
styname VARCHAR(50)
);
ALTER TABLE stu ADD PRIMARY KEY(stuid);
2.唯一约束 unique:
特点:数据不能重复。
CREATE TABLE stu(
stuid INT PRIMARY KEY,
stuname VARCHAR(50)UNIQUE
);
3.非空约束 not null
CREATE TABLE stu(
stuid INT PRIMARY KEY,
stuname VARCHAR(50)NOT NULL
);
4.默认约束 default
CREATE TABLE stu(
stuid INT PRIMARY KEY AUTO_INCREMENT,
stuname VARCHAR(50)DEFAULT’zhangsan’
);
5.自动增长 auto_increment
注意:自定增长只对类型为整数的主键有效
CREATE TABLE stu(
stuid INT PRIMARY KEY AUTO_INCREMENT,
stuname VARCHAR(50)
);
6.外键
1.外键约束:FOREIGN KEY:
CREATE TABLE score(
id INT PRIMARY KEY,
kemu VARCHAR(50),
score DOUBLE,
stuid INT,
constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
CONSTRAINT FK_ID FOREIGN KEY(stuid) REFERENCES stu(stuid)
);
主表:从表通过外键匹配在主表中获取信息
从表:有外键的

结论1:从表中只能添加主表已有的对应内容
结论2:主表不能删除或修改从表中已有对应外键的数据

解除外键:ALTER TABLE 从表 DROP FOREIGN KEY 外键约束的名称;
ALTER TABLE score DROP FOREIGN KEY FK_ID;

多表查询
内连接:[inner] join,从左表中取出每一条记录,去右表中与所有的记录进行匹配,匹配必须是某个条件在左表中与右表中相同,最终才会保留结果,否则不保留。

基本语法:

左表 [inner] join 右表 on 左表.字段 = 右表.字段;

on表示连接条件:条件字段就是代表相同的业务含义(如my_student.c_id和my_class.id),大多数情况下为两张表中的主外键关系。
外连接
外连接:outer join,以某张表为主,取出里面的所有记录,然后每条与另外一张表进行连接,不管能不能匹配上条件,最终都会保留。能匹配,正确保留;不能匹配,其它表的字段都置空(null)。

外连接分为两种:是以某张表为主,有主表

left join:左外连接(左连接),以左表为主表

right join:右外连接(右连接),以右表为主表

基本语法:

左表 left/right join 右表 on 左表.字段 = 右表.字段;

on表示连接条件:条件字段就是代表相同的业务含义(如my_student.c_id和my_class.id),大多数情况下为两张表中的主外键关系。

自然连接
自然连接:natural join,自然连接,就是自动匹配连接条件,系统以字段名字作为匹配模式(同名字段就作为条件,多个同名字段就都作为条件)。

子查询:

一个select语句中包含另一个完整的select语句。
子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了。
子查询出现的位置:
where后,作为条为被查询的一条件的一部分;
from后,作表;
当子查询出现在where后作为条件时,还可以使用如下关键字:
any
all
子查询结果集的形式:
单行单列(用于条件)
单行多列(用于条件)
多行单列(用于条件)
多行多列(用于表)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值