资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,5,章,SQL Server,表的管理,1,本章内容,5.1 SQL Server,表概述,5.2,表的创建与维护,5.3,表中数据的维护,2,5.1 SQL Server,表概述,数据类型,SQL Server,支持,4,种基本数据类型:字符和二进制数据类型、日期时间数据类型、逻辑数据类型、数字数据类型,用于各类数据值的存储、检索和解释。,1,字符和二进制数据类型,(1),字符数据类型,字符数据类型用于存储汉字、英文字母、数字符号和其他各种符号。,char,数据类型,varchar,数据类型,text,数据类型,SQL Server,允许使用多国语言,采用,Unicode,标准字符集。为此,SQL Server,提供多字节的字符数据类型:,nchar(n,),、,nvarchar(n,),和,ntext,。,3,5.1 SQL Server,表概述,(2),二进制数据类型,SQL Server,二进制数据类型用于存储二进制数或字符串。,SQL Server,的,3,种有效二进制数据类型:,binary,数据类型,varbinary(n,),数据类型,image,数据类型,4,5.1 SQL Server,表概述,2,日期时间数据类型,日期时间数据类型用于存储日期和时间数据。,SQL Server,支持两种日期时间数据类型:,datetime,和,smalldatetime,。,3,逻辑数据类型,SQL Server,的逻辑数据类型为,bit,,适用于判断真,/,假的场合,长度为一个字节。,5,5.1 SQL Server,表概述,4,数字数据类型,SQL Server,提供了多种方法存储数值,,SQL Server,的数字类型大致可分为,4,种基本类型。,(1),整数数据类型,有,4,种整数数据类型:,int,、,smallint,、,tinyint,和,bigint,,用于存储不同范围的值。,(2),浮点数据类型,浮点数据用来存储系统所能提供的最大精度保留的实数数据。,6,5.1 SQL Server,表概述,(3),精确数值数据类型,精确数值数据类型用于存储有小数点且小数点后位数确定的实数。,格式:,decimal(p,s),numeric(p,s),(4),货币数据类型,除了,decimal,和,numeric,类型适用于货币数据的处理外,,SQL Server,还专门提供了两种货币数据类型:,money,和,smallmoney,。,7,5.1 SQL Server,表概述,5,其他数据类型,除了以上,4,种基本数据类型,,SQL Server,还支持其他一些数据类型。,(1)Timestamp,:时间戳数据类型,用于自动记录插入或删除操作的时间。,注意:服务器不允许用户指定时间戳值。,(2)sql_variant,:可变数据类型。该类型的变量可用来存放大部分,SQL Server,数据类型的值,最大长度为,8016,字节,不支持,text,、,ntext,、,timestamp,和,sql_variant,类型。,(3)table,:表类型。这是一种特殊的数据类型,存储供以后处理的结果集。,(4)uniqueidentifier,:,GUID,类型,(Global Unique,IDentifier,全局惟一标识符,),。,8,5.1 SQL Server,表概述,空值,(NULL),空值不同于空白,(,空字符串,),或数值零,通常表示未填写、未知,(Unknown),、不可用或将在以后添加的数据。,约束,约束定义了关于列中允许值的规则,,SQL Server,通过限制列中数据、行中数据和表之间数据来保证数据的完整性。,(1),非空值约束,(Not Null),(2),默认约束,(Default),(3),惟一性约束,(Unique,),(4),主键约束,(Primary Key,,也称主关键字约束,),(5),外键约束,(Foreign Key,,也称为外部关键字约束,),9,5.2,表的创建与维护,使用企业管理器对表进行操作,使用表设计器创建表或修改表,使用数据库设计器,(,关系图,),在企业管理器中删除表,使用,Transact-SQL,语句创建表,语法格式:,CREATE TABLE,database_name.owner.|owner,.,table_name,(,|,column_name,AS,computed_column_expression,|:=CONSTRAINT,constraint_name,|PRIMARY KEY|UNIQUE,.n ),ON,filegroup|DEFAULT,TEXTIMAGE_ON,filegroup,|DEFAULT,10,5.2,表的创建与维护,例,5-1,简单的表定义。,USE Sales,GO,CREATE TABLE employee,(,employee_id,char(4)NOT NULL,employee_name,char(8)NOT NULL,sex char(2)NOT NULL,birth_date,datetime,NOT NULL,hire_date,datetime,NOT NULL,address varchar(50),telephone char(8),wages money,department_id,char(4)NOT NULL,resume text NOT NULL,),11,5.2,表的创建与维护,例,5-2,为表指定文件组。,CREATE TABLE,Sales.dbo.supplier,(,supplier _idchar(5)NOT NULL,supplier _name varchar(50)NOT NULL,linkman_name,varchar(8),address varchar(50),telephonechar(12)NOT NULL,)ON PRIMARY,12,5.2,表的创建与维护,例,5-3,对计算列使用表达式。,CREATE TABLE,salarys,(,姓名,varchar(10),基本工资,money,奖金,money,总计,AS,基本工资,+,奖金,),13,5.2,表的创建与维护,例,5-4,定义表,autouser,自动获取用户名称。,CREATE TABLE,autouser,(,编号,int,identity(1,1)NOT NULL,用户代码,varchar(18),登录时间,AS,Getdate,(),用户名,AS,User_name,(),),14,5.2,表的创建与维护,例,5-5,创建临时表。,CREATE TABLE#students,(,学号,varchar(8),姓名,varchar(10),性别,varchar(2),班级,varchar(10),),15,5.2,表的创建与维护,使用,Transact-SQL,语句修改表,语法格式:,ALTER TABLE,table_name,ALTER COLUMN,column_name,new_data_type,(precision,scale),NULL|NOT NULL,|ADD|DROP ROWGUIDCOL ,|ADD,|,column_name,AS,computed_column_expression,.n,|WITH CHECK|WITH NOCHECK ADD ,.n,|DROP CONSTRAINT,constraint_name,|COLUMN,column_name,.n,|CHECK|NOCHECK CONSTRAINT ALL|,constraint_name,.n,|ENABLE|DISABLE TRIGGER ALL|,trigger_name,.n,16,5.2,表的创建与维护,例,5-6,更改表以添加新列,然后再删除该列。,ALTER TABLE employee,ADD email varchar(20)NULL,GO,sp_help,employee,ALTER TABLE employee,DROP COLUMN email,GO,sp_help,employee,17,5.2,表的创建与维护,例,5-7,将表,employee,的列,address,改为,varchar(150),数据类型,并且不允许为空。,ALTER TABLE employee,ALTER COLUMN address varchar(150)NOT NULL,GO,注意:,一定要确认已有的数据中列,address,均不为空后,才能进行此操作。,18,5.2,表的创建与维护,使用,Transact-SQL,语句删除表,语句格式如下:,DROP TABLE,table_name,其中,,table_name,是要删除的表名。,注意:,(1),定义有外键约束的表必须先删除外键约束,才能删除。,(2),系统表不能使用,DROP TABLE,语句删除。,19,5.2,表的创建与维护,例,5-8,删除当前数据库内的表。,USE Sales,GO,DROP TABLE employee,本例从当前数据库,Sales,中删除,employee,表及其数据和索引。,例,5-9,删除另外一个数据库内的表。,DROP TABLE,Sales.dbo.employee,本例删除,Sales,数据库内的,employee,表。可以在任何数据库内执行此操作。,20,5.3,表中数据的维护,对表中数据进行维护有两种方法:,使用企业管理器,使用,Transact-SQL,语句,插入数据,语法格式如下:,INSERT INTO,table_name,|,view_name,(,column_list,),VALUES,(,value_list,),|,derived_table,|,execute_statement,|DEFAULT VALUES,21,5.3,表中数据的维护,例,5-10,使用简单的,INSERT,语句。,USE Sales,GO,INSERT Supplier,VALUES(S001,华科电子有限公司,施宾彬,朝阳路,56,号,2636565 ),例,5-11,显式指定列列表。,INSERT,Sales.dbo.Supplier,(,supplier_id,supplier_name,linkman_name,address,telephone),VALUES(S001,华科电子有限公司,施宾彬,朝阳路,56,号,2636565),22,5.3,表中数据的维护,修改数据,语法格式:,UPDATE,table_name|view_name,SET,column_name|variable,=expression,.n,FROM ,.n,WHERE,23,5.3,表中数据的维护,例,5-14,使用简单的,UPDATE,语句。,UPDATE Customer2,SET,linkman_name,=,佚名,address=NULL,telephone=,例,5-15,在,UPDATE,语句中使用,WHERE,子句。,UPDATE Customer2,SET telephone=0731-+telephone,WHERE,LEN(telephone,)=7,24,5.3,表中数据的维护,例,5-17,在,UPDATE,语句中使用,SELECTTOP,语句。,UPDATE Goods,SET,Unit_Price,=,Unit_Price,*0.9,FROM Goods,(SELECT TOP 10,Goods_ID,SUM(Order_Num,)AS,Total_Num,FROM,Sell_Order,GROUP BY,Goods_ID,ORDER BY,Total_Num,DESC,)AS,Total_Sum,WHERE,Goods.Goods_id,=,Total_Sum.Goods_id,25,5.3,表中数据的维护,删除数据,1,DELETE,语句,DELETE,语句可删除表或视图中的一行或多行,每一行的删除都将被记入日志。,DELETE,语句的语法格式如下:,DELETE FROM,table_name|view_name,FROM ,.n,WHERE sea,26,5.3,表中数据的维护,例,5-18,不带参数使用,DELETE,命令删除所有行。,USE Sales,GO,DELETE Customer2,本例从,Customer2,表中删除所有行。,注意:,将,DELETE,语句与,DROP TABLE,语句的功能区分开来。,例,5-19,带,WHERE,子句的,DELETE,语句,有条件地删除行。,DELETE FROM,Sell_Order,WHERE,Custom_ID,=C0003,27,5.3,表中数据的维护,例,5-20,在,DELETE,中使用联接或子查询。,-,基于,Transact-SQL,,使用表的联接,DELETE,Sell_Order,FROM,Sell_Order,SO INNER JOIN customer2 C,ON,SO.customer_id,=,C.customer_id,WHERE,C.address,LIKE,东方市,%,-,等同于下列命令,DELETE,Sell_Order,FROM,Sell_Order,SO,customer2 C,WHERE,SO.customer_id,=,C.customer_id,AND,C.address,LIKE,东方市,%,-,基于,SQL-92,标准,须使用子查询,DELETE FROM,Sell_Order,WHERE,customer_id,IN,(SELECT,customer_id,FROM customer2,WHERE address LIKE,东方市,%),28,5.3,表中数据的维护,2,TRUNCATE TABLE,语句,语法格式:,TRUNCATE TABLE,table_name,其中,table_name,是要清空的表的名称。,例,5-21,使用,TRUNCATE TABLE,语句清空表。,TRUNCATE TABLE customer2,29,本章小结,(1),表的相关概念:表是数据库中数据的实际存储处所,每个表代表一个实体。表由行和列组成,每行标识实体的一个个体,每列代表实体的一个属性。,(2),数据类型:数据类型描述并约束了列中所能包含的数据的种类、所存储值的长度或大小、数字精度和小数位数,(,对数值数据类型,),。,(3),空值:未对列指定值时,该列将出现空值。空值不同于空字符串或数值零,通常表示未知。空值会对查询命令或统计函数产生影响,应尽量少使用空值。,(4),约束:约束是数据库自动保持数据完整性的机制,它是通过限制列中数据、行中数据和表之间数据来保持数据完整性。,SQL Server 2000,支持,Not Null,、,Default,、,Check,、,Primary Key,、,Foreign Key,、,Unique,等,6,种约束。关于约束的操作将在第,8,章详细介绍。,(5),可以使用企业管理器和,Transact-SQL,语句创建表并对表进行维护,包括修改和删除等操作。,(6),可以使用企业管理器和,Transact-SQL,语句对表中数据进行编辑,包括插入、更新和删除等操作。,30,
展开阅读全文