MySQL基础学习笔记(2)-Select
程序员文章站
2022-03-27 10:05:46
...
1、SELECT基本语法
插叙语句的基本格式
SELECT 要查询的列名 FROM 表名字 WHERE 限制条件;
如果要查询表中所有内容,可以使用一个* 号表示,如果查询表中指定列,则
如下:
2、WHERE子句
操作符 | 描述 |
---|---|
> | 大于 |
< | 小于 |
<> | 不等于 |
= | 等于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个访问内 |
LIKE | 搜索某种模式 |
2.1、数学符号条件
一般,我们查询数据,都会有限制条件,使得所查询结果更精确,可以通过WHERE来限制条件,此处使用数学符号(=,<,>,>=,<=)来进行结果筛选,语法:
SELECT 要查询的列名 FROM 表名字 WHERE 列 运算符 值;
表employee中的数据如下:
id | name | age | salary | phone | in_dpt |
---|---|---|---|---|---|
1 | Tom | 26 | 2500 | 119119 | dpt4 |
2 | Jack | 24 | 2500 | 120120 | dpt2 |
3 | Rose | 22 | 2800 | 114114 | dpt3 |
4 | Jim | 35 | 3000 | 100861 | dpt1 |
5 | Mary | 21 | 3000 | 100101 | dpt2 |
6 | Alex | 26 | 3000 | 123456 | dpt1 |
7 | Ken | 27 | 3500 | 654321 | dpt1 |
8 | Rick | 24 | 3500 | 987654 | dpt3 |
9 | Joe | 31 | 3600 | 110129 | dpt2 |
10 | Mike | 23 | 3400 | 110110 | dpt4 |
11 | Jobs | NULL | 3600 | 19283 | dpt2 |
12 | Tony | NULL | 3400 | 102938 | dpt3 |
#筛选工资小于3000的员工信息
SELECT name,salary FROM employee WHERE salary<3000;
2.2、AND 与OR
当多个限制条件时,可以根据条件之间的逻辑关系,使用AND(且)和OR(或)来进行连接,然后筛选3000<salary≤3500
如果我们的条件是3000和3500均包含在结果中,则也可以使用BETWEEN进行查询WHERE salary BETWEEN 3000 AND 3500,其结果与 WHERE salary>=3000 AND salary<=3500是一样的
2.3、IN和NOT IN
还可以通过关键词 IN 和 NOT IN 筛选 “在” 或 “不在” 某个访问
比如说筛选员工某个部门下的员工信息
2.4、通配符
SQL 通配符必须与 LIKE 运算符一起使用
LIKE通配符 | 描述 |
---|---|
_ | 替代一个未指定的字符 |
% | 替代不定个未指定字符 |
还可以使用正则表达式进行匹配查询
REGEXP通配符 | 描述 |
---|---|
. | 匹配任一单个字符 |
? | 匹配前面的子表达式0次或1次 |
+ | 匹配前面的子表达式1次或多次 |
* | 匹配前面的子表达式0次或多次;[0-9]*匹配任何数量的数字 |
^ | 表示匹配位置开始 |
$ | 表示匹配位置结束 |
[charlist] | [],表示一个集合 ,字符列中的任何单一字符;如:[AB]表示匹配A或B,[A-D]表示匹配A、B、C、D中的任意一个; |
[^charlist] 或者 [!charlist] | 不在字符列中的任何单一字符 |
{} | 表重复的次数,如: 8{5},表示匹配5个8,[0-9]{5,11},表示匹配5到11个数字 |
…… |
# 使用通配符“_”
SELECT name age phone FROM employee WHERE name LIKE 'J___';
结果如下:
name | age | phone |
---|---|---|
Jack | 24 | 2500 |
Jobs | NULL | 3600 |
可以看出来,该结果每一个“_”对应一个字符,
# 使用通配符“%”
SELECT name age phone FROM employee WHERE name LIKE 'J%';
结果如下:
name | age | phone |
---|---|---|
Jack | 24 | 120120 |
Jim | 35 | 100861 |
Joe | 31 | 110129 |
Jobs | NULL | 19283 |
# 使用通配符“[charlist] ”
SELECT name age phone FROM employee WHERE name REGEXT '^[JR]+';
name | age | phone |
---|---|---|
Jack | 24 | 120120 |
Rose | 22 | 114114 |
Jim | 35 | 100861 |
Rick | 24 | 987654 |
Joe | 31 | 110129 |
Jobs | NULL | 19283 |
6、排序
关键词:ORDER BY
顺序:ASC 升序,DESC 降序
如
#按工资升序排列
SELECT name,age,salary FROM employee ORDER BY salary ASC;
name | age | phone |
---|---|---|
Tom | 26 | 2500 |
Jack | 24 | 2500 |
Rose | 22 | 2800 |
Jim | 35 | 3000 |
Mary | 21 | 3000 |
Alex | 26 | 3000 |
Mike | 23 | 3400 |
Tony | NULL | 3400 |
Rick | 24 | 3500 |
Ken | 27 | 3500 |
Joe | 31 | 3600 |
Jobs | NULL | 3600 |