北大青鸟s1SQL复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server复习
1.数据冗余:在数据库中存在副本现象。通常由数据库设计引起,通过分类存储,可以减少冗余,但增加查找复杂性。
2.数据完整性:指数据库中数据的准确性。
3.系统数据库
●Master
●Tempdb
●Model
●Msdb
4.数据库
一个数据库至少包含一个数据文件(*.mdf)一个日志文件(*.ldf)
5.数据完整性四类约束
●实体完整性
表中每一行数据都反映不同的实体,不能存在相同行。
●域完整性
指给定列的输入有效性。
●引用完整性
在输入或删除数据行时,引用实体完整性用来保持表之间定义的关系。通过主外键之间的引用关系实现。
●用户自定义完整性
6.主键
表中有一列或多列组合的值能用来唯一地标识表中的每一行这样的一列或多列的组合叫主键。主键是用来确保表中不存在重复的数据行。一个表只能有一个主键,也可以不要主键,任意类型都可以作主键。
主键选取原则:
✧最少性和稳定性
✧主键列值可以更新但不能为重复值
7.外键
相对主键而言的,子表中对应主表的列。一个表中可以有多个外键。
8.
9.标识列
数据自动生成,不能在该列上输入数据,也不能修改。
10.
11.
12.
13.插入语句
INSERT [INTO] <表名> [列名] V ALUES <值列表>
例如:INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) V ALUES ('张青裁','上海松江',6,'ZQC@',0)
注意事项1:每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;
注意事项2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配;
注意事项3:不能为标识列指定值,因为它的数字是自动增长的;
注意事项4:如果在设计表的时候就指定了某列不允许为空,则必须插入数据;
注意事项5:插入的数据项,要求符合检查约束的要求
注意事项6:具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值
●插入多行数据1
INSERT INTO<表名>(列名)
SELECT<列名>
FROM <源表名>
例如:
INSERT INTO TongXunLu ('姓名','地址','电子邮件')
SELECT SName,SAddress,SEmail
FROM Students
●插入多行数据2
SELECT (列名)
INTO<表名>
FROM<源表名>
例如:
SELECT Students.SName,Students.SAddress,Students.SEmail
INTO TongXunLu
FROM Students
●SELECT INTO插入多行数据的时候,插入新的标识列
SELECT IDENTITY(数据类型,标识种子,标识增长量) AS列名
INTO 新表
FROM 原始表
例如:
SELECT Students.SName,Students.SAddress,Students.SEmail,IDENTITY(int,1,1)
As StudentID
INTO TongXunLuEX
FROM Students
●插入多行数据4
INSERT INTO<表名>(列名)
SELECT <列名>UNION
SELECT <列名>UNION
……
例如:
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
不能插入相同的信息。
14.更新数据行
UPDATE<表名>SET <列名= 更新值> [WHERE <更新条件>]
例如:
UPDATE Students
SET SAddress ='北京女子职业技术学校家政班'
WHERE SAddress = '北京女子职业技术学校刺绣班'
15.删除数据行
●DELETE FROM <表名> [WHERE <删除条件>]
●TRUNCATE TABLE <表名>
TRUNCATE TABLE Students相当于DELETE FROM Students的作用。
16.查询
SELECT<列名>
FROM <表名>
[WHERE <查询条件表达式>]
[GROUP BY <列名>]
[HA VING <条件>]
[ORDER BY <排序的列名>[ASC或DESC]]
●查询全部的行和列
例如:SELECT * FROM Students
●使用AS来命名列
例如:
SELECT FirstName+'.'+LastName AS '姓名'
FROM Employees
●使用=来命名列
例如:
SELECT '姓名' = FirstName+'.'+LastName
FROM Employees
●查询空行
例如:
SELECT SName FROM Students WHERE SEmail IS NULL
●使用常量列
例如:
SELECT 姓名=SName,地址= SAddress,'河北新龙' AS 学校名称
FROM Students
●限制固定行数
例如:
SELECT TOP 5 SName, SAddress FROM Students WHERE SSex = 0
●返回百分之多少行
例如:
SELECT TOP 20 PERCENT SName, SAddress FROM Students WHERE SSex = 0