1.库查询
-- 单行注释
/*
多行注释
*/
# 单行注释
#查询所有的库
SHOW DATABASES;
#选库
USE myemployees;
#查询所有的表
SHOW TABLES;
#显示表的结构
DESC employees
2.数据查询
/*
查询格式:
select 字段名1,字段名2,...
form 表名;
select *
form 表名;
*表示所有字段
*/
SELECT employee_id,first_name
FROM employees;
SELECT *
FROM employees;
SELECT 1+1; #理解成输出语句
SELECT 1+1
FROM DUAL; #dual:伪表(虚拟表)可以省略
#任何数据类型和null做运算结果还为null
SELECT 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_id
FROM employees
WHERE department_id = 60; #注意:=不是==
#查询除60号部门外所有员工
SELECT first_name,department_id
FROM employees
#WHERE department_id != 60; #为null不会初选
WHERE department_id <> 60; #<>sql专属不等于,建议使用
#查询员工薪水在5000到10000之间的(包括边界)
SELECT first_name,salary
FROM 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_id
FROM 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_pct
FROM employees
WHERE commission_pct IS NULL; #判断null不能用=
#查询奖金率不为null
SELECT first_name,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
注意AND、OR、NOT、IN的用法
还要IS NULL 和IS NOT NULL
4.2比较运算
5.模糊查询
/*
模糊查询:like
*/
#查询名字中带有a字母的员工
SELECT first_name
FROM employees
WHERE first_name LIKE '%a%'; #%表示任意个数的任意字符
#查询名字中第二个字符为e的员工
SELECT first_name
FROM employees
WHERE first_name LIKE '_e%'; #_表示一个任意字符
#查询名字中第二个字符为_的员工
SELECT first_name
FROM employees
WHERE first_name LIKE '_\_%'; #\_表示内容为_
#escape: 指定转移字符
SELECT first_name
FROM employees
WHERE first_name LIKE '_$_%' ESCAPE '$'; #指定$为转义字符
#查询名字中包含a又包含e的员工
SELECT first_name
FROM 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_salary
FROM employees
ORDER BY new_salary;
#不指定排序方式的话默认方式为升序
#所有员工按照部门排序-升序,如果部门号相同再按薪水排序
SELECT department_id,salary
FROM employees
WHERE department_id IS NOT NULL
ORDER BY department_id ASC, salary DESC;
ORDER BY ASC DESC 默认升序