第七章:用表组织数据
※学习本章之前,需要掌握的基本概念:
1.数据库的基本概念、数据库的组成?
(1)数据库的基本概念:用来存储数据,并可以对存储的数据进行合理的管理和维护,并可以按照一定的格式从中检索出需要的信息供使用者参考。
(2)数据库的组成:一般来说,数据库主要有数据库表、数据库表和数据库关系对象组成
2.什么是数据冗余和数据完整性?
数据冗余:数据重复的现象就是数据冗余
数据完整性:数据完整性指的是数据库中数据的准确性
实际应用中,要求数据库中不能存在大量的数据冗余并且数据库要确保数据的完整性,在某些特定的情况则允许出现适当的数据冗余方便查询。
3.实体和记录、字段、行、列的概念:
实体:在数据库中客观存在的、可以用来描述的事物就是实体。数据库表中的行叫做实体。
记录:概念和实体的概念相似,数据库表中的行也可以叫做记录。
行:表中横向排列的数据(数据库表中叫做实体或记录)
列:表中纵向排列的数据(数据库表中叫做字段)
※本章学习重点:
1.掌握数据库表的基本结构及数据库表的组成部分
2.掌握SQL Server为确保实体完整性提供的四种类型的约束的目的分别是什么、实施过程、实施方法
3.主键和外键的定义、作用
4.掌握SQL Server中的常用数据类型
5.掌握创建表的方式(基本界面操作)
6.掌握使用SQL语句创建表
7.完善数据库表的结构
8.掌握如何建立表间关系(实施引用完整性约束)
9.掌握如何添加检查约束(CHECK约束)
10.了解数据库表中添加的常用的约束类型
※知识点解读
1.数据库表的基本结构:实体(记录或行)、列、数据、数据类型、约束、关系
2.数据完整性指的是数据库中数据的准确性,为了确保数据完整性,SQL Server提供了以下四种类型的约束:
(1)实体完整性约束
要求:同一个表中不允许出现相同的数据行
实施方式:主键约束、唯一约束、标识列
(2)域完整性约束
要求:确保给定列输入值的有效性
实施方式:非空约束、检查约束、默认约束、外键约束
(3)引用完整性约束
要求:保持表之间建立的关系
当强制引用完整性时,SQL Server禁止用户进行以下操作:
实施方式:外键约束
(4)自定义完整性约束
通过用户自定义完整性而形成的特定规则对表中数据进行约束
2.主键和外键
定义:
主键用来唯一标识表中的每一行
外键用来建立引用关系
作用:
主键用来强制实体完整性,唯一非空,一个表只能有一个主键,当需要将两列或两列以上的列合并成一个主键时,则该主键也叫复合主键,复合主键一般不常用
设置主键应遵循的两个原则:最少性和稳定性
外键用来强制引用完整性,确保从表中的某个数据项在主表中必须存在,强制引用完整性,通俗的说,就是外键的数据要和主键的数据保持对应关系,不允许在外键中出现它对应的主键中不存在的数据。
3.SQL Server中的常用数据类型
二进制数据类型:binary/varbinary/image
字符数据类型:char/varchar(非Unicode字符) nchar/nvarchar(Unicode字符),char/nchar固定长度,varchar/nvarchar长度可变
text长文本 ntext可变长度的长文本
日期时间类型:
datetime/date/smalldatetime
数值数据类型(包括整数、小数和分数)
整数:int/bigint/smallint/tinyint
小数:float/real
货币数据类型:money
布尔数据类型(列上显示1是0否)bit(实际上返回的是true/false)
4.创建表的方式(界面)
对象资源管理器——数据库——表——右击新建表——输入列名、数据类型、是否允许为空(根据需要勾选)——新建完成后CTRL+S保存,自定义表名——创建表成功
5.完善数据库表的结构
是否允许为空:设置列是否允许出现空值(NULL),实际上指的就是是否实施非空约束
默认值:设置列的默认值,用户如果没有在设置了有默认值的列上输入数据,则以默认值为准插入默认值,实际上指的就是实施默认约束
标识列:自动编号列,通过设置标志种子(起始值)、标识增量(每次的增长量)来设置标识列,标识列不允许输入数据,可以将标识列设置为主键,标识列的数据类型必须是整数型
6.SQL语句创建表
CREATE TABLE 表名
(
列名 数据类型 列的特征(包括是否为空IS NULL,是否有默认值DEFAULT,是否是标识列IDENTITY,是否是主键PRIMARY KEY),
…
)
删除表
DROP TABLE 表名
7.建立主外键关系图示
在数据表设计器上鼠标右击——关系——添加——表和列规范,选择主键表和主键列、外键表和外键列,确认,CTRL+S保存(这一步一定不要漏),一般建议给建立的关系命名
8.添加CHECK约束
目的:实施域完整性约束
在数据表设计器上鼠标右击——CHECK约束——添加——表达式(输入CHECK约束表达式)
常用逻辑运算符AND/OR/NOT
模糊检索查询 LIKE/BETWEEN/IN
9.常见的几种约束
主键约束 PRIMARY KEY
非空约束 NOT NULL
唯一约束 UNIQUE
检查约束 CHECK
默认约束DEFAULT FOR
外键约束 FOREIGN KEY 外键 REFERENCES 主表(主键)
第八章:用SQL语句操作数据
※学习本章前,你需要掌握和回顾的知识体系:
1.表的基本概念
数据库中的表用来根据不同需求和实际需要分门别类存储数据,数据库中的数据都存放在不同类型的表中,因此可以说表是数据库的一个重要组成部分。
2.数据完整性的概念,以及SQL Server为保证数据完整性提供的4种类型的约束的作用、区别、联系
数据完整性:数据完整性指的是数据库中数据的准确性。
为保证数据完整性,SQL Server提供了以下4种类型的约束:
(1)实体完整性约束
作用:确保同一个表中不能存在相同的数据行。
实施方式:主键约束、非空约束、标识列
(2)域完整性约束
作用:确保给定列输入值的有效性。
实施方式:检查约束、外键约束、默认约束、唯一约束
(3)引用完整性约束
作用:保持表之间已建立的关系。
实施方式:外键约束
(4)自定义完整性约束
作用:通过用户自定义完整性定义特定规则。
实施方式:自定义。
3.SQL Server中的基本数据类型
二进制数据类型:binary/varbinary/image
字符数据类型:
char/varchar(非Unicode字符)
nchar/nvarchar(Unicode字符)
长度区别:char/nchar固定长度,varchar/nvarchar长度可变
text长文本 ntext可变长度的长文本
日期时间类型:datetime/smalldatetime/date
数值数据类型(包括整数、小数和分数):
整数:int/bigint/smallint/tinyint
小数:float/real
货币数据类型:money
布尔数据类型(1是0否,实际返回true/false):bit
4.表的结构以及主外键相关定义、如何建立表间关系(实施引用完整性)
表的结构:列是否为空IS NULL/NOT NULL 是否有默认值DEFAULT,是否是标识列IDENTITY(标识种子,标识增量),是否是主键PRIMARY KEY
是否为空:是否允许列中插入空值
默认值:不显式在某列插入数据时,该列默认插入的数据
标识列:自动编号,不能输入数据,数据类型必须是整数型,可以设置为主键,实施实体完整性
主键:主键用来唯一标识表中的每一列,强制实体完整性,一个表只能有一个主键。
复合主键:当需要将两列或两列以上的列设置为一个主键时,则该主键也叫复合主键。
外键:用来建立引用关系,确保从表中的某个数据项在主表中必须存在,强制引用完整性,一个表可以有多个外键,外键中的数据和主键中的数据相对应,添加外键约束前必须先添加外键对应的主键(主键约束)
※通过学习本章,你需要掌握并熟练运用的知识:
1.SQL语言的定义、作用?
2.T-SQL和SQL间的关系?
3.SQL语言的组成?
4.SQL语言中的运算符?
5.T-SQL插入数据的语法?(一次插入一行/一次插入多行)
6.T-SQL插入标识列的语法?
7.T-SQL更新(修改)数据的语法?
8.T-SQL删除数据的语法?(删除部分记录/删除表中所有数据)
9.TRUNCATE TABLE使用中的一些注意事项?
10.T-SQL语言执行增、删、改的一些注意事项
※对照下面的一些自我总结看看是否掌握了本章知识
1.
定义:SQL语言是结构化查询语言(struct query language),通过使用SQL语言,可以使用代码代替使用鼠标对数据库中的一些常用操作,SQL语言甚至可以通过ADO.NET搭建数据库和应用程序之间的桥梁。SQL语言相对于界面操作而言,操作方式更加灵活,执行速度更快,执行效率更高,可以满足更多的实际需求,SQL语言是当今程序员必须掌握的一个对于操作数据库而言的基本技能。
作用:数据库需要一套指令集,能够识别指令,执行相应操作,并向程序提供数据。目前标准的指令集就是SQL语言。
2.
T-SQL:SQL Server使用的ANSI SQL的一个扩展集,依赖于SQL语言,T-SQL只能在SQL Server数据库中使用,使用范围相对单一。
SQL语言:数据库通用的结构化查询语言,适用范围相对较广,可以在当今主流的几乎任意一种数据库中使用,方便程序员对数据库进行操作。
关系:
作用域不同:SQL语言可以在当今主流的几乎所有数据库中使用,T-SQL只能在SQL Server数据库中使用。
依赖关系:T-SQL依赖于SQL语言
3.
SQL语言主要由以下几个部分组成:
DML 数据操作语言
DDL 数据定义语言
DQL 数据查询语言
DCL 数据控制语言
4.
SQL语言中的运算符主要由以下几种类型:
算术运算符:进行常见的加减乘除取模运算
赋值运算符:可以给变量赋值,一般在更新(修改)数据中用的比较多,用来给某列赋修改后的值。
比较运算符:进行常见的大小关系比较,主要运用于建立检查约束(CHECK)和作为分支结构控制语句(如IF-ELSE、CASE-END) 的判断条件
逻辑运算符:AND/OR/NOT用来对条件进行判断,返回布尔类型(true/false)
5.
T-SQL一次插入一行数据:
INSERT [INTO] table_name(column1,column2….)
VALUES(value1,value2…)
T-SQL一次插入多行数据:
INSERT-SELECT语句:将以存在表中的数据一次性插入到已建好的表中
INSERT [INTO] table_name(column1,column2…)
SELECT column1,column2….
FROM table_name
SELECT-INTO:将已存在的表中的数据插入到新表中(系统自动创建新表)
SELECT column1,column2….
INTO table_new
FROM table_name
INSERT-SELECT-UNION:一次插入多行数据(手动输入的情况)
INSERT [INTO] table_name(column1,column2…)
SELECT value1,value2 UNION ——第一行
SELECT value1,value2 UNION ——第二行
…最后一行结尾不用加UNION
6.T-SQL插入标识列:
SELECT IDENTITY(数据类型(必须是整数型,一般使用int),标识种子,标识增量) AS 标识列名
INTO table_name
FROM table_name
7.T-SQL更新表中数据
UPDATE table_name SET column1=value1,column2=value2…
WHERE 更新条件
8.T-SQL删除数据
删除部分记录:
DELETE FROM table_name
WHERE 删除条件
删除表中所有数据:
DELETE FROM table_name
TRUNCATE TABLE table_name
9.TRUNCATE-TABLE删除表中所有数据时的一些注意事项:
①使用TRUNCATE TABLE删除的数据不能恢复
②使用TRUNCATE TABLE删除表中数据后,标识列会重新开始编号
③不能使用TRUNCATE TABLE删除带有外键约束的引用的表的数据
④使用TRUNCATE TABLE删除表中数据后,表中的约束依然存在
⑤建议尽量少用TRUNCATE TABLE语句删除表中所有数据,以免由于误操作而造成数据丢失、损坏,从而带来的严重后果。
10.T-SQL语言执行表中数据增、删、改的注意事项:
①新增的数据必须满足插入的表中的各种约束,从而保证数据完整性。另外,列名和插入的数据数量、类型、顺序必须保持一致,不然会导致插入失败
②更新表中数据(修改表中的数据时),一般需要使用WHERE字句限定更新(修改)条件,如果不限定WHERE条件,则将默认更新表中所有数据。实际应用中一般建议限定WHERE条件,以免误操作导致表中所有数据的更新(原本只需要更新部分数据),而破坏数据完整性
③删除数据时一定要谨慎,尽量少用TRUNCATE TABLE删除数据,删除数据的语法中WHERE字句可选,不限定WHERE条件则默认删除表中所有数据,产生的效果类似于TRUNCATE TABLE,但是使用DELETE语句删除数据后标识列不会重新开始编号,甚至可以撤销删除(恢复数据),而TRUNCATE TABLE执行的删除操作则是彻底的,不可撤销和恢复的。