数据库/JS基础/后端开发(Node.js)

1.列约束

 (1)唯一约束 —— unique

  声明了唯一约束的列上不允许插入重复的值,允许插入null,甚至多个null

  练习:在family表的fname列上同时添加唯一约束和非空约束,并插入数据测试

 (2)默认值约束——default

  可以使用default关键字来设置默认值,如果不设置默认值,则默认值为null,具体应用默认值有两种方式

 insert  into  laptop  values(1, '小米Air', default...);

 insert  into  laptop(lid, title)  values(2, '燃7000'); #没有出现的列会自动使用默认值

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

 (3)检查约束 —— check

  也称为自定义约束,用户可以添加自定义的约束条件

  create  table  student(

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

  );

  mysql不支持检查约束,后期可以通过JS来实现

 (4)外键约束

  声明了外键约束的列上要插入的值必须在另一个表的主键列中出现过,两者的列类型要保持一致

  外键约束允许插入null

  foreign key(外键列)  references  另一个表(主键列)

2.自增列

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

 注意事项:

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

  自增列允许手动赋值

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

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

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

3.简单查询

 (1)查询特定的列

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

  select  eid,ename  from emp;

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

  select ename,sex,birthday,salary from emp;

 (2)查询所有的列

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

  select * from emp;

 (3)给列起别名

  示例:查询出所有员工的编号和姓名,使用一个字母作为别名

  select  eid as a,ename as b  from emp;

  练习:查询出所有员工的姓名,工资,所属部门编号,使用别名

  select ename e,salary s,deptId d from emp;

as 用来设置别名

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

 (4)显示不同的记录

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

  select distinct sex  from emp;

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

  select distinct deptId from emp;

distinct  不同的,有区别

 (5)查询时执行计算

  示例:计算2+3+4*5*6+4.3*5.5

  select 2+3+4*5*6+4.3*5.5;

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

  select ename,salary*12 from emp;

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

  select ename 姓名,(salary+2000)*12+20000 年薪 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;

按照字符串排序,按照首个字符的编码排列,如果相同再比较后边的字符

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

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

  select * from emp order by salary desc,ename;

  练习:查询出所有的员工,女员工显示在前,性别相同按照年龄从大到小排列

  select * from emp order by sex,birthday;

 (7)条件查询

  示例:查询出编号为3的员工

  select * from emp where eid=3;

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

  select * from emp where ename='king';

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

  select * from emp where salary>5000;

比较运算符:>  <  >=  <=  =   !=(不等于)

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

  select * from emp where deptId!=10;

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

  select * from emp where deptId is null;

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

  select * from emp where deptId is not null;

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

  select * from emp where salary>5000 and sex=0;

  select * from emp where salary>5000 && sex=0;

  练习:查询出工资在5000~8000之间的员工有哪些

  select * from emp where salary>=5000 and salary<=8000;

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

  select * from emp where salary<5000 or salary>8000;

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

or(||)  或者,两个条件只需要满足一个

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

  select * from emp where birthday>='1993-1-1' and birthday<='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 and deptId!=30;

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

 (8)模糊条件查询

  用于搜索的时候

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

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

  练习:查询出姓名中倒数第2个字符是e的员工有哪些

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

  %  匹配任意个字符  >=0

  _   匹配任意1个字符  =1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值