day03

1.列约束

 (1)默认值约束 —— default

  在插入值的时候使用默认值

  可以使用default来设置默认值和应用默认值

  具体应用默认值有两种方式

  insert  into  laptop  values(4, ‘小米Air’, default, ....);

  insert  into  laptop(lid,title)  values(5,’小新700’);  

  给特定的列提供值,没有出现的列自动应用默认值

  练习:删除family表下fname的约束,然后给fname添加默认值约束,设置默认值为‘未知’,插入数据测试。

 (2)检查约束 —— check

  称作自定义约束,可以自己添加约束条件

  create  table  student(

    score  tinyint  check( score>=0  and  score<=100 )

);

  mysql不支持检查约束,会极大的影响数据的插入速度,后期使用js代替。

 (3)外键约束

  声明了外键约束的列,取值范围会在另一个表的主键列

  注意事项:外键列要和对应的另一个表主键列的列类型保持一致

  foreign  key(外键列)  references  另一个表(主键列)   注:主键要唯一性

day03

 

2.自增列

 auto_increment:自动增长,在插入值的时候只需要赋值为null,就会自动获取最大值然后加1插入。

 注意事项:

   自增列必须添加在整数形式的主键列

   允许手动赋值

 练习:编写脚本文件tedu.sql,设置编码utf-8,先丢弃再创建数据库tedu,进入数据库创建保存部门数据的表dept,包含部门编号did(主键、自增列),部门名称dname(唯一约束),插入以下数据

  10  研发部   20  市场部    30  运营部    40  测试部

  创建保存员工数据的表emp,包含编号eid(主键、自增列),姓名ename(非空约束),性别sex(默认值约束),生日birthday,工资salary,所属部门编号deptId(外键约束);插入若干条数据

  

3.简单查询

 (1)查询特定的列

  示例:查询出所有员工的编号和姓名

  select  eid,ename  from emp;

  练习:查询出所有员工的姓名、生日、工资

  select  ename,birthday,salary  from emp;

 (2)查询所有的列

  select  eid,ename,sex,birthday,salary,deptId  from emp;

  select * from emp;

 (3)给列起别名

  示例:查询出所有员工的编号和姓名,使用汉字别名

  select  eid as 编号,ename as 姓名  from emp;

  练习:查询出所有员工的姓名、性别、生日、工资,使用一个字母作为别名

  select  ename a,sex b,birthday c,salary d  from emp;

as关键字可以省略,保留即可。

给列起别名的目的是为了简化列名称。

 (4)显示不同的记录

  示例:查询出都有哪些性别的员工

  select  distinct sex  from  emp;

  练习:查询出员工都分布在哪些部门

  select  distinct deptId  from emp;

 (5)查询时执行计算

  示例:计算 1+3+5+8*7.4+5*4.39

  select  1+3+5+8*7.4+5*4.39;

  练习:查询出所有员工的姓名及其年薪

  select  ename,salary*12  from emp;

  练习:假设每个员工的工资增长1000,年终奖20000,查询出所有员工的姓名及其年薪,使用汉字别名

  select  ename 姓名,(salary+1000)*12+20000 年薪 from emp;

 (6)查询结果排序

  示例:查询出所有的部门,结果按照部门编号升序排列

  select * from dept order by did asc;  #ascendant 升序的

  示例:查询出所有的部门,结果按照部门编号降序排列

  select * from dept order by did desc;  #descendant  降序

  练习:查询出所有的员工,结果按照工资降序排列

  select * from emp order by salary desc;

  练习:查询出所有的员工,结果按照年龄从大到小排列(生日从小到大)

  select * from emp order by birthday asc;

  练习:查询出所有的员工,结果按照姓名的升序排列

  select * from emp order by ename;

按照字符串排序是按照字符的编码排列

不加排序规则,默认是按照升序排列

  示例:查询出所有的员工,结果按照工资的升序排列,要求男员工显示在前女员工显示在后

  select * from emp order by sex desc, salary;

  练习:查询出所有的员工,结果按照部门升序排列,如果部门相同按照年龄从小到大排列

  select * from emp  order by deptId,birthday desc;

 (7)条件查询

  示例:查询出编号为5的员工所有列

  select * from emp where eid=5;

  练习:查询出姓名为king的员工所有列

  select * from emp where ename='king';

  练习:查询出20号部门下的员工有哪些

  select * from emp where deptId=20;

  练习:查询出工资在6000以上的员工有哪些

  select * from emp where salary>6000;

>  <   >=  <=   =   !=(不等于)

  练习:查询出不在20号部门下的员工有哪些

  select * from emp where deptId!=20;

  练习:查询出没有明确部门的员工有哪些

  select * from emp where deptId is null;

  练习:查询出有明确部门的员工有哪些

  select * from emp where deptId is not null;

  练习:查询出工资在7000以上的男员工有哪些

   select * from emp where salary>7000 and sex=1;

   select * from emp where salary>7000 && sex=1;

  练习:查询出工资在6000~9000直接的员工有哪些

   select * from emp where salary>=6000 && salary<=9000;

   select * from emp where salary between 6000 and 9000;

  练习:查询出工资在6000以下或者9000以上的员工有哪些

   select * from emp where salary<6000  or  salary>9000;

   select * from emp where salary<6000  ||  salary>9000;

   select * from emp where salary not between 6000 and 9000;

  练习:查询出1993年出生的员工有哪些

   select * from emp where birthday>='1993-1-1'  &&  birthday<='1993-12-31';

   select * from emp where birthday between '1993-1-1' and '1993-12-31';

  练习:查询出20号部门或者30号部门的员工有哪些

   select * from emp where deptId=20 || deptId=30;

   select * from emp where deptId in(20,30);

  练习:查询出不在20号部门并且不在30号部门的员工有哪些

   select * from emp where deptId!=20 && deptId!=30;

   select * from emp where deptId not in(20,30);

and (&&)  并且,两个条件都满足

or (||)  或者,两个条件满足其一

between  and   在两者之间

not  between  and  不在两者之间

is  null   值为null

is  not  null   值不为null

in(  )   满足其中一个

not  in(  )    都不满足

 (8)模糊条件查询

  示例:查询出姓名中含有字母o的员工有哪些

  select * from emp where ename like '%o%';

  练习:查询出姓名中以o结尾的员工有哪些

  select * from emp where ename like '%o';

  练习:查询出姓名中第二个字符是o员工有哪些

  select * from emp where ename like '_o%';

%  匹配任意个字符   >=0

_  任意一个字符      =1

 

软件下载地址

链接:https://pan.baidu.com/s/1xL02vqb_XnLZoZzyjTRNKQ

提取码:a94v

day03

 

课后任务

 (1)复习今天内容,整理思维导图

 (2)删除代码,保留注释,重新编写SQL命令

   练习:查询出工资在10000以上的男员工的姓名,生日,工资;按照工资降序排列。

 (3)查看学子商城数据库设计

 (4)预习js第1天

 

 

 

上一篇:Java培训Day03——制作疫情地图(三)


下一篇:《Day03》呕心沥血彻夜鏖战总结的JS知识点以及面试题