DML(数据操作语言)
INSERT、UPDATE、DELETE 等
插入、修改和删除数据库中的数据
- 插入数据
## 插入数据语法:(字符数据需要单引号,数值数据不需要单引号。)
INSERT INTO 表名 (列名)VALUES (值列表)
## 示例:向学生表中插入一行数据
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SsEX)
VALUES ('张青裁','上海松江',6,[email protected]',0)
## 示例:向学生表中插入多行数据
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SsEX)
SELECT '张青裁','上海松江',6,[email protected]',0 UNION
SELECT '张三','上海松江',3,[email protected]',1 UNION
SELECT '刘筱','上海松江',2,[email protected]',0
- 每次插入一行数据,不能只插入半行或者几列数据,插入的数据是否有效将按照整行的完整性的要求来检验。
- 每个数据值的数据类型、精度和小数位数必须与相应的列匹配。
- 不能给标识列插入值。
- 不允许为空的列,则必须插入数据。
- 有缺省值的列,插入时可以使用 DEFAULT(缺省)关键字来代表缺省值。
- 用null表示空
# 将某一个表里的数据添加到另一个已存在的表中:
INSERT INTO 表名 (列名)
SELECT 列名
FROM 源表名
# 示例:将Students表中SName,SAdderss,SEmail列数值插入AddressList表的 (姓名,地址,电子邮件)列
INSERT INTO AddressList (姓名,地址,电子邮件)
SELECT SName,SAdderss,SEmail
FROM Students
# 注意:AddressList 表需包含 (姓名,地址,电子邮件) 列
# 将某一个表里的数据添加到新表中:
SELECT (列名)
INTO 表名
FROM 源表名
# 示例:将Students表中SName,SAdderss,SEmail列数值创建新NEWAddressList表
SELECT SName,SAdderss,SEmail
INTO NEWAddressList
FROM Students
- 更改数据
## 更新数据行:(更新多列数据使用逗号隔开)
UPDATE 表名
SET 列名=更新值, 列名=更新值, ...
WHERE 条件
## 示例1:将Students 表中的SSEX列中所有数值改为0
UPDATE Students
SET SSEX=0
## 示例2:将Students 表中的SAddress列中 上海黄浦 改为 上海松江
UPDATE Students
SET SAddress='上海松江'
WHERE SAddress='上海黄浦'
- 勿忘条件限制,以防有效数据的丢失。
- 删除数据
## 删除数据行:
DELETE FROM 表名
WHERE 条件
## 示例1:删除Students 表中的SName列为 张青裁 行
DELETE FROM Students
WHERE SName='张青裁'
## 直接清空表:(慎用)
TRUNCATE TABLE 表名
DQL(数据查询语言)
SELECT 等
用来查询数据库中的数据
## 查询数据:
SELECT 列名
FROM 表名
WHERE 条件 (可选)
ORDER BY 排序的列名 (可选)
##示例1:查询Students表中所有的列
SELECT *
FROM Students
## 示例2:查询Students表中SSEX列值为0的数据行,只显示SCode,SName,SAddress列,并按SCode列的值排序。
SELECT SCode,SName,SAddress
FROM Students
WHERE SSEX = 0
ORDER BY SCode
## 示例3:查询Students表中Email值为空的行。
SELECT *
FROM Students
WHERE Email is null
## 示例4:查询Students表中Email值非空的行。
SELECT *
FROM Students
WHERE Email is not null
- 排序默认按升序排列,降序语法:ORDER BY 列名 desc。
- 多列排序可以用 , 隔开列名,多列排序语法:ORDER BY 列名1,列名2。
## 只查询前几行数据
##方式1:按指定行数查询
SELECT TOP * 列名
FROM 表名
WHERE 条件 (可选)
ORDER BY 排序的列名 (可选)
## 示例:查询Students表所有列前5行数据
SELECT TOP 5 *
FROM Students
##方式2:按总行百分百查询
SELECT TOP * PERCENT 列名
FROM 表名
WHERE 条件 (可选)
ORDER BY 排序的列名 (可选)
## 示例:查询Students表所有列前20%行数据
SELECT TOP 20 PERCENT *
FROM Students
## 自定义数据结果列名称
##方法1
SELECT 列名 AS 新列名,列名 AS 新列名,...
FROM 表名
WHERE 条件 (可选)
ORDER BY 排序的列名 (可选)
##方法2
SELECT 新列名=列名,新列名=列名,...
FROM 表名
WHERE 条件 (可选)
ORDER BY 排序的列名 (可选)
## 显示结果中增加一个自定义列
SELECT 列名 AS 新列名,'自定义内容' AS 自定义列名,
FROM 表名
WHERE 条件 (可选)
ORDER BY 排序的列名 (可选)
## 多列合并查询
##方式1
SELECT 列名+列名
FROM 表名
WHERE 条件 (可选)
ORDER BY 排序的列名 (可选)
##方法2
SELECT 列名+列名 AS 新列名
FROM 表名
WHERE 条件 (可选)
ORDER BY 排序的列名 (可选)
- +连接的列,值需要是同一种类型
- 如果+连接的列是字符类数据,结果为数据内容相连。如:姓名+地址 结果为:姓名地址。
- 如果+连接的列是数值类数据,结果为数值之和。如:12+20 结果为:32。
DCL(数据控制语言)
用来控制存取许可、存取权限等
GRANT、REVOKE 等
DDL(数据定义语言)
用来建立数据库、数据库对象和定义表的列
CREATE TABLE、DROPTABLE 等
运算符
一种符号,他用来进行列间或者变量之间的比较和数学运算
包括算术运算符、赋值运算符、比较运算符、逻辑运算符
算术运算符
算术运算符
说明
+
加运算,求两个数或者表达式相加的和
-
减运算,求两个数或者表达式相减的差
*
乘运算,求两个数或者表达式相乘的积
/
除运算,求两个数或者表达式相除的商,如:5/3的值为1
%
取模运算,求两个数或者表达式相除的余数,如:5%3的值为2
赋值运算符
赋值运算
说明
=
吧一个数或变量或表达式赋值给另一个变量,如:Name='王华'
比较运算符
比较运算
含义
=
等于
>
大于
<
小于
>=
大于或等于
<=
小于或等于
<>
不等于
!
非(Java语言中为not)
逻辑运算符
逻辑表达式
说明
示例
AND
逻辑与
1 AND 1 = ; 1 AND 0 = 0; 0 AND 0 = 0;
OR
逻辑或
1 OR 1 = 1; 1OR 0 = 1; 0 OR 0 = 0;
NOT
逻辑非
NOT 1 = 0; NOT 0 = 1;
通配符
解释
示例
‘_’
一个字符
A Like 'C_'
%
任意长度的字符串
B Like 'CO_%'
[ ]
括号中所指定范围内的一个字符
C Like '9W0[1-2]'
[^]
不在括号中所指定范围内的一个字符
D Like ‘%[A-D][^1-2]'