1.库查询

  1. -- 单行注释
  2. /*
  3. 多行注释
  4. */
  5. # 单行注释
  6. #查询所有的库
  7. SHOW DATABASES;
  8. #选库
  9. USE myemployees;
  10. #查询所有的表
  11. SHOW TABLES;
  12. #显示表的结构
  13. DESC employees

USE SHOW DESC

2.数据查询

  1. /*
  2. 查询格式:
  3. select 字段名1,字段名2,...
  4. form 表名;
  5. select *
  6. form 表名;
  7. *表示所有字段
  8. */
  9. SELECT employee_id,first_name
  10. FROM employees;
  11. SELECT *
  12. FROM employees;
  13. SELECT 1+1; #理解成输出语句
  14. SELECT 1+1
  15. FROM DUAL; #dual:伪表(虚拟表)可以省略
  16. #任何数据类型和null做运算结果还为null
  17. SELECT 1+NULL;
  18. /*
  19. 注意:
  20. 1.大小写不敏感
  21. 2.sql可以写在一行或者多行
  22. 3.关键字不能被缩写也不能分行
  23. 4.各子句一定要分行写。
  24. 5.使用缩进提高语句的可读性(子查询)
  25. */

3.字段起名

  1. /*
  2. 给字段起别名,两种方式
  3. select 字段名1, as 别名1, 字段名2 别名2
  4. */
  5. SELECT salary AS new_salary;
  6. SELECT salary AS new_salary FROM employees;
  7. SELECT salary new_saraly FROM employees;
  8. SELECT salary new_saraly, first_name fname FROM employees;
  9. SELECT salary AS new_saraly, first_name AS fname FROM employees;
  10. SELECT salary,salary AS "new salary"
  11. FROM employees;
  12. #注意:如果别名中间有空格,那么别名必须使用双引号(单引号也可以)括起来

注意两种起名方式
和’’以及””的使用

4.过滤

  1. /*
  2. 过滤:
  3. select 字段名1,字段名2,...
  4. from 表名
  5. where 过滤条件
  6. */
  7. #查询部门号为60的所有员工
  8. SELECT first_name,department_id
  9. FROM employees
  10. WHERE department_id = 60; #注意:=不是==
  11. #查询除60号部门外所有员工
  12. SELECT first_name,department_id
  13. FROM employees
  14. #WHERE department_id != 60; #为null不会初选
  15. WHERE department_id <> 60; #<>sql专属不等于,建议使用
  16. #查询员工薪水在5000到10000之间的(包括边界)
  17. SELECT first_name,salary
  18. FROM employees
  19. #where salary >= 5000 && salary <= 10000;
  20. WHERE salary >=5000 AND salary <=10000; #sql专属,建议使用
  21. WHERE salary BETWEEN 5000 AND 10000; #与上面写法相同,更建议使用
  22. #查询部门为60,80的员工
  23. SELECT first_name,department_id
  24. FROM employees
  25. #where department_id = 60||department_id = 80;
  26. WHERE department_id = 60 OR department_id = 80; #建议使用
  27. WHERE department_id IN (60,80); #更好用
  28. #查询奖金率为null的员工有哪些
  29. SELECT first_name,commission_pct
  30. FROM employees
  31. WHERE commission_pct IS NULL; #判断null不能用=
  32. #查询奖金率不为null
  33. SELECT first_name,commission_pct
  34. FROM employees
  35. WHERE commission_pct IS NOT NULL;

注意AND、OR、NOT、IN的用法
还要IS NULL 和IS NOT NULL

4.2比较运算

image.png
image.png
image.png

5.模糊查询

  1. /*
  2. 模糊查询:like
  3. */
  4. #查询名字中带有a字母的员工
  5. SELECT first_name
  6. FROM employees
  7. WHERE first_name LIKE '%a%'; #%表示任意个数的任意字符
  8. #查询名字中第二个字符为e的员工
  9. SELECT first_name
  10. FROM employees
  11. WHERE first_name LIKE '_e%'; #_表示一个任意字符
  12. #查询名字中第二个字符为_的员工
  13. SELECT first_name
  14. FROM employees
  15. WHERE first_name LIKE '_\_%'; #\_表示内容为_
  16. #escape: 指定转移字符
  17. SELECT first_name
  18. FROM employees
  19. WHERE first_name LIKE '_$_%' ESCAPE '$'; #指定$为转义字符
  20. #查询名字中包含a又包含e的员工
  21. SELECT first_name
  22. FROM employees
  23. #where first_name like '%a%e%' or first_name like '%e%a%' ;
  24. WHERE first_name LIKE '%a%' AND first_name LIKE '%e%';

LIKE % _ \ ESCAPE

6.排序

  1. /*
  2. select ...
  3. from ...
  4. where ...
  5. order by 字段名1 asc/desc,字段名2 asc/desc,///
  6. 说明:
  7. 1.asc升序,desc降序
  8. 2.不指定排序方式的话默认方式为升序
  9. 3.排序时也能按照字段的别名排序
  10. */
  11. #查询所有员工薪水增加1000后,按照新的薪水进行升序排序
  12. SELECT salary,salary+1000 new_salary
  13. FROM employees
  14. ORDER BY new_salary;
  15. #不指定排序方式的话默认方式为升序
  16. #所有员工按照部门排序-升序,如果部门号相同再按薪水排序
  17. SELECT department_id,salary
  18. FROM employees
  19. WHERE department_id IS NOT NULL
  20. ORDER BY department_id ASC, salary DESC;

ORDER BY ASC DESC 默认升序