sqlserver常用关键字、数据类型和常用语法_第1页
sqlserver常用关键字、数据类型和常用语法_第2页
已阅读5页,还剩5页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 10/10sqlserver常用关键字、数据类型和常用语法 SQL Server 2008 常用关键字、数据类型和常用语法 常用关键字: SQL server 2008一共大约有180多个关键字。简要分为主要关键字、辅助关键字和函数类关键字。本文就常用的这三类关键字进行语法说明和用例。 说明:1、比较好的习惯是,数据库名以D_开头,表名用T_开头,字段名以F_开头,这样可以防止和关键字重名。 2、如果确实用到了系统关键字,就要在关键上加方括号,以与关键字进行区别。例如有一个用户表被命名为USER,则查询该表内容的时候:SELECT * FROM USER语句是错误的,应该是SELECT *

2、FROM USER。因为USER是关键字。 数据类型: SQL Server 2008一共有36种数据类型。具体如下: 常用语法: 一、数据库 【创建数据库】 CREATE DATABASE 【修改数据库】 ALTER DATABASE 【删除数据库】 DROP DATABASE 二、表结构 【创建数据表】 1、设定字段是允许空,非空、标识列,自增和主键约束。 CREATE TABLE T_CUSTOMER-表名 (CUSTOMERID INT IDENTITY(1,1),-客户ID,标识列,从开始,每次自增 COMPANYNAME NVARCHAR(50)NOT NULL,-,如果不显示指明

3、NOT NULL,系统默认是允许空的USERNAME NVARCHAR(10)NOT NULL,-联系人姓名,非空 PHONENUMBER CHAR(11)NULL,-联系电话,允许为空 CONSTRAINT T_CUSTOMER_PrimaryKey PRIMARY KEY (CUSTOMERID)-设定USERID为主键,用括号括起来 /*每个单词之间是空格隔开,每个字段之间用单引号隔开,整个字段定义部分用括号括起来*/ /*T_RegUser_PrimaryKey是约束名*/ 2、设定字段是UNIQUEIDENTIFIER数据类型,唯一性约束,CHECK约束和默认值约束。 CREATE

4、TABLE T_CUSTOMER (CUSTOMERID UNIQUEIDENTIFIER UNIQUE,-客户ID,UNIQUEIDENTIFIER类型,唯一性约束 COMPANYNAME NVARCHAR(50)NOT NULL UNIQUE,-公司名称,非空,唯一性约束 USERNAME NVARCHAR(10)NOT NULL, PHONENUMBER CHAR(11)NULL, AGE TINYINT NULL CHECK(AGE0),-联系人年龄,允许空,check约束必须大于 MODIFIEDDATE DATE NULL CONSTRAINT T_CUSTOMER_DEFAULT

5、 DEFAULT GETDATE(),-默认值约束,并调用SQL函数GETDATE() CONSTRAINT T_CUSTOMER_PrimaryKey PRIMARY KEY (CUSTOMERID) 3、设定字段外键 CREATE TABLE T_ORDER-订单表 (ORDERID INT IDENTITY(1,1),-订单ID,标识字段,自增 PRODUCT NVARCHAR(50)NOT NULL,-产品 PAYMENT MONEY NOT NULL,-货款 ORDER_CUSTOMERID UNIQUEIDENTIFIER NOT NULL,-客户ID,为外键,外键内容是T_CUS

6、TOMER表的CUSTOMERID列 CONSTRAINT T_ORDER_PrimaryKey PRIMARY KEY(ORDERID),-设置ORDERID为主键 CONSTRAINT T_ORDER_T_CUSTOMER_ForeignKey FOREIGN KEY(ORDER_CUSTOMERID)REFERENCES T_CUSTOMER(CUSTOMERID) /*设定外键基本语法*/ CONSTRAINT FOREIGN KEY()REFERENCES () /*设置外键,T_ORDER_T_CUSTOMER_ForeignKey是外键约束名,FOREIGN KEY后边是本表内要

7、被设置的外键列 REFERENCES后边是主键所在的表,括号内是主键表的链接列*/ /*表名后的所有内容,都要拿括号括起来*/ /*外键的数据类型要和主键一模一样,哪怕主键是UNIQUEIDENTIFIER也必须设置成一样*/ 【修改表名】 /*修改表名,可能会破坏脚本和存储过程。*/ EXEC SP_RENAME, 示例: EXEC SP_RENAMET_CUSTOMER2,T_CUSTOMER22 【修改表结构】 1、添加列和列的约束 /*添加列、添加唯一性约束*/ ALTER TABLE ADD BIT NOT NULL,-添加多个列不用括号,用逗号分开即可 INT NOT NULL U

8、NIQUE-声明的时候,和创建表的时候一样 示例: ALTER TABLE T_CUSTOMER ADD GENDER BIT NOT NULL,-添加多个列不用括号,用逗号分开即可 CUSTOMERADDRESS INT NOT NULL UNIQUE-声明的时候,和创建表的时候一样 2、删除列 /*删除列*/ ALTER TABLE DROP COLUMN ,-使用关键字COLUNM(列) 示例: ALTER TABLE T_CUSTOMER DROP COLUMN GENDER,CUSTOMERADDRESS-使用关键字COLUNM(列) /*每个列名之间用逗号隔开,如果列上有任何约束,

9、则需要先删除约束*/ 3、添加主键约束,唯一性约束、check约束和默认值约束 /*添加主键约束,唯一性约束,check约束和默认值约束*/ ALTER TABLE ADD CONSTRAINT CHECK (CHECK约束内容),-CHECK约束,每个约束之间用逗号隔开CONSTRAINT UNIQUE(),-唯一性约束 CONSTRAINT DEFAULT FOR -默认值约束 示例: ALTER TABLE T_CUSTOMER ADD CONSTRAINT T_CUMSTOMER_AGE_CHECK CHECK (AGE0),-CHECK约束 CONSTRAINT T_CUSTOMER

10、_USERNAME_UNIQUE UNIQUE(USERNAME),-唯一性约束 CONSTRAINT T_CUSTOMER_DEFAULT DEFAULT GETDATE()FOR MODIFIEDDATE-默认值约束 4、删除主键约束,唯一性约束、check约束和默认值约束 /*删除主键约束,删除唯一性约束、删除check约束,删除默认值约束*/ ALTER TABLE DROP ,-后边直接跟约束名,用逗号隔开 示例: ALTER TABLE T_CUSTOMER DROP T_CUSTOMER_DEFAULT,-后边直接跟约束名,用逗号隔开 UQ_T_CUSTOM_EDBD0E1935

11、BCFE0A, CK_T_CUSTOMER_AGE_276EDEB3 如果创建的时候,没有显性的指定约束名,例如UNIQUE,CHECK等约束,可以通过SP_HELP T_CUSTOMER来查询所有的约束名。在查询结果的第7个结果集中,可以看到类似下图的结果,第一列是约束类型,第二列就是约束名,最后一列是列名。 5、修改列的字段类型 /*修改列的字段类型和非空*/ ALTER TABLE . 三、表数据 【插入数据】 1、插入一行全字段数据 /*插入一行全字段数据*/ INSERT INTO VALUES(值1,值2,值3)-值的数量必须和表定义的一样多,而且数据类型必须一一对应 示例: IN

12、SERT INTO T_CUSTOMER VALUES (NEWID(),公司3,用户3,123,DEFAULT,xxx)-要到了NEWID()函数 2、插入一行部分字段数据 /*插入一行数据*/ INSERT INTO (列1,列2,列3.) VALUES(值1,值2,值3)-字符串是要用单引号括起来,数字值不用 示例: INSERT INTO T_CUSTOMER2 (COMPANYNAME,USERNAME,PHONENUMBER) VALUES(公司1,用户1,)与要插入的列一一对应,可以不同于表定义的顺序,可以乱序,只要一一对应即可 /*CUSTOMERID是标识列,自增的,所以不用

13、指定*/ 3、插入多行数据 INSERT INTO T_CUSTOMER2 (COMPANYNAME,USERNAME,PHONENUMBER) VALUES(公司2,用户2,), (公司3,用户3,), -用括号将每一行数据括起来,括号与括号之间用逗号隔开 (公司4,用户4,) 4、插入函数值和默认值 /*UNIQUEIDENTIFIER类型字段,使用NEWID()函数。有默认值的使用DEFAULT关键字*/ INSERT INTO (列1,列2,列3,列4,) VALUES(NEWID(),值1,值2,DEFAULT) 示例: /*CUSTOMERID是UNIQUEIDENTIFIER类型

14、,所以要使用NEWID()函数,MODIFIEDDATE字段有模式值,是取得当前的日期时间GETDATE()函数*/ INSERT INTO T_CUSTOMER (CUSTOMERID,COMPANYNAME,USERNAME,PHONE,MODIFIEDDATE) VALUES(NEWID(),公司,用户,DEFAULT) 【修改数据】 /*UPDATE通常是与SET和WHERE配合使用,如果不用WHERE,则会把整个列都修改*/ UPDATE SET列=值 WHERE 列=值 AND 列=值-可以是任何删选条件 示例: /*将公司2的电话号码修改成*/ UPDATE T_CUSTOMER

15、 SET PHONE= WHERE COMPANYNAME=公司2 【查询数据】 1、查询所有数据,或者部分行数据(用where进行过滤) /*查询表中的所有数据用星号*/ SELECT* FROM WHERE WHERE AND OR ORDER BY ASC(升序)/DESC(降序), ASC(升序)/DESC(降序) /*列1和列2可以采用不一样的排序*/ 示例: /*查询客户表中的所有数据*/ SELECT* FROM T_ORDER WHERE PAYMENT100价格大于100 ORDER BY PRODUCT ASC,PAYMENT DESC -产品名称使用升序,产品价格使用降序

16、 【删除数据】 1、删除一般数据 /*删除公司一般数据*/ DELETE FROM WHERE 示例: /*删除公司,公司ID是订单表的外键*/ TRUNCATE TABLE T_CUSTOMER 3、删除有外键约束的数据 /*如果该条数据已经被外键表引用,则无法删除。被引用的数据必须置于未被使用的状况,方法就是修改外键表字段,或者删除外键表中的引用数据*/ 示例: /*删除公司,公司ID是订单表的外键*/ UPDATE T_ORDER 将所有引用公司1的数据全部改成公司2 SET ORDER_CUSTOMERID=2f20b157-a287-43e0-be99-1fb9 WHERE ORDE

17、R_CUSTOMERID=c013076f-7889-400e-aa7a-bd70 /*然后才可以在主键表中删除公司1*/ DELETE FROM T_CUSTOMER WHERE COMPANYNAME=公司1 四、其他辅助关键字 【LIKE通配符】 1、单字符通配符,只能用于字符串匹配 /*单字符通配符_*/ SELECT* FROM T_CUSTOMER WHERELIKE_通配符_ AND OR 示例: SELECT* FROM T_CUSTOMER WHERE USERNAME LIKE用户_-将客户表中包含”用户+任意字符”的行数据查出来 2、多字符通配符,只能用于字符串匹配 /*

18、单字符通配符%,百分号代表*从0到N的字符串/ SELECT* FROM T_CUSTOMER WHERE 示例: SELECT COMPANYNAME AS公司,USERNAME AS联系人,PHONE AS联系电话 FROM T_CUSTOMER 【NULL值】 1、NULL值要用特殊的关键字IS 或IS NOT,而不能用!=或之类的符号示例: SELECT COMPANYNAME,USERNAME FROM T_CUSTOMER WHERE PHONE IS NULL-选出电话号码是NULL的行,也可以与其他条件一起使用 或者 SELECT COMPANYNAME,USERNAME FR

19、OM T_CUSTOMER WHERE PHONE IS NOT NULL-选出电话号码不是NULL的行 【IN匹配离散值】 1、如果要查询离散值,一个方法是很多个OR条件,可以可以用IN或NOT IN关键字。 示例: SELECT* FROM T_DOCTOR WHERE AGE IN(23,24,34) -选出年龄是23,24和34岁的医生 或者 SELECT* FROM T_DOCTOR WHERE AGE NOT IN(23,24,34)-选出年龄不是23,24和34岁的医生 【BETWEEN匹配连续值】 1、如果要查询离散值,一个方法是很多个OR条件,可以可以用IN或NOT IN关键

20、字。 示例: SELECT* FROM T_DOCTOR WHERE AGE BETWEEN 20 AND 50-查询出年龄介于20到50之间的医生数据 或者 SELECT* FROM T_DOCTOR WHERE AGE NOT BETWEEN 20 AND 50-查询出年龄不介于20到50之间的医生数据 【GROUP分组】 1、按照某列分组 /*先按照GROUP BY字段进行分组,然后在分组内进行操作。所以SELECT后的列名只能是GROUP BY内的列,或者是聚合函数。如果有WHERE的话,GROUP和ORDER都必须放在WHERE之后*/ SELECT分组列名AS列别名,聚合函数1,聚

21、合函数2 FROM GROUP BY分组列名 示例: SELECT F_AGE AS年龄,COUNT(*)AS人数,AVG(F_SALARY)AS工资平均值 FROM T_EMPLOYEE GROUP BY F_AGE按照年龄分组 输出结果: 2、按照多列分组 /*先按照列名1分组,再按照列名2分组。如何列名1分为3组,每一组里边按照列名2又分为2组,则输出就是6行数据*/ SELECT列名1,列名2,聚合函数 FROM GROUP BY列名1,列名2-直接用逗号隔开多个列名即可 示例: SELECT F_AGE AS年龄,F_SALARY AS工资,COUNT(*)AS人数 FROM T_E

22、MPLOYEE GROUP BY F_AGE,F_SALARY-按照年龄分组,再按照工资分组,然后统计人数 ORDER BY F_AGE ASC-ORDER BY也可以一起使用 输出结果: 【HAVING数据分组后的再筛选】 1、数据分组后的筛选 /*HAVING 是对分组以后的数据进行过滤。有了GROUP BY才能使用HAVING,无GROUP BY 是不能使用HAVING的。HAVING中的列,也只能和SELECT语句一样,使用GROUP BY列或者聚合函数*/ SELECT列名1,列名2,聚合函数 FROM GROUP BY列名1,列名2-直接用逗号隔开多个列名即可 HAVING 聚合函

23、数的筛选条件 示例: SELECT F_AGE AS年龄,F_SALARY AS工资,COUNT(*)AS人数 FROM T_EMPLOYEE GROUP BY F_AGE,F_SALARY-按照年龄分组,再按照工资分组,然后统计人数 HAVING COUNT(*)1-在分组中剔除count数为的小分组 输出结果: 【TOP限制结果集】 1、对查询出的前几条数据的筛选 /*一般是与ORDER BY连用,而且TOP 必须放在*型号或者列名的前面。不和ORDER BY也可以使用,但是查询结果不确定*/ SELECT TOP数量列1,列2 FROM ORDER BY排序列1,排序列2DESC/ASC

24、 示例: SELECT TOP 3 F_NAME,F_SALARY-选出工资最高的三个人 FROM T_EMPLOYEE ORDER BY F_SALARY DESC 2、对查询出的中间结果进行筛选,使用子查询。这个非常重要的是用在分页上。 /*如果要选择从X开始后Y个结果的子集,第一步先查询出TOP X-1个结果子集,然后把它排除掉就是从X到X+Y的结果子集。删除的时候一般是用主键,或者没有重复的数据列。最主要的是NOT IN关键字*/ SELECT TOP X 列名1,列名2 FROM WHERE主键列NOT IN(SELECT TOP X-1 主键FROMORDER BY排序列名DESC

25、) ORDER BY排序列名DESC /*WHERE后的列名必须和子查询的SELECT列名一致*/ /*主查询的ORDER BY 列名必须和子查询的ORDER BY列名一致,而且排序方式也必须一致*/ 示例: /*查询出工资排名是4,5,6名*/ SELECT TOP 3 F_NAME,F_SALARY FROM T_EMPLOYEE WHERE F_ID NOT IN(SELECT TOP 3 F_ID FROM T_EMPLOYEE ORDER BY F_SALARY DESC) ORDER BY F_SALARY DESC 【DISTINCT去除重复数据】 1、查询一列中的无重复数据 /

26、*只能查询列的结果集。DISTINCT要放在SELECT之后,和所有列名的前面*/ SELECT DISTINCT去重列名 FROM 示例: SELECT DISTINCT F_DEPARTMENT-查询出的部门列去重 FROM T_EMPLOYEE 2、多列组合去重 /*每个列都一样的,才算重复。如果一列不一样,就不算重复*/ SELECT DISTINCT去重列名1,去重列名2 FROM 示例: SELECT DISTINCT F_DEPARTMENT,F_SUBCOMPANY FROM T_EMPLOYEE 【UNION合并查询结果】 1、合并查询结果 /*合并查询结果集,所以每个每个结果集必须有相同的列数,每个结果集的列必须类型相容,位置也必须一致,可以合并2个以上的查询结果。但是默认会合并重复数据*/ /*如果列数不一样,必须再相应的位置补齐。默认查询结果是对第一列排序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论