ACCP V4.01
第三章
SQL Server数据管理
ACCP V4.02
回顾
数据完整性包括了实体完整性、引用完整性、域完整性和自定义完整性
创建数据库表的过程实际上就是实施完整性约束的过程
创建表包括选择字段名称、数据类型、定义是否为空、设置默认值、主键和关系、检查约束等
表中没有合适的列作为主键,可以创建标识列
数据的导入 /导出操作属于 DTS(数据转换服务)
ACCP V4.03
目标
理解 T-SQL及其作用
使用 SQL Server中的逻辑表达式和运算符
使用 T-SQL向表中插入数据
使用 T-SQL更新表中的数据
使用 T-SQL删除表中的数据
ACCP V4.04
SQL
WHAT(SQL是什么? )
—— Structured Query Language:结构化查询语言
WHY(为何要使用 SQL? )
—— 难道仅仅使用企业管理器操作 SQL Server数据库?
—— 应用程序如何与数据库打交道?
WHEN(何时使用?)
—— 对 SQL Server执行所有的操作都可以
—— 程序中的增删改查
HOW(怎么使用?)
—— …
ACCP V4.05
SQL和 T-SQL
T-SQL = Transact-SQL
T-SQL是 SQL的加强版
对功能进行了扩充:如变量说明、流程控制、功能函数
ACCP V4.06
思考
ORACLE数据库支持标准 SQL,在 SQL Server中编写的 T-SQL语句他也支持吗?
ACCP V4.07
T-SQL的组成
DML(数据操作语言)
—— 查询、插入、删除和修改数据库中的数据;
—— SELECT,INSERT,UPDATE,DELETE等;
DCL(数据控制语言)
—— 用来控制存取许可、存取权限等;
—— GRANT,REVOKE 等;
DDL(数据定义语言)
—— 用来建立数据库、数据库对象和定义其列
—— CREATE TABLE,DROP TABLE 等
变量说明、流程控制、功能函数
—— 定义变量、判断、分支、循环结构等
—— 日期函数、数学函数、字符函数、系统函数等
ACCP V4.08
T-SQL中的运算符运算符 含义
= 等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
<> 不等于
! 非与 C语言中的一样,很难写错
ACCP V4.09
通配符通配符 解释 示例
‘ _’ 一个字符 A Like 'C_'
% 任意长度的字符串 B Like 'CO_%'
[ ] 括号中所指定范围内的一个字符 C Like '9W0[1-2]'
[^] 不在括号中所指定范围内的一个字符 D Like ‘%[A-D][^1-2]'
ACCP V4.010
通配符使用说明
通常与 LIKE关键字一起来使用
可以用在检查约束中使用 LIKE
在后面的查询语句中还会经常使用到思考:身份证号码的约束表达式怎么写?
ACCP V4.011
逻辑表达式逻辑表达式 说明 示例
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;
NOT (付款方式 = '信用卡 ') OR (信用卡 <>'阳光卡 ')
ACCP V4.012
讲述 T-SQL之前 …
语法检查 执行 选择数据库数据库对象
T-SQL
执行结果
ACCP V4.013
插入数据行 7-1
INSERT [INTO] <表名 > [列名 ] VALUES <值列表 >
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ','上海松江 ',6,'ZQC@Sohu.com',0)
ACCP V4.014
插入数据行 7-2
注意事项 1:每次插入一行数据,不可能只插入半行或者几列数据,
因此,插入的数据是否有效将按照整行的完整性的要求来检验;
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ') ×
ACCP V4.015
插入数据行 7-3
注意事项 2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配 ;
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ','上海松江 ',ZQC,'ZQC@Sohu.com','ZG') ×
ACCP V4.016
插入数据行 7-4
注意事项 3:不能为标识列指定值,因为它的数字是自动增长的 ;
INSERT INTO Students
(SCode,SName,SAddress,SGrade,SEmail,SSEX)
VALUES (32,'张青裁 ','上海松江 ',6,'ZQC@Sohu.com',0) ×
ACCP V4.017
插入数据行 7-5
注意事项 4:如果在设计表的时候就指定了某列不允许为空,则必须插入数据 ;
INSERT INTO Students (SAddress,SGrade,SEmail,SSEX)
VALUES ('上海松江 ',6,'ZQC@Sohu.com',0) ×
ACCP V4.018
插入数据行 7-6
注意事项 5:插入的数据项,要求符合检查约束的要求
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ','上海松江 ',6,'ZQC',0)?
ACCP V4.019
插入数据行 7-7
注意事项 6:具有缺省值的列,可以使用 DEFAULT(缺省)关键字来代替插入的数值
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ',DEFAULT,6,'ZQC@Sohu.com',0)
ACCP V4.020
插入多行数据 4-1
INSERT INTO TongXunLu ('姓名 ','地址 ','电子邮件 ')
SELECT SName,SAddress,SEmail
FROM Students
INSERT INTO <表名 >(列名 )
SELECT <列名 >
FROM <源表名 >
ACCP V4.021
插入多行数据 4-2
SELECT Students.SName,Students.SAddress,Students.SEmail
INTO TongXunLu
FROM Students
SELECT (列名 )
INTO <表名 >
FROM <源表名 >
猜一猜:该语句可以执行两次吗?
ACCP V4.022
插入多行数据 4-3
SELECT Students.SName,Students.SAddress,Students.SEmail,
IDENTITY(int,1,1) As StudentID
INTO TongXunLuEX
FROM Students
SELECT INTO插入多行数据的时候,如何插入新的标识列?
SELECT IDENTITY(数据类型,标识种子,标识增长量 ) AS 列名
INTO 新表
FROM 原始表
ACCP V4.023
插入多行数据 4-4
INSERT STUDENTS (SName,SGrade,SSex)
SELECT '测试女生 1',7,0 UNION
SELECT '测试女生 2',7,0 UNION
SELECT '测试女生 3',7,0 UNION
SELECT '测试女生 4',7,0 UNION
SELECT '测试女生 1',7,0 UNION
SELECT '测试男生 2',7,1 UNION
SELECT '测试男生 3',7,1 UNION
SELECT '测试男生 4',7,1 UNION
SELECT '测试男生 5',7,1
INSERT INTO <表名 >(列名 )
SELECT <列名 > UNION
SELECT <列名 > UNION
……
ACCP V4.024
更新数据行
UPDATE <表名 > SET <列名 = 更新值 >
[WHERE <更新条件 >]
UPDATE Students SET SSEX = 0
UPDATE Students
SET SAddress ='北京女子职业技术学校家政班 '
WHERE SAddress = '北京女子职业技术学校刺绣班 '
UPDATE Scores
SET Scores = Scores + 5
WHERE Scores <= 95
ACCP V4.025
删除数据行 3-1
DELETE FROM <表名 > [WHERE <删除条件 >]
DELETE FROM Students
WHERE SName ='张青裁 '
河南新乡赵可以0010016
河南新乡张丽鹃0010015
江西南昌雷铜0010014
湖南新田吴兰0010013
山东定陶李山0010012
…,地址姓名学号
980010016数学
810010013语文
670010012语文
740010013数学
880010012数学
…,分数学号科目
DELETE FROM 学员信息表
WHERE 学号 ='0010012'?
ACCP V4.026
删除数据行 3-2
思考:以下的删除语句可以执行吗?
DELETE SCode FROM Students
ACCP V4.027
删除数据行 3-3
TRUNCATE TABLE <表名 >
TRUNCATE TABLE Students
DELETE FROM Students
=
ACCP V4.028
总结
SQL(结构化查询语言 )是数据库能够识别的通用指令集
SQL Server中的通配符经常和 LIKE结合使用来进行不精确的限制
WHERE用来限制条件,其后紧跟条件表达式
一次插入多行数据,可以使用 INSERT…SELECT…,
SELECT…INTO… 或者 UNION关键字来实现
使用 UPDATE更新数据,一般都有限制条件
使用 DELETE删除数据时,不能删除被外键值所引用的数据行
第三章
SQL Server数据管理
ACCP V4.02
回顾
数据完整性包括了实体完整性、引用完整性、域完整性和自定义完整性
创建数据库表的过程实际上就是实施完整性约束的过程
创建表包括选择字段名称、数据类型、定义是否为空、设置默认值、主键和关系、检查约束等
表中没有合适的列作为主键,可以创建标识列
数据的导入 /导出操作属于 DTS(数据转换服务)
ACCP V4.03
目标
理解 T-SQL及其作用
使用 SQL Server中的逻辑表达式和运算符
使用 T-SQL向表中插入数据
使用 T-SQL更新表中的数据
使用 T-SQL删除表中的数据
ACCP V4.04
SQL
WHAT(SQL是什么? )
—— Structured Query Language:结构化查询语言
WHY(为何要使用 SQL? )
—— 难道仅仅使用企业管理器操作 SQL Server数据库?
—— 应用程序如何与数据库打交道?
WHEN(何时使用?)
—— 对 SQL Server执行所有的操作都可以
—— 程序中的增删改查
HOW(怎么使用?)
—— …
ACCP V4.05
SQL和 T-SQL
T-SQL = Transact-SQL
T-SQL是 SQL的加强版
对功能进行了扩充:如变量说明、流程控制、功能函数
ACCP V4.06
思考
ORACLE数据库支持标准 SQL,在 SQL Server中编写的 T-SQL语句他也支持吗?
ACCP V4.07
T-SQL的组成
DML(数据操作语言)
—— 查询、插入、删除和修改数据库中的数据;
—— SELECT,INSERT,UPDATE,DELETE等;
DCL(数据控制语言)
—— 用来控制存取许可、存取权限等;
—— GRANT,REVOKE 等;
DDL(数据定义语言)
—— 用来建立数据库、数据库对象和定义其列
—— CREATE TABLE,DROP TABLE 等
变量说明、流程控制、功能函数
—— 定义变量、判断、分支、循环结构等
—— 日期函数、数学函数、字符函数、系统函数等
ACCP V4.08
T-SQL中的运算符运算符 含义
= 等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
<> 不等于
! 非与 C语言中的一样,很难写错
ACCP V4.09
通配符通配符 解释 示例
‘ _’ 一个字符 A Like 'C_'
% 任意长度的字符串 B Like 'CO_%'
[ ] 括号中所指定范围内的一个字符 C Like '9W0[1-2]'
[^] 不在括号中所指定范围内的一个字符 D Like ‘%[A-D][^1-2]'
ACCP V4.010
通配符使用说明
通常与 LIKE关键字一起来使用
可以用在检查约束中使用 LIKE
在后面的查询语句中还会经常使用到思考:身份证号码的约束表达式怎么写?
ACCP V4.011
逻辑表达式逻辑表达式 说明 示例
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;
NOT (付款方式 = '信用卡 ') OR (信用卡 <>'阳光卡 ')
ACCP V4.012
讲述 T-SQL之前 …
语法检查 执行 选择数据库数据库对象
T-SQL
执行结果
ACCP V4.013
插入数据行 7-1
INSERT [INTO] <表名 > [列名 ] VALUES <值列表 >
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ','上海松江 ',6,'ZQC@Sohu.com',0)
ACCP V4.014
插入数据行 7-2
注意事项 1:每次插入一行数据,不可能只插入半行或者几列数据,
因此,插入的数据是否有效将按照整行的完整性的要求来检验;
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ') ×
ACCP V4.015
插入数据行 7-3
注意事项 2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配 ;
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ','上海松江 ',ZQC,'ZQC@Sohu.com','ZG') ×
ACCP V4.016
插入数据行 7-4
注意事项 3:不能为标识列指定值,因为它的数字是自动增长的 ;
INSERT INTO Students
(SCode,SName,SAddress,SGrade,SEmail,SSEX)
VALUES (32,'张青裁 ','上海松江 ',6,'ZQC@Sohu.com',0) ×
ACCP V4.017
插入数据行 7-5
注意事项 4:如果在设计表的时候就指定了某列不允许为空,则必须插入数据 ;
INSERT INTO Students (SAddress,SGrade,SEmail,SSEX)
VALUES ('上海松江 ',6,'ZQC@Sohu.com',0) ×
ACCP V4.018
插入数据行 7-6
注意事项 5:插入的数据项,要求符合检查约束的要求
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ','上海松江 ',6,'ZQC',0)?
ACCP V4.019
插入数据行 7-7
注意事项 6:具有缺省值的列,可以使用 DEFAULT(缺省)关键字来代替插入的数值
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES ('张青裁 ',DEFAULT,6,'ZQC@Sohu.com',0)
ACCP V4.020
插入多行数据 4-1
INSERT INTO TongXunLu ('姓名 ','地址 ','电子邮件 ')
SELECT SName,SAddress,SEmail
FROM Students
INSERT INTO <表名 >(列名 )
SELECT <列名 >
FROM <源表名 >
ACCP V4.021
插入多行数据 4-2
SELECT Students.SName,Students.SAddress,Students.SEmail
INTO TongXunLu
FROM Students
SELECT (列名 )
INTO <表名 >
FROM <源表名 >
猜一猜:该语句可以执行两次吗?
ACCP V4.022
插入多行数据 4-3
SELECT Students.SName,Students.SAddress,Students.SEmail,
IDENTITY(int,1,1) As StudentID
INTO TongXunLuEX
FROM Students
SELECT INTO插入多行数据的时候,如何插入新的标识列?
SELECT IDENTITY(数据类型,标识种子,标识增长量 ) AS 列名
INTO 新表
FROM 原始表
ACCP V4.023
插入多行数据 4-4
INSERT STUDENTS (SName,SGrade,SSex)
SELECT '测试女生 1',7,0 UNION
SELECT '测试女生 2',7,0 UNION
SELECT '测试女生 3',7,0 UNION
SELECT '测试女生 4',7,0 UNION
SELECT '测试女生 1',7,0 UNION
SELECT '测试男生 2',7,1 UNION
SELECT '测试男生 3',7,1 UNION
SELECT '测试男生 4',7,1 UNION
SELECT '测试男生 5',7,1
INSERT INTO <表名 >(列名 )
SELECT <列名 > UNION
SELECT <列名 > UNION
……
ACCP V4.024
更新数据行
UPDATE <表名 > SET <列名 = 更新值 >
[WHERE <更新条件 >]
UPDATE Students SET SSEX = 0
UPDATE Students
SET SAddress ='北京女子职业技术学校家政班 '
WHERE SAddress = '北京女子职业技术学校刺绣班 '
UPDATE Scores
SET Scores = Scores + 5
WHERE Scores <= 95
ACCP V4.025
删除数据行 3-1
DELETE FROM <表名 > [WHERE <删除条件 >]
DELETE FROM Students
WHERE SName ='张青裁 '
河南新乡赵可以0010016
河南新乡张丽鹃0010015
江西南昌雷铜0010014
湖南新田吴兰0010013
山东定陶李山0010012
…,地址姓名学号
980010016数学
810010013语文
670010012语文
740010013数学
880010012数学
…,分数学号科目
DELETE FROM 学员信息表
WHERE 学号 ='0010012'?
ACCP V4.026
删除数据行 3-2
思考:以下的删除语句可以执行吗?
DELETE SCode FROM Students
ACCP V4.027
删除数据行 3-3
TRUNCATE TABLE <表名 >
TRUNCATE TABLE Students
DELETE FROM Students
=
ACCP V4.028
总结
SQL(结构化查询语言 )是数据库能够识别的通用指令集
SQL Server中的通配符经常和 LIKE结合使用来进行不精确的限制
WHERE用来限制条件,其后紧跟条件表达式
一次插入多行数据,可以使用 INSERT…SELECT…,
SELECT…INTO… 或者 UNION关键字来实现
使用 UPDATE更新数据,一般都有限制条件
使用 DELETE删除数据时,不能删除被外键值所引用的数据行