5.7版本与8.0版本区别:中文字符5.0版本不可以添加(字符集为latin1),8.0可以成功添加(字符集为utf-8)。
5.7修改成功!
8.0版本如下所示:
单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(--后面必须包含一个空格。)
多行注释:/* 注释文字 */
#USE dbtest2;
SELECT * FROM student;
mysql> source d:\mysqldb.sql
SELECT 1; #没有任何子句
SELECT 9/2; #没有任何子句
SELECT 标识选择哪些列(字段1,字段2,...)
FROM 标识从哪个表中选择(字段所在表名)
SELECT *
FROM departments;
一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。
在生产环境下,不推荐你直接使用 SELECT * 进行查询。
SELECT department_id, location_id
FROM departments
重命名一个列
便于计算
紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
AS 可以省略
建议别名简短,见名知意
语法:AS=alias:别名
SELECT ID1 AS ID_1, ID2
FROM departments;
或
SELECT ID1 ID_1, ID2
FROM departments;
SELECT ID1 “ID_1”, ID2
FROM departments;
SELECT employee_id,last_name,salarY
FROM employees;
SELECT employee_id emp_id,last_name,department_id
FROM employees;
SELECT department_id
FROM employees;
SELECT salary DISTINCT dapartment_id
FROM employees;
执行报错
SELECT DISTINCT salary dapartment_id
FROM employees;
可执行,给薪水与部门两列都进行去重,但是查询结果往往无意义,不常使用。
# 7.空值——>不等同与0,‘’,‘null’
SELECT employee_id,salary "月工资" ,salary *(1+ commission_pct)*12 "年工资"
FROM employees;
# 查询commission_pct
SELECT commission_pct
FROM employees;
# 解决方案:如果空值,利用0替换
SELECT employee_id,salary "月工资" ,salary *(1+ IFNULL(commission_pct,0)*12 "年工资"
FROM employees;
SELECT * FROM ORDER;
报错:ORDER是关键字
SELECT * FROM `order`;
当出现字段名、表名与关键字、保留字重名时,需要加上着重号。
SELECT '尚硅谷',employee_id,last_name
FROM employees;
#DESC employees;
DESCRIBE employees;