1.列约束
mysql可以对要插入的数据进行特定的验证,只要满足条件才允许插入,否则被认为的非法的插入,例如一个人的性别只能是男或女,一个人的工资只能是正数。
(1)主键约束——PRIMARY KEY
声明了主键约束的列上不允许插入重复的值;一个表中只能有一个主键约束,通常添加在编号列上,查询时候会按照编号列从小到大排序,会加快查找速度。
NULL表示空,在插入的时候,无法确定的数据通常用NULL,例如无法确定一个员工的性别,生日,无法确定商品的价格等;
注意:NULL使用的时候不能加引号。
主键列上禁止插入NULL。
(2)非空约束——NOT NULL
声明了非空约束的列上,禁止插入NULL
(3)唯一约束——UNIQUE
声明了唯一约束的列上,禁止插入重复的值,允许插入NULL,甚至是多个NULL
两个NULL比较是不等的,所以允许插入多个。
(4)默认值约束——DEFAULT
可以使用DEFAULT关键字声明默认值,具体有两种方式可以应用默认值
INSERT INTO laptop_family VALUES(36,'神州',DEFAULT);
INSERT INTO laptop_family(fid,fname) VALUES(37,'惠普');
(5)检查约束——CHECK
检查约束可以对插入的数据进行自定义的验证
CREATE TABLE student(
score TINYINT CHECK(score>=0 AND score<=100)
);
mysql不支持检查约束,会影响数据的插入速度。对服务器造成较大的压力 后期可以使用JS替代此功能。
(6)外键约束——FOREIGN KEY
声明了外键约束的列上,取值必须在另一个表的主键列上出现过,两者的列类型要保持一致;一个表外键列允许使用多次,而且允许使用NULL
FOREIGN KEY(外键列) REFERENCES 另一个表(主键列)

2.自增列
AUTO_INCREMENT: 自动增长,假如一个列上声明了自增列,则无需手动赋值,只需要赋值为NULL,就会自动获取当前的最大值,然后加1插入。
注意:自增列必须添加在主键列上,自增列允许手动赋值。
3.简单查询
(1)查询特定的列
示例:查询所有员工的编号和姓名
SELECT eid,ename FROM emp;
SELECT ename,sex,birthday FROM emp;
(2)查询所有的列
SELECT eid,ename,sex,birthday,salary,deptId FROM emp;
SELECT * FROM emp;
(3)给列起别名
示例:查询所有员工的姓名和性别,使用汉字别名
SELECT ename AS 姓名,sex AS 性别 FROM emp;
SELECT eid AS 编号,ename AS 姓名,salary 工资 FROM emp;
SELECT ename a,birthday b FROM emp;
AS关键字可以省略,保留空格即可;
起别名的目的通常是为了简化列名称单词过长
(4)显示不同的记录
示例:查询员工都分布在哪些部门
SELECT DISTINCT deptId FROM emp;
SELECT DISTINCT sex FROM emp;
(5)查询时执行计算
示例:计算2+3-4*5+9*37
SELECT 2+3-4*5+9*37;
SELECT ename,salary*12 FROM emp;
SELECT ename 姓名,(salary+700)*12+8000 年薪 FROM emp;
(6)查询结果集排序
示例:查询所有的部门,结果集按照部门编号升序排列 SELECT * FROM dept ORDER BY did ASC; #ascendant 升序
示例:查询所有的部门,结果集按照部门编号降序排列 SELECT * FROM dept ORDER BY did DESC; #descendant 降序 desc emp;