第一章:基础查询
演示数据库
一、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;