2022年知识点、SQL语句学习及详细总结 .pdf
《2022年知识点、SQL语句学习及详细总结 .pdf》由会员分享,可在线阅读,更多相关《2022年知识点、SQL语句学习及详细总结 .pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一. 数据库简介和创建1. 系统数据库在安装好 SQL SERVER 后,系统会自动安装5 个用于维护系统正常运行的系统数据库:(1)master:记录了 SQL SERVER 实例的所有系统级消息,包括实例范围的元数据(如登录帐号)、端点、链接服务器和系统配置设置。(2)msdb :供 SQL SERVER 代理服务调度报警和作业以及记录操作员的使用,保存关于调度报警、作业、操作员等信息。(备份还原时)(3)model:SQL SERVER 实例上创建的所有数据库的模板。(4)tempdb:临时数据库,用于保存临时对象或中间结果集,为数据库的排列等操作提供一个临时工作空间。(每次启动都会重新
2、创建)(5)Resource:一个只读数据库,包含了SQL SERVER 的所有系统对象。(隐藏的数据库)2. 数据库的组成2.1 数据文件(1)主要数据文件:扩展名为 .mdf ,每个数据库有且只能有一个。(2)次要数据文件:扩展名为 .ndf , 可以没有或有多个。2.2 日志文件扩展名为 .ldf ,用于存放恢复数据库的所有日志信息。2.3 数据的存储分配(1)数据文件和日志文件的默认存放位置为:Programe FilesMicrosoft SQL ServerMSSQL.1MSSQLData文件夹。(2)数据的存储分配单位是数据页。一页表是一块8KB的连续磁盘空间。(3)页是存储数据
3、的最小空间分配单位,页的大小决定了数据库表中一行数据的最大大小。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 27 页 - - - - - - - - - 3. SQL 语句 数据库操作(1)创建数据库CREATE DATABASE database_name二. SQL 基础SQL (Structured Query Language,结构化查询语言)是用户操作关系数据库的通用语言。1. SQL 功能概述名师资料总结 - - -精品资料欢迎下载 - - - - - -
4、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 27 页 - - - - - - - - - 2. 系统提供的数据类型2.1 数值数据类型数据类型说明存储空间bitbit 数据类型是整型,其值只能是0、1 或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或 No、True 或 False 、On 或 Off. (很省空间的一种数据类型,如果能够满足需求应该尽量多用。)1 字节tinyinttinyint 数据类型能存储从0 到 255 之间的整数。它在你只打算存储有限数目的数值时很有用。1 字节smallintsmalli
5、nt 数据类型可以存储从- 2 的 15 次幂 (-32768) 到 2 的 15 次幂 (32767) 之间的整数。 这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。(如果 tinyint 类型太单调不能满足您的需求,您可以考虑用smallint 类型,因为这个类型相对也是比较安全的,不接受恶意脚本内容的嵌入。)2 字节intint 数据类型可以存储从- 2 的 31 次幂 (-2147483648) 到 2 的 31 次幂(2147483 647) 之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型4 个字节numeric(p,s ) 或decimal(p,s
6、)数据类型能用来存储从-10 的 38 次幂 -1 到 10 的 38 次幂 -1 的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数最多17 个字节2.2 普通编码字符串类型数据类型说明名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 27 页 - - - - - - - - - 数据类型说明char(n)char 数据类型用来存储指定长度的定长非统一编码型的数据,n 表示字符串的
7、最大长度,取值范围为 18000 (若实际字符串控件小于n,系统自动在后面补空格)varchar(n)可变长度的字符串类型,n 表示字符串的最大长度,取值范围为18000 。texttext 数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1 或 20亿个字符 . char 和 varchar的区别:若某列数据类型为varchar(20) , 存字符串” Jone”时,只占用 4 个字节, 而 char(20)会在为填满的空间中填写空格。所以,varchar 类型比 char 类型更节省空间,但它的开销会大一些, 处理速度也慢一些。 因此,n 值比较小(小于 4),用
8、 char 类型更好些。2.3 统一编码字符串类型(Unicode )数据类型说明nchar(n)nchar 数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000 种字符,使用的字节空间上增加了一倍. nvarchar(n)nvarchar 数据类型用作变长的统一编码字符型数据。此数据类型能存储4000 种字符,使用的字节空间增加了一倍. ntext最多可存储2 的 30 次方 -1 将近 10 亿个字符名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
9、- - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 27 页 - - - - - - - - - 三. SQL 数据操作语言1. 数据查询语句1.1 查询语句的基本结构SELECT -需要哪些列From -来自哪张表 WHERE GROUP BY HAVING ORDER BY SELECT 子句用于指定输出的字段;FROM 子句用于指定数据的来源;WHERE 子句用于指定数据的选择条件;GROUP BY 子句用于对检索到的记录进行分组;HAVING 子句用于指定组的选择条件;ORDER BY 子句用于对查询的结果进行排序;以上子句中, SELECT 子句和
10、FROM 子句是必需的,其它是可选的。1.2 单表查询1.2.1选择表中若干列(1)查询指定的列SELECT列名FROM表名名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 27 页 - - - - - - - - - ?1例子 :SELECT Sname,Sno FROM Student(2)查询全部列SELECT * FROM表名?1例子 :SELECT * FROM Student(3)查询经过计算的列SELECT列名FROM表名?1例子 :SELECT Sname,
11、year(getdata() - year(Birthdate) FROM Student1.2.2 选择表中的若干元祖(1)消除取值相同的行: DISTINCTSELECTDISTINCT Sno FROM表名?1例子 :SELECT DISTINCT Sno FROM Student(2)查询满足条件的元祖查询条件谓 词比较=、= 、=、!=、!、! 确定范围BETWEENAND、 NOT BETWEENAND确定集合IN 、NOT IN 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
12、- 第 6 页,共 27 页 - - - - - - - - - 查询条件谓 词字符匹配LIKE 、NOT LIKE 空值IS NULL 、IS NOT NULL 多重条件(逻辑谓词)AND 、OR a. 比较大小例子 :SELECT Sname FROM Student WHERE year(getdata() - year(Birthdate) = 80 AND Grade = 90例子 :SELECT Sno,Cno FROM SC WHERE Grade NOT BETWEEN 80 AND 90此查询等价于:SELECT Sno,Cno FROM SC WHERE Grade 90c
13、. 确定集合IN 运算符的含义:当列中的值和集合中的某个常量值相等时,结果为True。NOT IN 运算符的含义:当列中的值和集合中的全部常量值 都不相等时,结果为True。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 27 页 - - - - - - - - - 例子 :SELECT Sno FROM Student WHERE Dept IN (信息管理系 ,计算机系 )此查询等价于:SELECT Sno FROM Student WHERE Dept = 信息管理
14、系 OR Dept = 计算机系 )例子 :SELECT Sno FROM Student WHERE Dept NOT IN (信息管理系 ,计算机系 )此查询等价于:SELECT Sno FROM Student WHERE Dept != 信息管理系 AND Dept != 计算机系 )d. 字符串匹配Like 运算符用于查找指定列中与匹配串匹配的元祖。列名 NOT LIKE 通配符含义_(下划线)匹配任意一个字符%(百分号)匹配 0 个或多个字符 匹配 中的任意一个字符。如abcd 表示匹配abcd 其中任何一个,若是连续的,可以用- 表示 不匹配 中的任意一个字符。如abcd 表示不
15、匹配abcd 其中任何一个,若是连续的,可以用-例子 :( 查询姓“张”的学生详细信息)SELECT * FROM Student WHERE Sname LIKE 张%( 查询不姓“张”的学生详细信息)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 27 页 - - - - - - - - - SELECT * FROM Student WHERE Sname NOTLIKE 张%(查询姓“张”、“李”的学生详细信息)SELECT * FROM Student WHER
16、E Sname LIKE 张李 %(查询名字的第二个字为“小” 或“大”的学生详细信息)SELECT * FROM Student WHERE Sname LIKE _ 小大 %e. 涉及空值的查询空值(NULL )在数据库中有特殊含义,表示当前不确定或未知的值。判断是否为NULL时,不可用普通的比较运算符,需用IS NULL 例子 :SELECT Sno FROM Student WHERE Grade IS NULL1.2.3 对查询结果进行排序将查询结果按照指定的顺序显示。ASC表示按列值 升序排列(从上往下,值从大到小)。 DESC 表示按列值 降序 排列(从上往下,值从小到大)。默认
17、为 ASC 。ORDER BY ASC | DESC 例子 :SELECT Sno,Grade FROM SC ORDER BY Grade DESC1.2.4 使用聚合函数统计数据聚合函数也称为统计函数或集合函数,作用是对一组值进行计算并返回一个统计结果。聚合函数含义COUNT(*) 统计表中元祖的个数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 27 页 - - - - - - - - - 聚合函数含义COUNT(DISTINCT) 统计本列的非空列值个数SUM()
18、 计算列值的和值(必须是数值型列)AVG() 计算列值的平均值(必须是数值型列)MAX() 计算列值的最大值MIN() 计算列值的最小值上述函数除 COUNT(*) 外,其它函数在计算过程中均忽略NULL值(统计学生总人数)SELECTCOUNT (*) FROM Student(统计“ 001”学号学生的考试平均成绩)SELECTAVG (Grade) FROM SC WHERE Sno = 001(查询“ C001 ”号课程考试成绩的最高分和最低分)SELECTMAX (Grade) 最高分 , MIN (Grade) 最低分FROM SC WHERE Cno = C001聚合函数不能出现
19、在WHERE 子句中!1.2.5 对数据进行分组统计名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 27 页 - - - - - - - - - 需要先对数据进行分组,然后再对每个组进行统计。分组子句GROUP BY。在一个查询语句中,可以用多个列进行分组。分组子句跟在 WHERE 子句的后面:GROUP BY ,.n HAVING (1)使用 GROUP BY 子句(统计每门课程的选课人数,列出课程号和选课人数)SELECT Cno as 课程号 , COUNT(Sn
20、o) as 选课人数From SC Group BY Cno(统计每个学生的选课门数和平均成绩)SELECT Sno 学号 , COUNT(*) 选课门数 ,AVG(Grade) 平均成绩 From SC Group BY Sno带 WHERE 子句的分组(统计每个系的女生人数)SELECT Dept, COUNT(*)女生人数From Student Where Sex = 女Group BY Dept(2)使用 HAVING 子句HAVING 子句用于对分组后的统计结果再进行筛选,它的功能与 WHERE 子句类似,它用于组而不是单个记录。在HAVING 子句中可以使用聚合函数,但在WHER
21、E 子句中不能,通常与GROUP 子句一起使用。(查询选课门数超过3 门的学生的学号和选课门数)SELECT Sno 学号 , COUNT(*) 选课门数 ,AVG(Grade) 平均成绩 From SC Group BY Sno HAVING COUNT(*) 3(3)WHERE 、GROUP BY 、HAVING 的作用及执行顺序?WHERE 子句用于筛选 FROM 子句中指定的数据所产生的行数据。?GROUP BY子句用于对经WHERE子句筛选后的结果数据进行分组。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
22、理 - - - - - - - 第 11 页,共 27 页 - - - - - - - - - ?HAVING 子句用于对 分组后 的统计结果再进行筛选。可以分组操作之前应用的筛选条件,在 WHERE 子句中指定它们更有效, 这样可以减少参与分组的数据行。在HAVING 子句中指定的筛选条件应该是那些必须在执行分组操作之后应用的筛选条件。(查询计算机系和信息管理系每个系的学生人数)第一种:SELECT Dept, COUNT (*) FROM Student GROUP BY Dept Having Dept in ( 计算机系 , 信息管理系 )第二种:SELECT Dept, COUNT
23、(*) FROM Student WHERE Dept in ( 计算机系 , 信息管理系 )GROUPBY Dept 以上例子比较: 第一种是按照系分组好了之后,只采取所有系中的两个系, 显然效率不高。而第二种是先进行WHERE 筛选条件之后,再进行GROUP BY 计算,显示更好。1.3 多表连接查询若一个查询同时涉及到两张或以上的表,则称为连接查询。1.3.1 内连接使用内连接时, 如果两个表的相关字段满足条件,则从两个表中提取数据组成新的记录。FROM表 1 INNER JOIN 表 2 ON ?1注意:连接条件中的连接字段必须是可比的,必须是语义相同的列。(查询学生及选课的详细信息)
24、SELECT * FROM Student INNER JOIN SC ON Student.Sno = SC.Sno名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 27 页 - - - - - - - - - (查询计算机系学生的选课情况,列出该学生的名字、所修课程号、成绩)-行选择条件SELECT Sname,Cno,Grade FROM Student INNER JOIN SC ON Student.Sno = SC.Sno WHERE Dept = 计算机系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年知识点、SQL语句学习及详细总结 2022 知识点 SQL 语句 学习 详细 总结
限制150内