资料
根据【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!】 整理
资料链接:
百度网盘:
链接:https://pan.baidu.com/s/1KboU_3EZJxrezMWZ2klP6g
提取码:1234
阿里云盘
1. 查询常量计算
语法:
SELECT 常量运算表达式1, 常量运算表达式2, ... [ FROM dual ]
SELECT 1+1, 3*2;
查询常量不需要从表中进行查找,可以使用 dual (伪表)补全查询语句的结构。
SELECT 1+1, 3*2 FROM dual;
2. 查询语句的基本语法
查询语句的基本语法:
SELECT 字段1, 字段2, ... FROM 表名;
2.1 查询全部字段
语法:
SELECT * FROM 表名;
*
表示表中的所有字段。
查询employees 表中的所有字段:
SELECT * FROM employees;
一般情况下,除非需要使用表中所有的字段数据,否则最好不要使用通配符 *
。
使用通配符虽然可以节省 输入查询语句 的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。
通配符的优势是,当不知道所需要的列的名称时,可以通过通配符获取它们。
在生产环境下,不推荐直接使用
SELECT *
进行查询。
2.2 查询指定字段
语法:
SELECT 字段1, 字段2, ... FROM 表名;
查询表中指定字段,需要保证字段在表中要存在,同时要保证字段名拼写要完全正确。
查询employees 表中 employee_id、last_name、salary字段:
SELECT employee_id, last_name, salary FROM employees;
3. 列的别名
查询时,需要对查询的字段进行重命名(取别名),可以使用关键字 AS
(alias – 别名)。
查询employees 表中 employee_id、last_name、salary字段:
SELECT employee_id AS id, last_name AS lname, salary AS sal FROM employees;
AS
关键字可以省略
SELECT employee_id id, last_name lname, salary sal FROM employees;
字段的别名可以使用一对 双引号 引起来,不要使用单引号(由于MySQL语法不严谨,在 MySQL 中不会报错,但在有些数据库中会报错)。
补充:字符串使用单引号引起来,不要使用双引号,会报错。
SELECT employee_id AS "id", last_name AS "lname", salary AS "sal" FROM employees;
三个语句的查询结果相同:
字段的别名使用双引号引起来,以便在别名中包含空格或特殊的字符并区分大小写,别名中有空格一定要用双引号包裹。
SELECT employee_id emp_id, last_name AS lname, department_id "部门id", salary * 12 AS "annual sal" FROM employees;
4. 去除重复行
默认情况下,查询会返回全部行,包括重复行。
查询员工表中一共有哪些部门id:
没有去重的情况:
SELECT department_id FROM employees;
去重的情况(使用关键字 DISTINCT
):
SELECT DISTINCT department_id FROM employees;
SELECT salary,DISTINCT department_id FROM employees;
salary 没有进行去重会全部显示, DISTINCT department_id 会去重,两个发生了冲突,会报错。
[42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT department_id FROM employees' at line 1
对 department_id, salary 两者的查询结果进行重复去重:
SELECT DISTINCT department_id, salary FROM employees;
只有当 department_id, salary 两个字段的值都一样的记录才会进行去重。
DISTINCT 其实是对后面所有列名的组合进行去重。
最后的结果是 74 条,因为这 74 个结果中部门 id 与 salary 组合后没有重复。如果想要看都有哪些不同的部门(department_id),只需要写
DISTINCT department_id
即可,后面不需要再加其他的列名。