1.列约束
(1)唯一约束 —— unique
声明了唯一约束的列不允许出现重复的值,允许插入null,甚至多个null;可能会影响数据的排序
(2)默认值约束 —— default
可以使用default关键字来设置默认值,具体应用方式有两种
insert into family values(40, default); #通过default调用当前列的默认值
insert into family(fid) values(50); #给指定的列提供了值,没有出现的列自动调用默认值
(3)检查约束 —— check
也称为自定义约束
create table student(
score tinyint check(score>=0 and score<=100)
);
mysql不支持检查约束,会影响数据的插入速度
后期用JS来完成验证
(4)外键约束
声明了外键约束的列,插入的值必须得在另一个表的主键列中出现过才行;外键列要和对应的主键列类型要保持一致
foreign key(外键列) references 另一个表(主键列)
外键约束使用目的是为了让两个表之间产生关联 |
2.自增列
auto_increment 自动增长,如果设置了自增列,在插入数据的时候,只需要赋值为null,就会获取当前的最大值然后加1插入
注意事项:
自增列只能添加在整数形式的主键列
允许手动赋值
3.简单查询
(1)查询特定的列
示例:查询出所有员工的编号和姓名
select eid,ename from emp;
(2)查询所有的列
select eid,ename,sex,birthday,salary,deptId from emp;
select * from emp;
(3)给列起别名
示例:查询出所有员工的编号和姓名,使用汉字别名
select eid as 编号, ename as 姓名 from emp;
(4)显示不同的记录
示例:查询出都有哪些性别的员工
select distinct sex from emp;
(5)查询时执行计算
select 2+3+4+5;
示例:查询所有员工的姓名及其年薪
select ename,salary*12 from emp;
练习:假设每个员工工资增加1000,年终奖20000,查询出所有员工的性别及其年薪,使用别名
select sex a,(salary+1000)*12+20000 b from emp;
(6)查询的结果排序
示例:查询出所有的部门,结果按照编号升序排列
Select * from dept order by did asc; #ascendant 升序的
示例:查询出所有的部门,结果按照编号降序排列
Select * from dept order by did desc;
describe 描述
descendant 降序的
练习:查询出所有的员工,结果按照工资的降序排列
select * from emp order by salary desc;
练习:查询出所有的员工,结果按照年龄从大到小排列
select * from emp order by birthday asc;
练习:查询出所有的员工,结果按照姓名升序排列
select * from emp order by ename;
字符串排序,按照字符的Unicode码排列 不加排序规则,默认是按照升序排列 |
练习:查询出所有的员工,按照工资降序排列,如果工资相同按照姓名排列
select * from emp order by salary desc,ename;
练习:查询出所有的员工,按照性别排列,如果性别相同按照年龄从大到小排列
Select * from emp order by sex,birthday;
(7)条件查询
示例:查询出编号为5的员工
select * from emp where eid=5;
练习:查询出姓名为king的员工
Select * from emp where ename='king';
练习:查询出20号部门的员工有哪些
select * from emp where deptId=20;
练习:查询出所有的女员工有哪些
select * from emp where sex=0;
练习:查询出工资在8000以上的员工有哪些
select * from emp where salary>8000;
> < >= <= = !=(不等于) |
练习:查询出不在20号部门的员工有哪些
select * from emp where deptId!=20;
练习:查询出没有明确部门的员工有哪些
select * from emp where deptId is null;
练习:查询出有明确部门的员工有哪些
select * from emp where deptId is not null;
练习:查询出工资在5000~8000之间的员工有哪些
select * from emp where salary>=5000 and salary<=8000;
select * from emp where salary>=5000 && salary<=8000;
and(&&) 并且 or(||) 或者 |
练习:查询出工资在5000以下或者8000以上的员工有哪些
select * from emp where salary<5000 or salary>8000;
select * from emp where salary<5000 || salary>8000;
练习:查询出1993年出生的员工有哪些
select * from emp where birthday>='1993-1-1' and birthday<='1993-12-31';
练习:查询出20号部门或者30号部门的员工有哪些
select * from emp where deptId=20 or deptId=30;
select * from emp where deptId in(20,30);
练习:查询出不在20号部门并且也不在30号部门的员工有哪些
select * from emp where deptId!=20 and deptId!=30;
select * from emp where deptId not in(20,30);
(8)模糊条件查询
示例:查询出姓名中含有字母a的员工有哪些
select * from emp where ename like '%a%';
练习:查询出姓名中以a结尾的员工有哪些
select * from emp where ename like '%a';
练习:查询出姓名中倒数第2个字符是a的员工有哪些
select * from emp where ename like '%a_';
% 匹配任意个字符 >=0
_ 匹配任意一个字符 =1
以上两个匹配符必须结合like关键字使