《《SQL基础入门》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《SQL基础入门》PPT课件.ppt(116页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第章第章SQLSQL概述(Structured Query Language)简称SQL作用:结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统2学习目标创建数据库利用SQL的DDL语句创建数据表,并理解SQL支持的数据类型利用SQL建立完整性约束理解查询语句基本结构能够用SELECT语句进行简单查询能够按照字段对信息进行筛选能够对查询的记录进行排序能够进行集合查询能够使用聚集函数查询能够进行嵌套查询理解连接的函义,并使用连接进行查询利用SQL进行数据库的修改3一、创建数据库方法:1、图形化创建2、用CREATE语句创建4任务:在Management
2、Studio中创建数据库student。【任务分析】根据任务要求,要求使用SQL Server Management Studio的图形化界面创建名为student的数据库,并保存在C盘db文件夹下。数据库的具体属性如下表所示:student的数据文件和事务日志文件逻辑名称文件类型文件组系统文件名初始大小最大容量增长容量student1数据文件primaryC:/db/student_data.mdf3MB30MB10MBstudentlog事务日志文件C:/db/student_log.ldf1MB10MB10%相关知识数据库的文件结构逻辑结构是指数据库由哪些性质的信息哪些性质的信息组成。S
3、QL Server的数据库是由表、视图、索引、存储过程和触发器等各种不同的对象组成,它们构成了数据库的逻辑结构。数据库对象数据库对象说明说明表用于存放数据,由行和列组成视图可以看成是虚拟表或存储查询索引用于快速查找所需信息存储过程用于完成特定功能的SQL语句集触发器一种特殊类型的存储过程SQL Server 2012数据库的常用对象物理结构也称为存储结构,表示数据库文件是如何在磁盘上存放磁盘上存放的。SQL Server 2012中的数据库文件在磁盘上以文件的单位存放,由数据库文件和事务日志文件组成。根据文件作用的不同,又可以将它们分为三类:主数据库文件、辅助数据库文件和事务日志文件。其中,主
4、数据库文件是必须要有的,辅助数据库文件可以根据需要设置一个或者多个,而事务日志文件至少有一个。相关知识数据库的文件结构数据库文件数据库文件功能功能扩展名扩展名主数据库文件存放DB的启动信息、部分或全部数据和数据库对象.mdf辅助数据库文件存放除主数据库文件外的数据和数据库对象.ndf事务日志文件用来存放恢复数据库所需的事务日志信息,记录数据库更新情况.ldf 基本概念主要数据文件数据文件数据库 次要数据文件事务日志文件用于存储数据库中的所有对象,如表用来存储数据库的启动信息、部分或全部数据,扩展名为.mdf每个数据库只能有一个主要数据文件用于保存所有主要数据文件中容纳不下的数据,扩展名为.nd
5、f可有多个保存用于恢复数据库的日志信息至少一个操作步骤1、打开Management Studio界面操作步骤2、打开“新建数据库”对话框操作步骤3、按要求设置数据库基本属性任务 用CREATE DATABASE语句创建数据库student【任务分析】要求使用Management Studio创建名为student的数据库,同时设置数据库的相关属性。student的数据文件和事务日志文件逻辑名称文件类型文件组系统文件名初始大小最大容量增长容量student_data数据文件primaryC:/db/student_data.mdf3MB30MB10MBstudent_log事务日志文件C:/db
6、/student_log.ldf1MB10MB5MB知识说明:CREATE DATABASE语句的基本格式CREATE DATABASE database_name ON PRIMARY()LOG ON()关键代码create database studenton primary(name=student1,filename=d:dbstudent.mdf,size=10MB,maxsize=100MB,filegrowth=5MB),(name=student2,filename=d:dbstudent.ndf,size=8MB,maxsize=50MB,filegrowth=2MB)15l
7、og on(name=studentlog,filename=d:dbstudent.ldf,size=5MB,maxsize=50MB,filegrowth=5MB)16分离与附加数据库 1.分离数据库用 SQL Server Management Studio分离数据库展开树形目录,定位到要分离的数据库上单击鼠标右键,在弹出的快捷菜单中,选择【任务】|【分离】命令。2023/1/1717附加数据库1.用 SQL Server Management Studio附加数据库1)在数据库节点上单击鼠标右键,弹出快捷菜单,选择【附加】命令。2)出现【附加数据库】对话框,单击【添加】按钮,出现【定位
8、数据库文件】对话框,在这个对话框里,默认只显示数据库的数据文件,即“mdf”文件。2023/1/1718数据库分离与附加的作用和功能一、可以切断数据库的使用(比如当数据库日志很大占用了空间时,可以用分离数据库的方法来切断数据库,从而删除以前的数据库日志,来节省空间)二、可以在需要更换数据库物理存放地址时使用。如果您数据库系统安装在系统盘(比如 C 盘),由于 C 盘容易受病毒侵害,您也许希望您的数据存放在非系统盘(比如 D 盘),要做的这点很简单,您并不需要重装数据库,只要把数据“分离”,然后将相关文件移动到 D 盘的某个目录,接着“附加”数据库即可。相关知识脱机与联机脱机与联机是针对数据库的
9、当前状态来说的,当一个数据库处于可操作、可查询的状态时就是联机状态,而一个数据库尽管可以看到其名字出现在数据库节点中,但对其不能执行任何有效的数据库操作时就是脱机状态。脱机与联机数据库脱机数据库脱机数据库1.用用 SQL Server Management Studio脱机数据库脱机数据库1)展开树形目录,定位到要脱机的数据库上单击鼠标右键,在弹出的快捷菜单中,选择【任务】|【脱机】命令2)弹出【使数据库脱机】对话框,单击【关闭】按钮即可完成操作。2023/1/1721联机数据库1.用用 SQL Server Management Studio联机数据库联机数据库1)展开树形目录,定位到要联机
10、的数据库上单击鼠标右键,在弹出的快捷菜单中,选择【任务】|【联机】命令。2)弹出【使数据库联机】对话框,单击【关闭】按钮即可完成操作2023/1/1722收缩数据库1 用用 Management Studio收缩数据库和文件收缩数据库和文件1)在目标数据库上单击鼠标右键,在弹出的快捷菜单中选择【任务】|【收缩】|【数据库】。2)出现【收缩数据库】对话框,选中并设置相应的值,点击【确认】。2023/1/1723收缩数据库3)如果想收缩数据库的指定数据文件或日志文件,可右击相应的数据库,弹出快捷菜单,选择【任务】|【收缩】|【文件】4)出现【收缩文件】对话框,选中并设置相应的值,点击【确认】。删除
11、数据库1 用用 SQL Server Management Studio删除数据库删除数据库在在【对象资源管理器对象资源管理器】中,定位在目标数据库上单击鼠中,定位在目标数据库上单击鼠标右键,在弹出的快捷菜单中选择标右键,在弹出的快捷菜单中选择【删除删除】。2用用 T-SQL 命令删除数据库命令删除数据库 DROP DATABASE database_name,.n2023/1/1725可同时删除可同时删除多个数据库多个数据库-例1DROP DATABASE BJGL例2DROP DATABASE student2-例3DROP DATABASE 东软思考假如没有对日志文件进行定义,那么日志文
12、件的大小和数据文件有什么差别?怎样创建有多个数据文件的数据库?课堂实践操作1在SQL Server中创建数据库,具体要求如下:(1)数据库名称为college。(2)主要数据文件:逻辑文件名为college1,物理文件名为college.mdf,初始容量为10MB,最大容量为100MB,递增量为10MB。(3)次要数据文件:逻辑文件名为college 2,物理文件名为college.ndf,初始容量为5MB,最大容量为50MB,递增量为5MB。(4)事务日志文件:逻辑文件名为college Log,物理文件名为college.ldf,初始容量为5MB,最大容量为50MB,递增量为5MB。二、创
13、建数据表方法:1、图形化创建2、用DDL语句创建28数据类型29整数类型比较bigint:从:从-263(-9223372036854775808)到到263-1(9223372036854775807)的整型数据,存储大小为的整型数据,存储大小为 8 个字节。一个字节就是个字节。一个字节就是8位,那么位,那么bigint就有就有64位位int:从:从-231(-2,147,483,648)到到231-1(2,147,483,647)的的整型数据,存储大小为整型数据,存储大小为 4 个字节。个字节。int类型,最大可以类型,最大可以存储存储32位的数据位的数据 smallint:从:从-215
14、(-32,768)到到215-1(32,767)的整数数的整数数据,存储大小为据,存储大小为 2 个字节。个字节。smallint就是有就是有16位位 tinyint:从:从0到到255的整数数据,存储大小为的整数数据,存储大小为 1 字节。字节。tinyint就有就有8位。位。30字符类型数据1、CHAR。CHAR存储定长数据很方便,存储定长数据很方便,CHAR字段字段上的索引效率级高,比如定义上的索引效率级高,比如定义char(10),那么不论你,那么不论你存储的数据是否达到了存储的数据是否达到了10个字节,都要占去个字节,都要占去10个字节个字节的空间。的空间。2、VARCHAR。存储变
15、长数据,但存储效率没有。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过我们只知道它不可能超过10个字符,把它定义为个字符,把它定义为 VARCHAR(10)是最合算的。是最合算的。3、TEXT。text存储可变长度的非存储可变长度的非Unicode数据,最数据,最大长度为大长度为231-1(2,147,483,647)个字符。个字符。31任务一:在student数据库数据库中创建数据表student的表的表结构【任务分析】数据表包括表结构、约束以及记录等三个要件。这个任务我们主要是完成对数据表stude
16、nt表结构的创建,表结构如下表所示:表 25 student表的结构字段名字段名类类型型是否允是否允许为许为空空备备注注snochar(10)不允不允许许学生学生编码编码snamechar(10)不允不允许许姓名姓名ssexchar(2)允允许许性性别别sbirthdaydatetime允允许许出生日期出生日期sscorenumeric(18,0)允允许许入学成入学成绩绩classnochar(8)不允不允许许班班级编码级编码任务一:创建数据表student的表结构【任务分析】可以使用两种方法来解决这个问题:利用Management Studio工具,在图形化的界面中创建student表结构。
17、使用CREATE TABLE语句创建表结构。方法一:操作界面(操作步骤)1.展开需要创建表的数据库“student”并右击“表”,在弹出的快捷菜单中选择“新建表”命令。方法一:操作界面(操作步骤)2.在打开的表设计器对话框中,按照任务要求设置表student各列的列名、数据类型、允许空(非空约束)方法一:操作界面(操作步骤)3.各列创建完成后,单击工具栏中的【保存】按钮,系统自动打开“选择名称”对话框,输入新建的表的名称“student”知识说明数据表的三个要件列名:即字段名,最大长度为128个字符,可以包含汉字、英文字母、数字、下划线及其他符号。同一张表中列名必须唯一。数据类型:即字段的数据
18、类型。见下页。允许空:为复选框,选中表示该列在插入和修改记录时可以不赋值。说明:是对此列的注释练习请在student数据库数据库中建下列表练习:class的表结构练习:department的表结构字段名字段名类型类型是否允许为空是否允许为空备注备注classnochar(8)不允许班级编号classnamechar(16)不允许班级名pnochar(4)不允许专业编号字段名字段名类型类型是否允许为空是否允许为空备注备注deptnochar(2)允许系编号deptnamechar(20)允许系名练习:teacher的表结构字段名字段名类型类型是否允许为空是否允许为空备注备注tnochar(4)不
19、允许编号tnamechar(10)允许姓名tsexchar(2)允许性别tbirthdaydatetime允许出生日期ttitlechar(10)允许职称练习:professional的表结构练习:course的表结构字段名字段名类型类型是否允许为空是否允许为空备注备注pnochar(4)不允许专业编号pnamechar(30)允许专业名deptnochar(2)允许系编号字段名字段名类型类型是否允许为空是否允许为空备注备注cnochar(7)允许课程编号cnamechar(30)允许课程名Creditsreal允许学分练习:teaching的表结构练习:choice的表结构字段名字段名类型类
20、型是否允许为空是否允许为空备注备注tnochar(4)允许教师编号cnochar(7)允许课程编号字段名字段名类型类型是否允许为空是否允许为空备注备注snochar(10)不允许学号cnochar(7)不允许课程编号gradereal允许成绩方法二、用DDL语句创建表43利用SQL的DDL语句创建数据表例:CREATE TABLE STUDENT (ID VARCHAR(13)NOT NULL,name VARCHAR(20),tot_cred INT,dept_name VARCHAR(30)NOT NULL,Sbirthday datetime,Primary key (id),Forei
21、gn key (dept_name)references department如果没有如果没有department表,则暂时不键立外键表,则暂时不键立外键)字段名数据类型是否能空设置主码设置外码练习:用SQL在college数据库数据库建立下表关系模式如下:Department(dept_name,building,budget)dept_name表示系部名称,类型为VARCHAR(30),非空Building表示所在教学楼名称,类型为VARCHAR(30)Budget表示年度预算,类型为 NUMERIC(10,2)Course(course_id,title,credits,dept_nam
22、e)Course_id表示课程编号,类型为VARCHAR(10),非空Title表示课程名称,类型为VARCHAR(40)Credits表示学分,类型为intdept_name表示所属系部,类型为VARCHAR(30)45三、利用SQL修改表461、修改字段2、修改字段属性3、修改字段是否为空4、修改主键5、修改外键-如需在表中添加列如需在表中添加列ALTER TABLE table_nameADD column_name datatype例:ALTER TABLE classADD x int47-如需在表中删除列如需在表中删除列ALTER TABLE table_nameDROP COLU
23、MN column_name例:ALTER TABLE classDROP COLUMN x48-改变表中列的名称改变表中列的名称方法一:先删除列,再建新列方法二:EXEC sp_rename 表名.原列名,新列名例:exec sp_rename class.pnoo,pno49-修改表的名称修改表的名称EXEC sp_rename 表名,新表名例:exec sp_rename class,class1502、改变表中列的数据类型、改变表中列的数据类型ALTER TABLE table_nameALTER COLUMN column_name datatype例:Alter table cla
24、ssAlter column pno char(5)513、通过修改表:建立非空/空约束例:Alter table class alter column pno char(4)not null524、通过修改表:建立主键Use collegegoalter table studentadd constraint newpk11primary key(studentid)注意:如果在建表时,已创建主键,请先删除再建。注意:如果在建表时,已创建主键,请先删除再建。535、通过修改表:建立外键Use collegegoalter table studentadd constraint newfkfo
25、reign key(dept_name)references department54练习:1、在student数据库中分别给学生表,班级表,系部表,课程表中用图形化界面图形化界面的方法建立主、外键。2、删除college表中的主、外键,通过修改语句,在college数据库中分别给学生表,系部表,课程表建立主、外键,要求用SQL语句完成,并保存代码。3、将课堂演示中修改过的表的名称,属性等修改回来。551.鼠标右击“对象资源管理器”窗口的节点【student】的子节点【数据库关系图】,弹出快捷菜单 6、建立数据库关系图显示表间关系、建立数据库关系图显示表间关系2.单击【新建数据库关系图】命令,
26、在“Management Studio”中打开一个数据库关系图的标签页,并且激活了“添加表”对话框,在【表】列表框中选择表student和表class 3.单击【添加】按钮,并单击【关闭】按钮,关闭“添加表”对话框。在【关系图】的标签页中显示已添加的表student和class 4、单击【保存】按钮,会弹出“选择名称”对话框,输入关系图的名称“学生-班级”或者“student_class”,可以将数据库关系图保存在数据库中。597、在数据表中插入数据方法一:图形化界面插入数据方法一:图形化界面插入数据 60方法二:利用代码方法二:利用代码语法:语法:Insert into tablename(
27、first_column,.last_column)values(first_value,.last_value)61四、利用SQL实现完整性约束62知识说明-数据完整性实体完整性:又称行完整性,要求在表中不能存在完全相同的行,而且每行都要具有一个非空且又不重复的主键值。例如:学生管理系统的student表(sno,sname,ssex,)中,sno为主键,该属性不能为空63知识说明-数据完整性参照完整性:又称引用完整性,指表间的规则,作用于有关联的两个或两个以上的表,通过使用主键和外键(或唯一键)之间的关系,使表中的键值在相关表中保持一致。64知识说明-数据完整性用户自定义完整性:指针对某一
28、具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。SQL Server 2012提供非空约束、对属性的check约束、对元组的check约束、触发器等来实现用户的完整性要求。651 1、非空、主、外键约束(前节已学习)、非空、主、外键约束(前节已学习)2、unique约束3、check子句4、创建规则662、建立唯一键67例:ALTER TABLE student1ADD CONSTRAINT uk_bjmcUNIQUE NONCLUSTERED(id)68练习:练习:1、在student数据库中分别向学生表,班级表,系部表,课程表中用图形化界面图形化界面的方法分别插
29、入5条记录2、在college数据库中分别向学生表,系部表,课程表分别插入3条记录,要求用SQL语句完成,并保存代码。3、建立student、college数据库中各表的数据关系图,并保存.、给student、college数据库中的数据表中添加唯一键约束。693、check约束70将数据表的sscore字段设置在306到650的范围之间。【任务分析】假定该校学生的入学成绩的最高分是650,最低分是306分,即在306到650的范围之间,该任务就要为sscore设置检查约束,如果输入的入学成绩超出这个范围,系统会认为输入的信息有误拒绝接收数据,从而保证了数据的完整性 71操作方式创建步骤:展开
30、“对象资源管理器”窗口中的节点“dbo.student”,右击其子节点“约束”,弹出快捷菜单。选择快捷菜单中的“新建约束”命令,打开“CHECK约束”对话框,单击【添加】按钮,单击“表达式”右侧 按钮,弹出“CHECK 约束表达式”对话框。72在其中编辑约束条件“sscore=306 and sscore=306 and sscore、=、=、!、!=比较结果是布尔值,即:true(表达式结果为真)、false及unknown。数据类型为数据类型为text、ntext、image的数据不可用的数据不可用比较运算符。比较运算符。105使用逻辑运算符使用逻辑运算符 and、or、not三种。BET
31、WEENAND运算符查询指定条件范围的记录 使用BETWEENAND运算符查询时在BETWEEN运算符和AND运算符后面都需要给定一个值。其语法格式如下:字段1 BETWEEN 值1 AND 值2 106 集合运算符集合运算符in、not in,用来查找某个值是否属于某个集合记录。,用来查找某个值是否属于某个集合记录。107例:1.查询总分超过500的学生信息2.查询总分在500到1000之间的学生信息3.查询总分在小于500或者大于1000的学生信息4.查询总分既不小于500也不大于1000的学生信息108例:查询班号不是0101的学生信息use studentgoselect*from s
32、tudentwhere not classno=0101109练习:1.查询职称为教授或者年龄超过50岁的女教师信息。2.查询出生日期在1975到1980间的教师信息。3.查询不在1975出生的教师信息。4.查询“09软件技术1班”或者是“09软件测试1班”的班级信息。5.查询既不是“09软件技术1班”也不是“09软件测试1班”的班级信息。110用函数查询 学习目标:知道常用的内置函数的种类会使用字符串等常用的内置函数111程序代码:SELECT name 姓名FROM studentWHERE LEFT(name,1)=陈GO 112Left(字符型表达式,整型表达式)函数返回字符串中从左边
33、开始指定个数的字符。等价于使用通配符“陈%”。常用日期函数GETDATE()-函数以DATETIME 的缺省格式返回系统当前的日期和时间DAY()-函数返回date_expression 中的日期值MONTH()-函数返回date_expression 中的月份值YEAR()-函数返回date_expression 中的年份值DATEDIFF(,)函数返回两个日期之间的天数/月数、年数。113例如:SELECT DATEDIFF(day,2007-12-20,2008-12-30)SELECT DATEDIFF(month,2007-12-20,2008-12-30)SELECT DATEDIFF(year,2007-12-20,2008-12-30)114常用字符串函数LTRIM()-函数把字符串头部(左边)的空格去掉RTRIM()-函数把字符串尾部(右边)的空格去掉LEFT(),RIGHT(),SUBSTRING()-函数返回部分字符串 例如:select substring(abd,2,2)115练习:、查询student表中所有同学的姓名和年龄。、查询student表中所有男同学的姓名和年龄。3、查询所有1994年出生的同学姓名、月份、日期、查询所有同学的姓名以、出生的天数。5、查询并返回所有同学姓名及学号最后两位数6、查询并返回所有姓李的同学的名116
限制150内