MySQL自增列及简单查询(练习)


AUTO_INCREMENT: 自动增长假如一个列声明了自增列无需手动赋值,直接赋值为NULL,会获取最大值,然后加1插入

  注意: 只适用于整数型的主键列上,允许手动赋值

简单查询

 (1)查询特定的列

  示例: 查询所有员工的姓名、工资

  SELECT ename,salary FROM emp;

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

  SELECT eid,ename,sex,birthday FROM emp;

 

 (2)查询所有的列

  SELECT * FROM emp;

  SELECT eid,ename,sex,birthday,salary,deptId FROM emp;

 

 (3)给列起别名

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

  SELECT ename AS 姓名,salary AS 工资 FROM emp;

  练习: 查询所有员工的编号,姓名,工资,生日,使用汉字别名

  SELECT eid AS 编号,ename AS 姓名,salary 工资,birthday 生日 FROM emp;

  练习: 查询所有员工的编号和姓名,使用1个字母作为别名

  SELECT eid a,ename b FROM emp;

 

 (4)显示不同的记录/合并相同的记录

  示例: 查询出员工都分布在哪些部门

  SELECT DISTINCT deptId FROM emp;

  练习: 查询出都有哪些性别的员工

  SELECT DISTINCT sex FROM emp;

 

 (5)查询时执行计算

  示例: 计算2+5*3+7/2-9

  SELECT 2+5*3+7/2-9;

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

  SELECT ename,salary*12 FROM emp;

  练习: 假设每个员工的工资增加500,年终奖为5000,查询出所有员工的姓名及其年薪,给列使用汉字别名

  SELECT ename 姓名, (salary+500)*12+5000 年薪 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 DESC;

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

  SELECT * FROM emp ORDER BY ename;

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

  SELECT * FROM emp ORDER BY salary DESC,ename;

  练习: 查询所有的员工,结果集按照性别排序,如果性别相同按照生日降序排列

  SELECT * FROM emp ORDER BY sex,birthday DESC;

ORDER BY 可以按照数值、字符串、日期时间来排序

默认是ASC升序排列

 

(7)条件查询

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

  SELECT * FROM emp WHERE eid=5;

  练习: 查询出姓名为king的员工的编号,姓名,工资

  SELECT eid,ename,salary FROM emp WHERE ename='king';

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

  SELECT * FROM emp WHERE deptId=20;

  练习: 查询出所有的女员工

  SELECT * FROM emp WHERE sex=0;

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

  SELECT * FROM emp WHERE salary>5000;

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

  练习: 查询出1991-1-1前出生的员工有哪些

  SELECT * FROM emp WHERE birthday<'1991-1-1';

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

  SELECT * FROM emp WHERE deptId!=20;

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

  SELECT * FROM emp WHERE deptId IS NULL;

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

  SELECT * FROM emp WHERE deptId IS NOT NULL;

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

  SELECT * FROM emp WHERE salary>=5000 AND salary<=7000;

  SELECT * FROM emp WHERE salary BETWEEN 5000 AND 7000;

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

  SELECT * FROM emp WHERE salary<5000 OR salary>7000;

  SELECT * FROM emp WHERE salary NOT BETWEEN 5000 AND 7000;

  练习: 查询出1990年之前和1993年之后出生的员工有哪些

  SELECT * FROM emp WHERE birthday<'1990-1-1' OR birthday>'1993-12-31';

  SELECT * FROM emp WHERE birthday NOT BETWEEN '1990-1-1' AND '1993-12-31';

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

  SELECT * FROM emp WHERE birthday>='1993-1-1' AND birthday<='1993-12-31';

  SELECT * FROM emp WHERE birthday BETWEEN '1993-1-1' AND '1993-12-31';

  练习: 查询出1994年后出生的男员工有哪些

  SELECT * FROM emp WHERE birthday>'1994-12-31' AND sex=1;

  练习: 查询出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 NOT IN(20,30);

 

 (8)模糊条件查询

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

  SELECT * FROM emp WHERE ename LIKE '%e%';

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

  SELECT * FROM emp WHERE ename LIKE '%e';

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

  SELECT * FROM emp WHERE ename LIKE '%e_';

%  可以匹配任意多个字符   >=0

_   可以匹配任意1个字符   =1

以上两个匹配符必须结合着LIKE使用

 

(9)分页查询

  查询的结果集中有太多的数据,一次显示不完,可以分页显示

  需要有两个已知条件: 当前的页码、每页的数据量

  SELECT * FROM emp LIMIT start,count;

  start: 从哪一条数据开始查询

 start = (当前的页码-1)*每页的数据量

  count: 每页的数据量  

假设每页显示5条数据

  1页: SELECT * FROM emp LIMIT 0,5;

  2页: SELECT * FROM emp LIMIT 5,5;

  3页: SELECT * FROM emp LIMIT 10,5;

假设每页显示7条数据

  1页: SELECT * FROM emp LIMIT 0,7;

  2页: SELECT * FROM emp LIMIT 7,7;

  3页: SELECT * FROM emp LIMIT 14,7;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM