《SQL语言基础》PPT课件.ppt
《《SQL语言基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《SQL语言基础》PPT课件.ppt(194页珍藏版)》请在三一办公上搜索。
1、数据库管理系统,授课教师 吴涛,第4章 SQL语言基础,4.1 SQL语言概述4.2系统提供的数据类型4.3 用户定义数据类型4.4 T-SQL语言的一些基础知识4.5 变量,2/34,概述,SQL(Structured Query Language)是用户操作关系数据库的通用语言。包含数据定义、数据查询、数据操作和数据控制等与数据库有关的全部功能。已成为关系数据库的标准语言。所有的关系数据库管理系统都支持SQL。,3/34,4.1 SQL语言概述,4.1.1 SQL语言的发展 4.1.2 SQL语言的特点4.1.3 SQL语言功能概述,4/34,4.1.1 SQL语言的发展,1986年10月
2、美国ANSI公布最早的SQL标准。1989年4月,ISO提出了具备完整性特征的SQL,称为SQL-89(SQL1)。1992年11月,ISO又公布了新的SQL标准,称为SQL-92(SQL2)(以上均为关系形式)。1999年颁布SQL-99(SQL3),是SQL92的扩展。,5/34,4.1.2 SQL语言的特点,1.一体化2.高度非过程化3.简洁4.使用方式多样,6/34,4.1.3 SQL语言功能概述,四部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。,7/34,4.2 系统提供的数据类型,4.2.1 数值类型 4.2.2 字符串类型4.2.3 日期时间类型4.2.4 货币类
3、型,8/34,准确数值类型,9/34,近似数值数类型,10/34,字符串类型,普通编码字符串类型统一字符编码字符串类型二进制字符串类型,11/34,普通编码字符串类型,说明:如果在使用char(n)或varchar(n)类型时未指定n,则默认长度为1。如果在使用CAST和CONVERT函数时未指定n,则默认长度为30。,12/34,统一字符编码字符串类型,13/34,二进制字符串类型,14/34,日期时间类型,15/34,日期时间类型(续),16/34,货币类型,17/34,4.3 用户定义数据类型,实际上是为系统数据类型起了个别名,因此也称为别名类型。当在多个表中存储语义相同的列时,一般要求
4、这些列的数据类型和长度应该完全一致。为避免语义相同的列在不同的地方定义不一致,可以使用用户定义的数据类型。,18/34,创建用户定义数据类型,CREATE TYPE schema_name.type_name FROM base_type(precision,scale)NULL|NOT NULL 例1创建一个名为telephone的数据类型,其相应的系统数据类型为:char(8),不允许空 CREATE TYPE telephone FROM CHAR(8)NOT NULL,19/34,4.4 T-SQL语言的一些基础知识,语句批一组SQL语句集合 作为一个执行单元 结束标记:GO脚本存储在
5、文件中的SQL语句集合注释单行注释符:-多行注释符:/*/,20/34,4.5 变量,变量的种类4.5.2 变量的声明与赋值,21/34,变量种类,(1)局部变量:变量名:用户使用(2)全局变量:变量名:系统用于记录信息,22/34,声明局部变量,DECLARE local_variable AS data_type|=value,.n local_variable:变量名。必须以“”开头,且最多可包含128个字符。data_type:任何系统提供的数据类型或用户定义的数据类型。但不能是text、ntext或image。,23/34,给变量赋值,SET local_variable=expre
6、ssion|local_variable+=|-=|*=|/=|%=|&=|=|=expression SELECT local_variable=expression,24/34,显示变量的值,PRINT msg_str|local_variable|string_exprmsg_str:字符串或Unicode字符串常量。local_variable:任何有效的字符数据类型的变量。local_variable的数据类型必须为char 或varchar,或者能够隐式转换为这些类型的数据。string_expr:返回字符串的表达式。可包括串联的文字值、函数和变量。,25/34,示例,计算两个变量
7、的和值,然后显示其结果DECLARE x int=10DECLARE y int=20DECLARE z intSET z=x+yPrint z,26/34,全局变量,是SQL Server系统内部使用的变量。通常存储SQL Server的配置设置值和性能统计数据。不能定义与全局变量同名的局部变量。用户可查询全局变量值。例:SELECT ERROR:获取系统的错误信息SELECT ServerName:获取本地服务器名称SELECT Version:获取当前SQL Server版本号,27/34,4.6 流程控制语句,1语句块 BEGIN 语句序列 END 2.分枝语句 IF 条件表达式 语句
8、块 ELSE 语句块 3循环语句 WHILE 条件表达式 语句块,28/34,T-SQL提供的流程控制语句,29/34,1BEGIN END语句,定义一个语句块,它将一系列T-SQL语句包容起来,使得它们可以作为一个语句块来执行。BEGIN sql_statement|statement_block END,30/34,2.IF ELSE 语句,IF Boolean_expression sql_statement|statement_block ELSE sql_statement|statement_block,31/34,示例,DECLARE x int,y int,z intSET x
9、=40Set y=30IF(x y)SET z=x-yELSE SET z=y-xPrint xPrint yPrint z,32/34,3.WHILE语句,WHILE Boolean_expression sql_statement|statement_block BREAK sql_statement|statement_block CONTINUE sql_statement|statement_block,33/34,示例,计算1+2+3+100的和值。DECLARE i int,sum intSET i=1SET sum=0WHILE i=100BEGIN SET sum=sum+i
10、 SET i=i+1ENDPRINT sum,34/34,5.1 基本表5.2 分区表*,第5章 数据表,35/38,5.1 基本表,CREATE TABLE database_name.schema_name.|schema_name.table_name(|,.n)ON partition_scheme_name(partition_column_name)|filegroup|default;:=column_name AS computed_column_expression,36/38,基本表定义(续),:=column_name COLLATE collation_name NUL
11、L|NOT NULL CONSTRAINT constraint_name DEFAULT constant_expression|IDENTITY(seed,increment),37/38,示例:创建学生表,CREATE TABLE Student(Sno CHAR(7)PRIMARY KEY,Sname NCHAR(5)NOT NULL,SID CHAR(18)UNIQUE,Ssex NCHAR(1)DEFAULT 男,Sage TINYINTCHECK(Sage=15 AND Sage=45),Sdept NVARCHAR(20),38/38,创建课程表,CREATE TABLE Co
12、urse(Cno CHAR(6)PRIMARY KEY,Cname NVARCHAR(20)NOT NULL,Credit NUMERIC(3,1)CHECK(Credit0),Semester TINYINT),39/38,创建选课表,CREATE TABLE SC(Sno CHAR(7)NOT NULL,Cno CHAR(6)NOT NULL,Grade TINYINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno),40/38,示例:创建
13、有计算列的表,CREATE TABLE CompTable(low int,high int,myavg AS(low+high)/2),41/38,示例:创建包含标识列的表,标识列的种子值为1,增量值也为1。CREATE TABLE IDTable(SID INT IDENTITY(1,1)NOT NULL,Name VARCHAR(20),42/38,说明,一般情况下,在插入数据时不能为标识列提供值。标识列的值是系统自动生成的。如果确实要为标识列提供值,则必须将表的IDENTITY_INSERT属性设置为ON(默认时该属性的值为OFF)。SET IDENTITY_INSERT databa
14、se_name.schema_name.table ON|OFF,43/38,修改表结构,可以使用ALTER TABLE语句实现。ALTER TABLE语句可以对已定义的表进行添加列、删除列、修改列定义等操作,也可以进行添加和删除约束的操作。,44/38,ALTER TABLE database_name.schema_name.|schema_name.table_name ALTER COLUMN column_name type_schema_name.type_name(precision,scale|max)NULL|NOT NULL|ADD|,.n|DROP CONSTRAINT
15、constraint_name|COLUMN column_name,.n;,45/38,示例,例2为SC表添加“修课类别”列,此列的定义为:Type NCHAR(1),允许空。ALTER TABLE SC ADD Type NCHAR(1)NULL例3将新添加的Type列的数据类型改为NCHAR(2)。ALTER TABLE SC ALTER COLUMN Type NCHAR(2),46/38,示例,例4为Type列添加限定取值范围为必修、重修、选修的约束。ALTER TABLE SC ADD CHECK(Type IN(必修,重修,选修)例5删除SC表的“Type”列。ALTER TAB
16、LE SC DROP COLUMN Type,47/38,删除表,DROP TABLE,例6删除test表。DROP TABLE test注意:如果被删除的表中有其他表对它的外键引用约束,则必须先删除外键所在的表,然后再删除被引用的表。,48/38,5.2 分区表,分区表是把数据按某种标准划分成区域存储在不同的文件组中,使用分区可以快速而有效地管理和访问数据子集,从而使大型表或索引更易于管理。合理的使用分区会在很大程度上提高数据库的性能。分区表是将表中的数据按水平方式划分成不同的子集,这些数据子集存储在数据库的一个或多个文件组中。,49/38,比较适于进行分区的情况,表中数据量大;该表包含(或
17、将包含)以多种不同方式使用的大量数据。数据是分段的,比如数据以年为分隔。对表的常规维护操作只针对表的一个数据子集。,50/38,分区表特点,分区表是从物理上将一个大表分成几个小表,但从逻辑上来看,还是一个大表。对用户而言,所面对的依然是一个大表,他们不需要考虑操作的年份对应的小表,用户只要将记录插入到大表逻辑表中就可以了,数据库管理系统会自动将数据放置到它对应的那个物理小表中。,51/38,创建分区表步骤,1创建分区函数。告诉SQL Server以什么方式对表进行分区。2创建分区方案。将分区函数生成的分区映射到文件组中去。分区函数的作用是告诉SQL Server如何将数据进行分区,而分区方案的
18、作用则是告诉SQL Server将已分区的数据放在哪个文件组中。3使用分区方案创建表。说明:在创建分区表之前,最好先创建数据库文件组。,52/38,1.创建分区函数,CREATE PARTITION FUNCTION partition_function_name(input_parameter_type)AS RANGE LEFT|RIGHT FOR VALUES(boundary_value,n),53/38,示例,例1在 int 列上创建左侧分区函数。下列分区函数将表分为四个分区。CREATE PARTITION FUNCTION myRangePF1(int)AS RANGE LEFT
19、 FOR VALUES(1,100,1000);,54/38,示例,例2在int列上创建右侧分区函数。CREATE PARTITION FUNCTION myRangePF2(int)AS RANGE RIGHT FOR VALUES(1,100,1000),55/38,示例,例3在datetime列上创建右侧分区函数。将表分成12个分区,每个分区对应一个月的值CREATE PARTITION FUNCTION myDateRangePF1(datetime)AS RANGE RIGHT FOR VALUES(20110201,20110301,20110401,20110501,201106
20、01,20110701,20110801,20110901,20111001,20111101,20111201);,56/38,示例,例3在字符列上创建右侧分区函数。下列分区函数将表分为四个分区。CREATE PARTITION FUNCTION myRangePF3(char(20)AS RANGE RIGHT FOR VALUES(EX,RXE,XR);,57/38,2.创建分区方案,CREATE PARTITION SCHEME partition_scheme_nameAS PARTITION partition_function_name ALL TO(file_group_nam
21、e|PRIMARY,.n);,58/38,示例,例4.先创建一个分区函数,该函数将表分为四个分区。然后创建一个分区方案,在其中指定拥有这四个分区中每一个分区的文件组CREATE PARTITION FUNCTION myRangePF1(int)AS RANGE LEFT FOR VALUES(1,100,1000);GOCREATE PARTITION SCHEME myRangePS1AS PARTITION myRangePF1TO(test1fg,test2fg,test3fg,test4fg);,59/38,例4的分区情况,在某表上对分区依据列col1使用分区函数myRangePF1
22、后,对该表的分区进行分配的情况:,60/38,示例,例5.创建将多个分区映射到同一个文件组的分区方案。如果要将所有分区都映射到同一个文件组,可使用ALL关键字。但如果是将多个(不是全部)分区映射到同一个文件组,则必须分别列出文件组名称 CREATE PARTITION FUNCTION myRangePF2(int)AS RANGE LEFT FOR VALUES(1,100,1000);GO CREATE PARTITION SCHEME myRangePS2AS PARTITION myRangePF2TO(test1fg,test1fg,test1fg,test2fg),61/38,例5
23、分区情况,在某表上对分区依据列col1使用分区函数myRangePF2后,对该表的分区进行分配的情况,62/38,示例,例6.创建将所有分区映射到同一个文件组的分区方案。CREATE PARTITION FUNCTION myRangePF3(int)AS RANGE LEFT FOR VALUES(1,100,1000);GOCREATE PARTITION SCHEME myRangePS3 AS PARTITION myRangePF3 ALL TO(test1fg),63/38,示例,例7.创建指定“NEXT USED”文件组的分区方案。本示例所创建的分区方案列出的文件组数超过了关联的
24、分区函数所创建的分区数。CREATE PARTITION FUNCTION myRangePF4(int)AS RANGE LEFT FOR VALUES(1,100,1000);GOCREATE PARTITION SCHEME myRangePS4AS PARTITION myRangePF4TO(test1fg,test2fg,test3fg,test4fg,test5fg)执行该语句时系统返回以下消息:分区方案myRangePS4已成功创建。test5fg在分区方案myRangePS4中标记为下次使用的文件组。,64/38,示例,例8.本示例首先创建一个分区函数,将数据分为四个分区。然
25、后创建一个分区方案,最后创建使用该分区方案的表。本示例假定数据库中已经存在文件组。CREATE PARTITION FUNCTION myRangePF1(int)AS RANGE LEFT FOR VALUES(1,100,1000);GOCREATE PARTITION SCHEME myRangePS1 AS PARTITION myRangePF1 TO(test1fg,test2fg,test3fg,test4fg);GOCREATE TABLE PartitionTable(col1 int,col2 char(10)ON myRangePS1(col1);,65/38,第6章 数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL语言基础 SQL 语言 基础 PPT 课件
链接地址:https://www.31ppt.com/p-5453817.html