一.准备工作
打开Navicat,新建一个表,表的字段如下,为后面的查询作准备,建完表后,自行给其中添加数据。
二.查询(select)的语法知识
注意:sql语言不区分大小写,所有关键字都无须区分大小写。“`”符号无意义可有可无
2.1查询时支持给列取别名
查询时,可以给列(列即每个字段,如上图中的employee_id,first_name…等等)取别名。
语法格式为:select 列1 别名1,列2 别名2,列3 别名3… from 表名
例子:在Navicat中新建一个查询,在里面写入以下代码:
SELECT employee_id id,first_name 姓名,salary 薪资
FROM `employees`;
为了方便检查错误,一般都分行书写。
注意:
经常会有报错,可能是用了中文符号,可能是语句结尾没有结尾符“;”,可能是Navicat没有选中你要查询的数据库,如下图:
2.2查询时支持数字运算
SELECT employee_id id,first_name 姓名,salary * 12 薪资
FROM `employees`;
2.3查询时支持提供条件
语法:
select 列1,列2,… from 表名 where 条件
如果有2个条件则根据“或”和“且”分为以下两种:
select 列1,列2,… from 表名 where 条件1 or 条件2
select 列1,列2,… from 表名 where 条件1 and 条件2
例子:
查询工资高于6000且部门为110的 员工姓名 薪资
SELECT first_name 姓名,salary 薪资
FROM `employees`
WHERE salary > 6000 and department_id = 110;
2.3查询时的空值判断
语法:
…is not …
SELECT first_name 姓名,salary 薪资
FROM employees
WHERE commission_pct is not NULL;
2.3查询时包含边界
语法:
…between…and…
SELECT first_name, salary
FROM employees
WHERE salary BETWEEN 6000 and 9000;
相当于
SELECT first_name, salary
FROM employees
WHERE salary >= 6000 and salary <= 9000;
2.4 in(set) 查询字段在set中就符合条件
语法:
select 列1,列2… from 表名 where 列名 in(…);
SELECT first_name, salary
FROM employees
WHERE department_id in (90, 110);
2.5 模糊查询
注意:sql中使用引号表示字符
2.5.1通配符%
通配符%代表任意0~n个任意的字符
例子: 查询姓名中包含a字符的员工信息
SELECT first_name, salary
FROM employees
WHERE last_name LIKE '%a%';
2.5.2通配符_
通配符_代表一个任意的字符
例子: 查询姓名中第二个字母是a的员工信息
SELECT first_name, salary
FROM employees
WHERE last_name LIKE '_a%';
2.5.3转义字符\
查询时,如果字符串出现包含通配符,需要转义
例子: 查询姓名中第二个字母是_的员工信息
SELECT first_name, salary
FROM employees
WHERE last_name LIKE '_\_%';
2.5.4指定转义字符escape
例子: 查询姓名中第二个字母是_的员工信息
SELECT first_name, salary
FROM employees
WHERE last_name LIKE '_A_%' escape 'A';
2.6 将查询到的结果排序
升序排序: 默认为升序排序
SELECT first_name, salary
FROM employees
WHERE department_id = 90
ORDER BY salary ASC;
降序排序:
SELECT first_name, salary
FROM employees
WHERE department_id = 90
ORDER BY salary DESC;