声明了唯一约束的列不允许出现重复的值,允许插入null,甚至多个null;可能会影响数据的排序 练习:给商品表laptop的标题列添加唯一约束,并插入数据测试
可以使用default关键字来设置默认值,具体应用方式有两种 insert into family values(40, default); #通过default调用当前列的默认值 insert into family(fid) values(50); #给指定的列提供了值,没有出现的列自动调用默认值
也称为自定义约束 create table student( score tinyint check(score>=0 and score<=100) ); mysql不支持检查约束,会影响数据的插入速度 后期用JS来完成验证
声明了外键约束的列,插入的值必须得在另一个表的主键列中出现过才行;外键列要和对应的主键列类型要保持一致 foreign key(外键列) references 另一个表(主键列) 外键约束使用目的是为了让两个表之间产生关联
auto_increment 自动增长,如果设置了自增列,在插入数据的时候,只需要赋值为null,就会获取当前的最大值然后加1插入 注意事项: 自增列只能添加在整数形式的主键列 允许手动赋值
示例:查询出所有员工的编号和姓名 select eid,ename from emp; 练习:查询出所有员工的姓名、性别、生日、工资 select ename,sex,birthday,salary from emp;
select eid,ename,sex,birthday,salary,deptId from emp; select * from emp;
示例:查询出所有员工的编号和姓名,使用汉字别名 select eid as 编号, ename as 姓名 from emp; 练习:查询出所有员工的姓名、生日、工资,使用汉字别名 Select ename 姓名,birthday 生日,salary 工资 from emp; 练习:查询出所有员工的姓名和性别,使用一个字母作为别名 select ename a,sex b from emp;
示例:查询出都有哪些性别的员工 select distinct sex from emp; 练习:查询出员工都分布在哪些部门 select distinct deptId from emp;
select 2+3+4+5; 练习:查询所有员工的姓名及其年薪 select ename,salary*12 from emp; 练习:假设每个员工工资增加1000,年终奖20000,查询出所有员工的性别及其年薪,使用别名 select sex a,(salary+1000)*12+20000 b from emp;
示例:查询出所有的部门,结果按照编号升序排列 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;
示例:查询出编号为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);
示例:查询出姓名中含有字母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关键字使用
练习数据库下载请点击 密码:ljsb