SELECT语句
前言:
在我们MySQL中,数据的存储是类似于EXCEL的,是以表格的形式存在的,所以都是一行一行的数据或者是一个一个的数据。
我们可以非常形象的理解一下,每一**列(column)都是一个对象的属性,每一行(row)**都是一个对象的实例,我们要查询的话通过SELECT查到我们想要知道的数据,通过行我们可以知道想要查询的行的数据。
1.0 SELECT
#没有任何子句
SELECT 1;
#没有任何子句
SELECT 9/2;
1.1 SELECT…FROM
- 语法:
SELECT #标识选择哪些列
FROM #标识从哪个表中选择
- 选择全部列:
SELECT * # * 标识选择所有列
FROM departments; # 选择departments表
一般情况下,除非需要使用表中的所有字段数据,最好不要使用通配符 ’ * '。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。
在生产环境下, 不推荐你直接使用 SELECT * 进行查询。
- 选择特定的列(想要查询的数据类型):
SELECT department_id, location_id
FROM departments;
MySQL中的SQL语句是不区分大小写的,因此SELECT和select的作用是相同的,但是,许多开发人员习惯将关键字大写,数据列和表名小写,读者也应该养成一个良好的编程习惯,这样子写出来的代码更容易阅读和维护。
(但是我就因为命令行,也因为
Windows不区分大小写,所以养成了小写的坏习惯)。
1.2 列的别名
- 重命名一个列
- 便于计算
- 紧跟列明,也可以在列名和列名之间查润关键字 AS, 别名使用双引号, 以便在别名中包含空格或特殊的字符并区分大小写。
- AS可以省略。
- 建议别名简短,见名知意。
- for example
SELECT last_name AS name, commission_pct comm
FROM employees;
1.3 去除重复行
默认情况下,查询会返回满足条件的所有行,包括重复行 (这几行内容都是一样的)。
在SELECT语句中使用关键字DISTINCT去除重复行
SELECT DISTINCT department_id
FROM employees;
这个DISTINCT关键字在SELECT中一调用,就可以去除查询结果的重复元素了,下面我们详细说一下DISTINCT的用法和注意事项。
#去除单列中的重复元素。
SELECT DISTINCT department_id
FROM employees;
#不能用这种写法,去除多列中单列的重复元素
SELECT department_id, DISTINCT last_name
FROM employees;
#不可以把DISTINCT放中间,要放到所查字段的开头。
#去除多列重复元素
SELECT DISTINCT department_id, last_name
FROM employees;
#这种去重是按所查字段都相同才去重,只要有一个字段不相同,就不会去重。
1.4 空值参与运算
- 所有运算符或列值遇到null值,运算的结果都为null
SELECT employee_id, salary, commission_pct, 12 * salary * (1 + commission_pct) as "annual_sal"
FROM employees;
这里你一定要注意,在MySQL里面,空值不等于空字符串。一个空字符串的长度是0, 而一个空值的长度是空。而且,在MySQL里面,空值是占用空间的。
1.5 着重号
这个符号之前也提到过,这个是如果字段名,变量名之类的名字和关键字重复了,但是你有不想换名字,就可以给名字用` `引起来,这样子就相当于告诉MySQL,我们这个不是关键字。
#错误的
SELECT *
FROM ORDER;
#正确的
SELECT *
FROM `ORDER`;
- 结论
我们需要保证表中的字段,表名等没有和MySQL自带的名字起冲突,如果字体颜色变了,那就说明冲突了,就可以用着重号引起来。
2. 显示表结构
使用DESCRIBE或DESC命令,表示表结构
DESCRIBE employees;
或
DESC employees;
通过显示表结构的语句,我们可以得到一个表格,我们来大概解释一下
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
字段名称 | 字段类型 | 是否可以存储Null值 | 表示是否已经编制索引,PRI表示该列是表主键的一部分,UNI表示被UNIQUE修饰,只能出现一次,MUL表示某个给定值可出现多次 | 表示该列是否有默认值,如果有的话,值是多少 | 表示可以获取的与给定列有关的信息 |
3.WHERE过滤器
这个相当于筛选我们想要查找的数据,写在FROM下方
SELECT *
FROM employees
WHERE id = 1002;
4.结语
这就是我的理解了,虽然名字叫SELECT语句,但是没有涉及到SELECT的难点,先浅浅说一下SELECT的用法,重点是其他知识点的铺垫,理解了其他的知识点,对之后的学习有不小帮助。