「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」。
前言
上篇我们又学习了一部分SELECT语句,有兴趣的小伙伴可以阅读(MySQL学习-SELECT语句(二) - 掘金 (juejin.cn)。
下面继续学习MySQL中的SELECT语句。
显示表结构
使用DESCRIBE或DESC来显示表结构。
- 语法
DESCRIBE employees;
或者
DESC employees; 显示表中字段的详细信息
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| employee_id | int(6) | NO | PRI | 0 | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(25) | NO | | NULL | |
| email | varchar(25) | NO | UNI | NULL | |
| phone_number | varchar(20) | YES | | NULL | |
| hire_date | date | NO | | NULL | |
| job_id | varchar(10) | NO | MUL | NULL | |
| salary | double(8,2) | YES | | NULL | |
| commission_pct | double(2,2) | YES | | NULL | |
| manager_id | int(6) | YES | MUL | NULL | |
| department_id | int(4) | YES | MUL | NULL | |
+----------------+-------------+------+-----+---------+-------+
各个字段的含义分别解释如下:
Field:表示字段名称。
Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
Null:表示该列是否可以存储NULL值。
Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;
UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
Default:表示该列是否有默认值,如果有,那么值是多少。
Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。
过滤数据
- 语法
SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件
WHERE需要声明在FROM结构的后面
- 举例1
# 查询1号部门员工的信息
SELECT *
FROM employees
# 过滤条件
WHERE department_id = 1; 这样可以过滤出1号部门员工的信息
- 举例2
# 查询last_name为'King'的员工信息
SELECT *
FROM employees
# 过滤条件
WHERE last_name = 'King'; 这样可以过滤出last_name为'King'的员工的信息
这里需要注意查询字段的大小写,在MySQL中,比较宽泛,大小写不敏感。但是在其他数据库中比较敏感,所以我们在写SQL语句时,还是需要养成大小写敏感的习惯。
练习题
- 查询员工12个月的工资总和,并起名为ANNUAL SALARY
SELECT employee_id, last_name, salary * 12 AS "ANNUAL SALARY"
FROM employees;
- 查询employees表中去除重复的job_id以后的数据
SELECT DISTINCT job_id
FROM employees;
- 查询工资大于12000的员工的姓名和工资
SELECT last_name, salary
FROM employees
WHERE salary > 12000;
- 查询员工号为176的员工的姓名和部门号
SELECT last_name, department_id
FROM employees
WHERE employee_id = 176;
- 显示表departments的结构,并查询其中的全部数据
DESCRIBE department;
SELECT *
FROM department;