MySQL学习 - 基本 SELECT 语句
学习需要的 SQL
文件:点击下载
1. SQL
分类
DDL
数据定义语言DML
数据操作语言DCL
数据控制语言
2. 基本规则 & 规范
- 每条命令使用
;
、\g
或者\G
来结束; Windows
系统不区分大小写,Linux
系统区分大小写;- 数据库名、表名、字段名等使用小写;
- 关键字、函数名等使用大写;
3. 注释
a. 单行注释(写法一)
使用 #
注释
#我是单行注释
b. 单行注释(写法二)
使用 --
注释,需注意的是,--
后面有一个空格
-- 我是单行注释
# 下面这个是错误的
--我是单行注释
c. 多行注释
使用 /*
开头,*/
结尾来实现多行注释,并且无法嵌套
/*
我是多行注释
我是多行注释
我是多行注释
*/
# 下面这个是错误的
/*
我是多行注释A
/*
我是多行注释b
*/
我是多行注释C
*/
4. 导入数据表
a. 使用 source
关键字导入
source 文件全路径名称
mysql> source d:\atguigudb.sql
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
......
b. 使用图形化工具导入
5. 基础 SELECT
语句
查询的结果叫做结果集(ResultSet)
SELECT 字段名1,字段名2... FROM 表名;
想要查询所有字段名,可以使用 *
表示所有字段名
SELECT * FROM 表名;
6. 列的别名
使用 as
关键字,是 alias
单词的缩写,同时关键词可以省略,在有些时候别名因为有空格或者关键字冲突等情况下,可以使用双引号或者反引号括起来。
SELECT CONCAT(first_name," ",last_name) as employee_name FROM employees;
SELECT CONCAT(first_name," ",last_name) as "name" FROM employees;
7. 去除重复行
在查询字段前使用 DISTINCT
关键字
SELECT DISTINCT department_id FROM employees;
但是这种方法并不是完美的,如果我们在加上其他字段,得到的就是不是我们预期的结果
SELECT DISTINCT department_id,salary FROM employees;
它给出的结果是两个字段全部不重复的结果
8. 空值参加运算
使用 IFNULL
函数
SELECT first_name,last_name,IFNULL(commission_pct,-1) FROM employees;
9. 着重号(反引号)
在一些字段名、表名和关键字或者函数产生冲突时使用
SELECT * FROM `order`;
order
是关键字
10. 查询常数
查询字段名时给所有符合条件的数据添加相同的值,字符串需要添加双引号,还可以和别名搭配起来
SELECT *,"哈哈哈",999,"100元" price FROM `order`;
11. 显示表结构
使用 DESCRIBE
或者 DESC
关键字
DESCRIBE `jobs`;
DESC `jobs`;
12. 过滤数据 WHERE
SELECT 字段1,字段2 FROM 表名 WHERE 过滤条件;
# 查询部门ID为department_id的所有员工
SELECT *
FROM `employees`
WHERE `department_id`=90;
# 查询lastname为King的员工
SELECT *
FROM `employees`
WHERE `last_name`="King";
# 如果查询条件 last_name="king" 查询结果和上面一样,这是MySQL宽松的SQL规范造成的。
13. 练习
a. 查询员工12个月的工资总和,并起别名为ANNUAL SALARY
SELECT `employee_id`,`first_name`,`last_name`,
`salary`*12+IFNULL(`commission_pct`*salary,0)
as "ANNUAL SALARY"
FROM `employees`;
b. 查询employees表中去除重复的job_id以后的数据
SELECT DISTINCT `job_id` FROM `employees`;
c. 查询工资大于12000的员工姓名和工资
SELECT `first_name`,`last_name`,`salary`
FROM `employees`
WHERE `salary`>12000;
d. 查询员工号为176的员工的姓名和部门号
SELECT `employee_id`,`first_name`,`last_name`,`department_id`
FROM `employees`
WHERE `employee_id`=176;
e. 显示表 departments 的结构,并查询其中的全部数据
DESCRIBE `departments`;
DESC `departments`;
SELECT * FROM `departments`;
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
以下不是数据库的优点的是()。
A 数据可以永久保存且数据安全性高
B 便于数据管理、智能化数据分析
C 数据库移植方便
D 查询方便效率高
感觉都对
蒙一个 B
C ,因为数据库移植很麻烦,因为要改映射文件SqlServerDriver,还有mapping 然后还有个人数据库书写习惯这些移植起来问题都很多
学到了 ₍˄·͈༝·͈˄*₎◞ ̑̑
当然这里数据库也包含了nosql 很坑的题目