当前位置:文档之家› 北大青鸟s1SQL复习资料

北大青鸟s1SQL复习资料

SQL Server复习1.数据冗余:在数据库中存在副本现象。

通常由数据库设计引起,通过分类存储,可以减少冗余,但增加查找复杂性。

2.数据完整性:指数据库中数据的准确性。

3.系统数据库●Master●Tempdb●Model●Msdb4.数据库一个数据库至少包含一个数据文件(*.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(缺省)关键字来代替插入的数值●插入多行数据1INSERT INTO<表名>(列名)SELECT<列名>FROM <源表名>例如:INSERT INTO TongXunLu ('姓名','地址','电子邮件')SELECT SName,SAddress,SEmailFROM Students●插入多行数据2SELECT (列名)INTO<表名>FROM<源表名>例如:SELECT Students.SName,Students.SAddress,Students.SEmailINTO TongXunLuFROM Students●SELECT INTO插入多行数据的时候,插入新的标识列SELECT IDENTITY(数据类型,标识种子,标识增长量) AS列名INTO 新表FROM 原始表例如:SELECT Students.SName,Students.SAddress,Students.SEmail,IDENTITY(int,1,1)As StudentIDINTO TongXunLuEXFROM Students●插入多行数据4INSERT INTO<表名>(列名)SELECT <列名>UNIONSELECT <列名>UNION……例如:INSERT STUDENTS (SName,SGrade,SSex)SELECT '测试女生1',7,0 UNIONSELECT '测试女生2',7,0 UNIONSELECT '测试女生3',7,0 UNIONSELECT '测试女生4',7,0 UNIONSELECT '测试女生1',7,0 UNIONSELECT '测试男生2',7,1 UNIONSELECT '测试男生3',7,1 UNIONSELECT '测试男生4',7,1 UNIONSELECT '测试男生5',7,1不能插入相同的信息。

14.更新数据行UPDATE<表名>SET <列名= 更新值> [WHERE <更新条件>]例如:UPDATE StudentsSET 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+'.'+LastNameFROM 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●升序排列例如:SELECT StudentID As 学员编号,(Score*0.9+5) As 综合成绩FROM Score WHERE (Score*0.9+5)>60 ORDER BY Score●降序排列例如:SELECT Au_Lname +'.' +Au_fName AS EMP From Authors Union SELECT fName +'.'+ LName AS EMP From Employee ORDER BY EMP DESC●按多列排序例如:SELECT StudentID As 学员编号, Score As 成绩FROM ScoreWHERE Score>60ORDER BY Score,CourseID17.SQL Server函数●字符串函数●日期函数●数学函数●系统函数18.BETWEEN把某一字段中内容在特定范围内的记录查询出来。

例如:SELECT StudentID, Score FROM SCore WHERE Score BETWEEN 60 AND 80 19.IN例如:把某一字段中内容与所列出的查询内容列表匹配的记录查询出来。

20.聚合函数●SUM求和例如:SELECT SUM(ytd_sales) FROM titles WHERE type = 'business'只用于数字类型列。

●A VG求平均值例如:SELECT A VG(SCore) AS 平均成绩From Score WHERE Score >=60●MAX、MIN求最大最小例如:SELECT A VG(SCore) AS 平均成绩, MAX (Score) AS 最高分, MIN (Score) AS 最低分From Score WHERE Score >=60●COUNT求总记录数例如:SELECT COUNT (*) AS 及格人数From Score WHERE Score>=60 SELECT COUNT (id) AS 及格人数From Score WHERE Score>=60限定id了将忽略为空的记录,不计算到数目里。

21.GROUP BY 分组例如:SELECT StudentID AS 学员编号,CourseID AS 科目编号, A VG(Score) AS平均成绩FROM ScoreGROUP BY StudentID,CourseIDGROUP BY子句搜集数据行到各个组中,统计函数为各个组计算统计值。

22.HA VING分组筛选例如:SELECT StudentID AS 学员编号,CourseID AS 内部测试, A VG(Score) AS 内部测试平均成绩FROM ScoreGROUP BY StudentID,CourseIDHA VING COUNT(Score)>1HA VING子句去掉不符合其组搜索条件的各组数据行。

23.多表连接查询●内联结(INNER JOIN)●外联结——左外联结(LEFT JOIN)——右外联结(RIGHT JOIN)——完整外联结(FULL JOIN)●交叉联结(CROSS JOIN)练习1.Microsoft SQL Server2005中属于用户数据库包括()(选择两项)A.PubsB.MasterC.ModelD.MsdbE.NorthWind2.下面对于域完整性理解正确的是()(选择两项)A.域的完整性和实体完整性都强调了数据的唯一性B.可以指定列值的有效数据C.列的数据类型增强了域的完整性D.存储过程可用来定义域的完整性3.查找authors表中所有电话号码的首位为4,第二位为0或1的电话号码()A.Select phone From authors where phone like ‘4[10]%’B.Select phone From authors where phone like ‘4[^10]%’C.Select phone From authors where phone like ‘4_[1,0]%’D.Select phone From authors where phone between ‘41%’ and ‘40%’4.从货物定单数据表(order)中查询出其中定单金额(order_price)在1000和5000之间的定单的详细信息,并按照定单金额(order_pice)升序排列。

相关主题