SQL Server 2008常用关键字、数据类型和常用语法常用关键字:SQL server 2008一共大约有180多个关键字。
简要分为主要关键字、辅助关键字和函数类关键字。
本文就常用的这三类关键字进行语法说明和用例。
说明:1、比较好的习惯是,数据库名以D_开头,表名用T_开头,字段名以F_开头,这样可以防止和关键字重名。
2、如果确实用到了系统关键字,就要在关键上加[]方括号,以与关键字进行区别。
例如有一个用户表被命名为USER,则查询该表内容的时候:SELECT * FROM USER语句是错误的,应该是SELECT * FROM [USER]。
因为USER是关键字。
数据类型:SQL Server 2008一共有36种数据类型。
具体如下:常用语法:一、数据库【创建数据库】CREATE DATABASE <dbname>【修改数据库】ALTER DATABASE <dbname>【删除数据库】DROP DATABASE <dbname>二、表结构【创建数据表】1、设定字段是允许空,非空、标识列,自增和主键约束。
CREATE TABLE T_CUSTOMER--表名(CUSTOMERID INT IDENTITY(1,1),--客户ID,标识列,从开始,每次自增COMPANYNAME NVARCHAR(50)NOT NULL,--,如果不显示指明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约束和默认值约束。
(CUSTOMERID UNIQUEIDENTIFIER UNIQUE,--客户ID,UNIQUEIDENTIFIER类型,唯一性约束COMPANYNAME NVARCHAR(50)NOT NULL UNIQUE,--公司名称,非空,唯一性约束USERNAME NVARCHAR(10)NOT NULL,PHONENUMBER CHAR(11)NULL,AGE TINYINT NULL CHECK(AGE>0),--联系人年龄,允许空,check约束必须大于MODIFIEDDATE DATE NULL CONSTRAINT T_CUSTOMER_DEFAULT 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_CUSTOMER 表的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后边是本表内要被设置的外键列REFERENCES后边是主键所在的表,括号内是主键表的链接列*//*表名后的所有内容,都要拿括号括起来*//*外键的数据类型要和主键一模一样,哪怕主键是UNIQUEIDENTIFIER也必须设置成一样*/【修改表名】/*修改表名,可能会破坏脚本和存储过程。
*/EXEC SP_RENAME'<原表名>','<新表名>'示例:EXEC SP_RENAME'T_CUSTOMER2','T_CUSTOMER22'【修改表结构】1、添加列和列的约束/*添加列、添加唯一性约束*/ALTER TABLE <表名>ADD <列名1> BIT NOT NULL,--添加多个列不用括号,用逗号分开即可<列名2> INT NOT NULL UNIQUE--声明的时候,和创建表的时候一样示例:ADD GENDER BIT NOT NULL,--添加多个列不用括号,用逗号分开即可CUSTOMERADDRESS INT NOT NULL UNIQUE--声明的时候,和创建表的时候一样2、删除列/*删除列*/ALTER TABLE<表名>DROP COLUMN <列名1>,<列名2>--使用关键字COLUNM(列)示例:ALTER TABLE T_CUSTOMERDROP COLUMN GENDER,CUSTOMERADDRESS--使用关键字COLUNM(列)/*每个列名之间用逗号隔开,如果列上有任何约束,则需要先删除约束*/3、添加主键约束,唯一性约束、check约束和默认值约束/*添加主键约束,唯一性约束,check约束和默认值约束*/ALTER TABLE <表名>ADD CONSTRAINT <约束名> CHECK (CHECK约束内容),--CHECK约束,每个约束之间用逗号隔开CONSTRAINT <约束名> UNIQUE(<列名>),--唯一性约束CONSTRAINT <约束名> DEFAULT <默认约束值或函数> FOR <列名> --默认值约束示例:ALTER TABLE T_CUSTOMERADD CONSTRAINT T_CUMSTOMER_AGE_CHECK CHECK (AGE>0),--CHECK约束CONSTRAINT T_CUSTOMER_USERNAME_UNIQUE UNIQUE(USERNAME),--唯一性约束CONSTRAINT T_CUSTOMER_DEFAULT DEFAULT GETDATE()FOR MODIFIEDDATE--默认值约束4、删除主键约束,唯一性约束、check约束和默认值约束/*删除主键约束,删除唯一性约束、删除check约束,删除默认值约束*/ALTER TABLE <表名>DROP <约束名1>,<约束名2>,<约束名3>--后边直接跟约束名,用逗号隔开示例:ALTER TABLE T_CUSTOMERDROP T_CUSTOMER_DEFAULT,--后边直接跟约束名,用逗号隔开UQ__T_CUSTOM__EDBD0E1935BCFE0A,CK__T_CUSTOMER__AGE__276EDEB3如果创建的时候,没有显性的指定约束名,例如UNIQUE,CHECK等约束,可以通过SP_HELP T_CUSTOMER来查询所有的约束名。
在查询结果的第7个结果集中,可以看到类似下图的结果,第一列是约束类型,第二列就是约束名,最后一列是列名。
5、修改列的字段类型/*修改列的字段类型和非空*/ALTER TABLE <表名>ALTER COLUMN <列名> <新数据类型>示例:ALTER TABLE T_CUSTOMERALTER COLUMN CUSTOMERADDRESS NVARCHAR(100)–-修改多列的字段类型还不知道怎么改6、设置列的空/非空/*修改列的空和非空*/ALTER TABLE <表名>ALTER COLUMN <列名> <数据类型> NOT NULL—必须跟数据类型,否则会示例:ALTER TABLE T_CUSTOMERALTER COLUMN MODIFIEDDATE DATE NULL7、修改列名/*修改列名,可能会破坏脚本和存储过程*/EXEC SP_RENAME '<tbname>.<原列名>','<新列名>','COLUMN'—-后边的column是固定写法示例:EXEC SP_RENAME'T_CUSTOMER.PHONENUMBER','PHONE','COLUMN'--将原来的PHONENUMBER 电话号码,改成PHONE电话【删除表】DROP TABLE <tbname>三、表数据【插入数据】1、插入一行全字段数据/*插入一行全字段数据*/INSERT INTO<tbname>VALUES('值1','值2','值3')–-值的数量必须和表定义的一样多,而且数据类型必须一一对应示例:INSERT INTO T_CUSTOMERVALUES (NEWID(),'公司3','用户3','123',DEFAULT,'xxx')–-要到了NEWID()函数2、插入一行部分字段数据/*插入一行数据*/INSERT INTO<tbname>(列1,列2,列3..)VALUES('值1','值2','值3')–-字符串是要用单引号括起来,数字值不用示例:INSERT INTO T_CUSTOMER2(COMPANYNAME,USERNAME,PHONENUMBER)VALUES('公司1','用户1','')—与要插入的列一一对应,可以不同于表定义的顺序,可以乱序,只要一一对应即可/*CUSTOMERID是标识列,自增的,所以不用指定*/3、插入多行数据INSERT INTO T_CUSTOMER2(COMPANYNAME,USERNAME,PHONENUMBER)VALUES('公司2','用户2',''),('公司3','用户3',''), --用括号将每一行数据括起来,括号与括号之间用逗号隔开('公司4','用户4','')4、插入函数值和默认值/*UNIQUEIDENTIFIER类型字段,使用NEWID()函数。