###
转载链接
SQL 能做什么?
- 面向数据库执行查询
- 从数据库取回数据
- 在数据库中插入新的记录
- 更新数据库数据
- 删除记录
- 创建新的数据库
- 创建新表
- 创建储存过程
- 创建视图
- 设置表、储存过程和视图的权限
表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
语句: (对大小写不敏感)
SELECT LastName FROM Persons
LastName |
---|
Adams |
Bush |
Carter |
1、SQL MDL (数据操作语言) 和 DDL(数据定义语言)
-
查询和更新指令 构成了SQL
- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 从数据库表中删除数据
- INSERT INTO - 向数据库表中插入数据
-
DDL 创建删除表格定义索引规定链接、施加表间约束
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
1、SQL SELECT 语法
SELECT 列名称 FROM 表名称 和 SELECT * FROM 表名称 这* 号是选取所有列的快捷方式
也可以
SELECT LastName,FirstName FROM Persons SELECT * FROM Persons
LastName | FirstName |
---|---|
Adams | John |
Bush | George |
Carter | Thomas |
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
*在结果集(result-set)中导航(略)
由 SQL 查询程序获得的结果被存放在一个结果集中。大多数数据库软件系统都允许使用编程函数在结果集中进行导航
1 、SQL SELECT DISTINCT 语句 返回唯一不同的值
SELECT DISTINCT 列名称 FROM 表名称
没有使用distinct
Company |
---|
IBM |
W3School |
Apple |
W3School |
使用该语法后之后
Company |
---|
IBM |
W3School |
Apple |
2、 SQL WHERE 子句(如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。)
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
操作符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
**注释:**在某些版本的 SQL 中,操作符 <> 可以写为 !=。
单引号和不使用单引号的对应值:
文本值:
这是正确的:
SELECT * FROM Persons WHERE FirstName='Bush'
这是错误的:
SELECT * FROM Persons WHERE FirstName=Bush
数值:
这是正确的:
SELECT * FROM Persons WHERE Year>1965
这是错误的:
SELECT * FROM Persons WHERE Year>'1965'
3、SQL ORDER BY 子句
ORDER BY 语句用于对结果集进行排序。
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
DESC:降序排列关键字
ASC:升序排列,默认是升序排序的
3、SQL INSERT INTO 语句
INSERT INTO 语句用于向表格中插入新的行。
语法
INSERT INTO 表名称 VALUES (值1, 值2,....)
我们也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
例如:
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
从下边这个表,添加一个人的新信息
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
获得:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwumen 10 | Beijing |
指定的列中添加数据
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')
结果
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwumen 10 | Beijing |
Wilson | Champs-Elysees |
SQL DELETE 语句
DELETE 语句用于删除表中的行
语法
DELETE FROM 表名称 WHERE 列名称 = 值
根据 列值 删除 整一行
Person:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwumen 10 | Beijing |
Wilson | Fred | Zhongshan 23 | Nanjing |
删除某行
“Fred Wilson” 会被删除:
DELETE FROM Person WHERE LastName = 'Wilson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwumen 10 | Beijing |
删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name
或者:
DELETE * FROM table_name
SQL AND & OR 运算符
AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。
原始的表 (用在例子中的):
LastName | FirstName | Address | City |
---|---|---|---|
Adams | John | Oxford Street | London |
Bush | George | Fifth Avenue | New York |
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
AND 运算符实例
使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人:
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
当然也可以结合起来
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
SQL Update语句
Update 语句用于修改表中的数据。
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
更新某一行中的一个列
我们为 lastname 是 “Wilson” 的人添加 firstname:
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwumen 10 | Beijing |
Wilson | Fred | Champs-Elysees |
更新某一行中的若干列
我们会修改地址(address),并添加城市名称(city):
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwumen 10 | Beijing |
Wilson | Fred | Zhongshan 23 | Nanjing |