2019.12.02 数据库约束

查询2000年入职的员工(year、month、day)

SELECT * FROM emp WHERE YEAR(hiredate)=2000;

 

默认值约束(缺省约束)(建表时就可创建,可删改)

CREATE TABLE suser(
uid INT,
uname VARCHAR(10),
address VARCHAR(30) DEFAULT '山东淄博'
);

 

非空约束(设定的非空字段不能赋值null)

CREATE TABLE suser(
uid INT,
uname VARCHAR(10),
idcard VARCHAR(20) NOT NULL,
address VARCHAR(30) DEFAULT '山东淄博'
);

 

唯一约束(可以插入null;可以插入多个null;设定的字段不能有重复值)

CREATE TABLE suser(
uid INT,
uname VARCHAR(10) UNIQUE,
idcard VARCHAR(20) NOT NULL,
address VARCHAR(30) DEFAULT '山东淄博'
);

 

主键(非空+唯一)

 

CREATE TABLE suser(
uid INT PRIMARY KEY,
uname VARCHAR(10) UNIQUE,
idcard VARCHAR(20) NOT NULL,
address VARCHAR(30) DEFAULT '山东淄博'
);

 

自增长约束(只能给int类型的主键添加)

CREATE TABLE suser(
uid INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(10) UNIQUE,
idcard VARCHAR(20) NOT NULL,
address VARCHAR(30) DEFAULT '山东淄博'
);

自增长的零填充(序号前带零)

CREATE TABLE suser(
uid INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(10) UNIQUE,
idcard VARCHAR(20) NOT NULL,
address VARCHAR(30) DEFAULT '山东淄博'
);

 

主键与外键(先主表后副表)

(主表:)

CREATE TABLE dept(
did INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(10),
mgr VARCHAR(10),
phone VARCHAR(12)
)

(副表)

CREATE TABLE demp(
eid INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(10),
sex CHAR(2),
did INT,
CONSTRAINT fk_demp_dept FOREIGN KEY(did)
REFERENCES dept(did)
);

 内部数据(修改时先改副表did,再改主表did)

INSERT INTO dept(dname,mgr,phone) VALUES('开发部','钢铁侠','139xxxxxxxx');
INSERT INTO demp(ename,sex,did) VALUES('小蓝','女',1);

 

表连接(两个或两个以上的表连接成为一个数据)

交叉连接:

SELECT * FROM demp JOIN dept;

内连接:

SELECT * FROM demp JOIN dept ON demp.did=dept.did;

查询语句实例:

SELECT mgr FROM demp JOIN dept ON demp.`did`=dept.`did` WHERE ename='小蓝';

 

 

posted @ 2019-12-02 09:23  墨染千城  阅读(145)  评论(0)    收藏  举报