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='小蓝';
                    
                
                
            
        
浙公网安备 33010602011771号