1.库查询
-- 单行注释/*多行注释*/# 单行注释#查询所有的库SHOW DATABASES;#选库USE myemployees;#查询所有的表SHOW TABLES;#显示表的结构DESC employees
2.数据查询
/*查询格式:select 字段名1,字段名2,...form 表名;select *form 表名;*表示所有字段*/SELECT employee_id,first_nameFROM employees;SELECT *FROM employees;SELECT 1+1; #理解成输出语句SELECT 1+1FROM DUAL; #dual:伪表(虚拟表)可以省略#任何数据类型和null做运算结果还为nullSELECT 1+NULL;/*注意:1.大小写不敏感2.sql可以写在一行或者多行3.关键字不能被缩写也不能分行4.各子句一定要分行写。5.使用缩进提高语句的可读性(子查询)*/
3.字段起名
/*给字段起别名,两种方式select 字段名1, as 别名1, 字段名2 别名2*/SELECT salary AS new_salary;SELECT salary AS new_salary FROM employees;SELECT salary new_saraly FROM employees;SELECT salary new_saraly, first_name fname FROM employees;SELECT salary AS new_saraly, first_name AS fname FROM employees;SELECT salary,salary AS "new salary"FROM employees;#注意:如果别名中间有空格,那么别名必须使用双引号(单引号也可以)括起来
4.过滤
/*过滤:select 字段名1,字段名2,...from 表名where 过滤条件*/#查询部门号为60的所有员工SELECT first_name,department_idFROM employeesWHERE department_id = 60; #注意:=不是==#查询除60号部门外所有员工SELECT first_name,department_idFROM employees#WHERE department_id != 60; #为null不会初选WHERE department_id <> 60; #<>sql专属不等于,建议使用#查询员工薪水在5000到10000之间的(包括边界)SELECT first_name,salaryFROM employees#where salary >= 5000 && salary <= 10000;WHERE salary >=5000 AND salary <=10000; #sql专属,建议使用WHERE salary BETWEEN 5000 AND 10000; #与上面写法相同,更建议使用#查询部门为60,80的员工SELECT first_name,department_idFROM employees#where department_id = 60||department_id = 80;WHERE department_id = 60 OR department_id = 80; #建议使用WHERE department_id IN (60,80); #更好用#查询奖金率为null的员工有哪些SELECT first_name,commission_pctFROM employeesWHERE commission_pct IS NULL; #判断null不能用=#查询奖金率不为nullSELECT first_name,commission_pctFROM employeesWHERE commission_pct IS NOT NULL;
注意AND、OR、NOT、IN的用法
还要IS NULL 和IS NOT NULL
4.2比较运算



5.模糊查询
/*模糊查询:like*/#查询名字中带有a字母的员工SELECT first_nameFROM employeesWHERE first_name LIKE '%a%'; #%表示任意个数的任意字符#查询名字中第二个字符为e的员工SELECT first_nameFROM employeesWHERE first_name LIKE '_e%'; #_表示一个任意字符#查询名字中第二个字符为_的员工SELECT first_nameFROM employeesWHERE first_name LIKE '_\_%'; #\_表示内容为_#escape: 指定转移字符SELECT first_nameFROM employeesWHERE first_name LIKE '_$_%' ESCAPE '$'; #指定$为转义字符#查询名字中包含a又包含e的员工SELECT first_nameFROM employees#where first_name like '%a%e%' or first_name like '%e%a%' ;WHERE first_name LIKE '%a%' AND first_name LIKE '%e%';
6.排序
/*select ...from ...where ...order by 字段名1 asc/desc,字段名2 asc/desc,///说明:1.asc升序,desc降序2.不指定排序方式的话默认方式为升序3.排序时也能按照字段的别名排序*/#查询所有员工薪水增加1000后,按照新的薪水进行升序排序SELECT salary,salary+1000 new_salaryFROM employeesORDER BY new_salary;#不指定排序方式的话默认方式为升序#所有员工按照部门排序-升序,如果部门号相同再按薪水排序SELECT department_id,salaryFROM employeesWHERE department_id IS NOT NULLORDER BY department_id ASC, salary DESC;
ORDER BY ASC DESC 默认升序
