第二章 select查询语句

发布于:2025-04-19 ⋅ 阅读:(22) ⋅ 点赞:(0)

第一章:基础查询

演示数据库

在这里插入图片描述

一、SELECT 语句

作用

SELECT 语句用于从数据库中选取数据。
结果被存储在一个结果表中,称为结果集。

语法

SELECT column1, column2, …
FROM table_name;

SELECT * FROM table_name;

参数说明:

  • column1, column2, …:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
  • table_name:要查询的表名称。
  • *: 通配符,表示选择表中的所有列。

二、SELECT DISTINCT 语句

作用

SELECT DISTINCT 语句用于返回唯一不同的值(去重)

语法

SELECT DISTINCT column1, column2, …
FROM table_name;

三、WHERE 语句

作用

WHERE 子句用于提取那些满足指定条件的记录。也就是筛选行。
记录=元组=行

语法

SELECT column1, column2, …
FROM table_name
WHERE condition;

(一)WHERE子句中的运算符

在这里插入图片描述

1.比较运算符

WHERE 属性列 比较运算符 值
比较运算符包涵:= > < >= ,<=, !=,<> 表示(不等于)

Select * from emp where ename='SMITH';
/*从emp表中查询ename为SMITH的所有行

2. 逻辑运算

And(与): 同时满足两个条件的值。
查询 EMP 表中 SAL 列中大于 2000 小于 3000 的值。

Select * from emp where SAL > 2000 AND SAL < 3000;

Or(或): 满足其中一个条件的值
查询 emp 表中 SAL 大于 2000 或 COMM 大于500的值。

Select * from emp where sal > 2000 or comm > 500;

Not(非): 满足不包含该条件的值。
查询EMP表中 sal 小于等于 1500 的值。

select * from emp where not sal > 1500;

逻辑运算的优先级:
() not and or

3. 特殊条件

空值判断: is null

查询 emp 表中 comm 列中的空值。

select * from emp where comm is null;

between and (在...之间的值)

查询 emp 表中 SAL 列中大于 1500 的小于 3000 的值。

Select * from emp where sal between 1500 and 3000;

注意:大于等于 1500 且小于等于 3000, 1500 为下限,3000 为上限,下限在前,上限在后,查询的范围包涵有上下限的值。

In

SQL IN 语法

SELECT column1, column2, ...
FROM table_name
WHERE column IN (value1, value2, ...);

查询 EMP 表 SAL 列中等于 5000,3000,1500 的值。

Select * from emp where sal in (5000,3000,1500);

like模糊查询

SQL LIKE 语法

SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;

查询 EMP 表中 Ename 列中有 M 的值,M 为要查询内容中的模糊信息。

Select * from emp where ename like 'M%';

4. AND & OR 运算符

AND表示第一个条件和第二个条件都成立。
从 “Websites” 表中选取国家为 “CN” 且alexa排名大于 “50” 的所有网站

select * from Websites where country = 'CN'and  alexa = 50;

OR表示第一个条件和第二个条件中只要有一个成立。
从 “Websites” 表中选取国家为 “USA” 或者 “CN” 的所有客户

select * from Websites where country = 'CN' or country = 'USA';

(二) 模糊查询的匹配模式

%

表示任意0个或多个字符,可匹配任意类型和长度的字符。
(1) LIKE ‘Mc%’ 搜索以字母 Mc 开头的所有字符串(如 McBadden)。
(2) LIKE ‘%inger’ 搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
(3) LIKE ‘%en%’ 搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green)。

_(下划线)

表示 任何单个字符
LIKE ‘_heryl’ 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。

[ ]

指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符:
(1) LIKE ‘[CK]ars[eo]n’ 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson )。
(2) LIKE ‘[M-Z]inger’ 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。

[^]

所匹配对象为指定字符以外的任一个字符
LIKE ‘M[^c]%’ 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。

四、ORDER BY 语句

ORDER BY 关键字用于对结果集进行排序。
SQL ORDER BY 语法

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

默认升序,需要降序需要指定DESC。

从 “Websites” 表中选取所有网站,并按照 “alexa” 列排序

select * from Websites order by alexa;

从 “Websites” 表中选取所有网站,并按照 “alexa” 列降序排序

select * from Websites order by alexa desc;

以逆字母顺序显示公司名称,并以数字顺序显示顺序号

SELECT Company, OrderNumber FROM Orders 
ORDER BY Company DESC, OrderNumber ASC

五、INSERT INTO 语句

INSERT INTO 语句用于向表中插入新记录。
SQL INSERT INTO 语法
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

向 “Websites” 表中插入一个新行。

insert into Wedsites(name,url,alexa,country)
values('百度','https://www.baidu.com/','4','CN');

六、 UPDATE 语句

UPDATE 语句用于更新表中的记录。
SQL UPDATE 语法

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

把 “菜鸟教程” 的 alexa 排名更新为 5000,country 改为 USA。

update Websites
set alexa = '5000',country = 'USA'
where name = '菜鸟教程';

如果不写WHERE会将 Websites 表中所有数据的 alexa 改为 5000,country 改为 USA。

七、DELETE 语句

DELETE 语句用于删除表中的记录。
SQL DELETE 语法

DELETE FROM table_name
WHERE condition;

从 “Websites” 表中删除网站名为 “Facebook” 且国家为 USA 的网站。

delete from Websites
where name = 'Facebook' and country = 'USA'

delete可以删除所有行,但是表结构、属性、索引将保持不变,且不可撤销。

八、SELECT TOP, LIMIT, ROWNUM 语句

用于在 SQL 中限制返回的结果集中的行数, 用于只需要查询前几行数据的情况。
在 MySQL 中使用 LIMIT 关键字。
SQL Server语法

SELECT TOP number|percent column1, column2, ...
FROM table_name;

MYSQL语法

SELECT column1, column2, ...
FROM table_name
LIMIT number;

从 “Websites” 表中选取头两条记录

select * from Websites limit 2;

从 websites 表中选取前面百分之 50 的记录

select top 50 percent * from Websites;

网站公告

今日签到

点亮在社区的每一天
去签到