1SQL语言SQL(StructuredQueryLanguage,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、Sybase、MicrosoftSQLServer、Access、Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如Select、Insert、Update、Delete、Create和Drop常常被用于完成绝大多数数据库的操作。2SQL功能强大,但是概括起来,它可以分成以下几组:DML(DataManipulationLanguage,数据操作语言):用于检索或者修改数据;DDL(DataDefinitionLanguage,数据定义语言):用于定义数据的结构,比如创建、修改或者删除数据库对象;DCL(DataControlLanguage,数据控制语言):用于定义数据库用户的权限。SQL语言3SQL语言DML组可以细分为以下的几个语句:SELECT:用于检索数据;INSERT:用于增加数据到数据库;UPDATE:用于从数据库中修改现存的数据DELETE:用于从数据库中删除数据。DDL语句可以用于创建用户和重建数据库对象。下面是DDL命令:CREATETABLEALTERTABLEDROPTABLECREATEINDEXDROPINDEXDCL命令用于创建关系用户访问以及授权的对象。下面是几个DCL命令:ALTERPASSWORDGRANTREVOKECREATESYNONYM4第三章表的创建和管理3.1SQL的命名规范和数据类型3.2创建表3.3创建、删除和修改约束3.4增加、删除和修改字段3.5查看表格3.6创建和删除索引3.7删除表5第三章表的创建和管理SQL的命名规范标志符格式:(最多容纳128个字符)且不区分大小写。标志符的首字母必须是:①26个英文字母a-z和A-Z,以及其他一些语言字符,如:汉字。或者是下划线“_”、“@”、“#”。②标志符的首字母后的字符可以是:26个英文字母a-z和A-Z,以及其他一些语言字符,如汉字。或者是下划线“_”、“@”、“#”或“$”。③标志符不允许是T-SQL的保留字。④标志符不允许有空格或特殊字符。63.1数据类型1.整型数据类型2.浮点数据类型3.字符数据类型4.日期和时间数据类型5.文本和图形数据类型6.货币数据类型7.位数据类型8.二进制数据类型9.特殊数据类型10.新增数据类型73.1数据类型1.整型数据类型整型数据类型是最常用的数据类型之一,它主要用来存储数值,可以直接进行数据运算,而不必使用函数转换。(1)int(integer):4个字节(2)Smallint:2个字节(3)Tinyint:1个字节请大家自己计算它们的取值范围83.1数据类型2.浮点数据类型用于存储十进制小数(1)Real:4个字节的,最大7位精确位数,不包括小数点。对于超出数据表示范围的采用四舍五入的方式[例1]如指定某列为Real型数据类型,8.4368768那么该列实际存储的是:8.436877。[例2]如指定某列为Real型数据类型,84.368768那么该列实际存储的是:84.36877。(2)Float可以精确到第15位小数,其范围从-1.79E-308到1.79E+308。93.1数据类型(3)Decimal和numeric:可以提供小数所需要的实际存储空间,可以用5-17个字节来存储。也可以将其写为decimal(p,s)的形式。(1p=38;0=s=p)注意:数值类型的总位数不包括小数点。例如:decimal(10,5),表示共有10位数,其中整数5位,小数5位。103.1数据类型[例1]如指定某列的精度为6,小数位数为3,即decimal(6,3),则向某记录的该例附值86.436876,①如果使用企业管理器录入的方法:那么该列实际存储的是:86.436。②如果使用T-SQL语句的方法:例如代码如下:InsertInto表名Values(86.436876)该列实际存储的是:86.437请大家试验一下上题如果输入1234.567的结果是什么?113.1数据类型如指定某列的精度为8,小数位数为5,即numeric(8,3),则向某记录的该例附值12685.564986,①如果使用企业管理器录入的方法:那么该列实际存储的是:12685.564。②如果使用T-SQL语句的方法:例如代码如下:InsertInto表名Values(12685.564986)该列实际存储的是:12685.565注意:数值型数据时,其小数位数必须小于精度;注意什么时候进行四舍五入。123.1数据类型3.字符数据类型用来存储各种字母、数字符号和特殊符号。在使用时需要在其前后加上英文单引号或者双引号。(1)Char:占用1个字节。其定义形式为:char(n)如果实际数据的字符长度短于给定的最大长度,则多余的字节会被空格填充。如果实际数据的字符长度超过了给定的最大长度,则超过的字符将会被截断。使用双引号或单引号将字符型变量括起来。n的取值为1-8000。默认n的值为1。133.1数据类型(2)Varchar:可以存储长达8000个字符的可变长度字符串,和char类型不同varchar类型根据输入数据的实际长度而变化。其定义形式为:varchar(n)当每列数据没有达到规定的字符数时,并不会在多余的字节上填充空格。可以有效的节省空间。(3)Nchar:采用Unicode(统一字符编码标准)字符集每个Unicode字符用两个字节为一个存储单位。范围是1-4000。其定义形式为:nchar(n)(3)Nvarchar:使用Unicode字符集的Varchar数据类型。其定义形式为:nvarchar(n),范围是0-4000。143.1数据类型[例1]某例的数据类型为char(18),而输入的字符串为“shanghai”,则存储的字符是shanghaiƀƀƀƀƀƀƀƀƀƀ。(ƀ表示空格)[例2]表中某例的数据类型为varchar(18),而输入的字符串为“shanghai”,则存储的字符是shanghai。注意:若存储的字符串长度不足n时,则在串尾添加空格。注意:若存储的字符串长度不足n时,按实际长度输入。153.1数据类型3.日期和时间数据类型(1)Datetime:占用8个字节。用于存储日期和时间的结合体,可以存储从公元1753年1月1日零时起~公元9999年12月31日23时59分59秒之间的所有日期和时间,其精确度可达三百分之一秒,即3.33毫秒。当存储datetime数据类型时,默认的格式是:MMDDYYYYhh:mmA.M./P.M。当插入数据或者在其它地方使用datetime类型时,需要用单引号把它括起来。163.1数据类型默认January1,190012:00A.M。可以接受的输入格式如下:Jan31999、JAN31999January31999Jan199931/1/19901999-1-119993Jan和1999Jan3datetime数据类型允许使用/、-和.作为不同时间单位间的分隔符。(2)Smalldatetime:存储从1900年1月1日到2079年6月6日内的日期。占4个字节。在没有指定小时以上的精度的数据时,会自动设置datetime和smalldatetime数据的时间为00:00:00。173.1数据类型5.文本和图形数据类型(1)Text:容量可以在1-231个字节。在定义Text数据类型时,不需要指定数据长度,SQLServer会根据数据的长度自动为其分配空间。(2)ntext:采用unicode标准字符集,用于存储大容量文本数据。其理论上的容量为2G个字节。(3)Image:一组二进制的数据流。用于存储照片、目录图片或者图画,其理论容量为2G个字节。183.1数据类型6.货币数据类型(1)Money:用于存储货币值,数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为-263--263-1,精度为货币单位的万分之一。(2)Smallmoney:货币值有两个2字节整数组成。其存储范围为-213738.3368―213738.3367。当为money或smallmoney的表输入数据时,必须在有效位置前面加一个货币单位符号(如$或其它货币单位的记号)。193.1数据类型7.位数据类型Bit称为位数据类型,有两种取值:0和1。在输入0以外的其它值时,系统均把它们当1看待。8.二进制数据类型(1)Binary:其定义形式为binary(n),数据的存储长度是固定的,即n+4字节,当输入的二进制数据长度小于n时,余下部分填充0。二进制数据类型的最大长度(即n的最大值)为8KB,常用于存储图像等数据。(2)Varbinary:其定义形式为varbinary(n),数据的存储长度是变化的,最大长度不可以超过8KB。在输入二进制常量时,需在该常量前面加一个前缀0x。203.1数据类型9.特殊数据类型(1)Timestamp:也称作时间戳数据类型。是一种自动记录时间的数据类型,主要用于在数据表中记录其数据的修改时间。它提供数据库范围内的唯一值。(2)Uniqueidentifier:也称作唯一标识符数据类型。Uniqueidentifier用于存储一个16字节长的二进制数据类型,它是SQLServer根据计算机网络适配器地址和CPU时钟产生的全局唯一标识符代码(GloballyUniqueIdentifier,简写为GUID)。10.新增数据类型(1)Bigint:占用8个字节。(2)sql_variant:用于存储除文本、图形数据和timestamp类型数据外的其它任何合法的SQLServer数据。(3)table:用于存储对表或者视图处理后的结果集。213.1数据类型3.1.2自定义数据类型①使用企业管理器创建②利用系统存储过程创建sp_addtype[@typename=]type,[@phystype=]system_data_type[,[@nulltype=]‘null_type’][,[@owner=]‘owner_name’]223.1数据类型type:指定用户定义的数据类型的名称。system_data_type:指定相应的系统提供的数据类型的名称及定义。注意,不能使用timestamp数据类型,当所使用的系统数据类型有额外说明时,需要用引号将其括起来。null_type:指定用户自定义数据类型的null属性,其值可以为‘null’、‘notnull’或者‘nonull’。默认与系统默认的null属性相同。owner_name:指定用户自定义数据类型的所有者。233.1数据类型删除用户自定义数据1.使用企业管理器2.利用系统存储过程sp_droptype[@typename=]‘type’243.2创建表表是包含数据库中所有数据的数据库对象,用来存储各种各样的信息。在SQLServer2000中,一个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列,也就是可以定义1024个字段。在同一数据库的不同表中,可以有相同的字段,但在同一个表中不允许有相同的字段,而且每个字段都要求数据类型相同。SQLServer2000提供了两种方法创建数据库表,第一种方法是利用企业管理器(EnterpriseManager)创建表;另一种方法是利用Transact-SQL语句中的create命令创建表。253.2.1.利用EnterpriseManager创建表在EnterpriseManager中,展开指定的服务器和数据库,打开想要创建新表的数据库,用右键单击表