SQLServer常用关键字数据类型和常用语法文档格式.docx
《SQLServer常用关键字数据类型和常用语法文档格式.docx》由会员分享,可在线阅读,更多相关《SQLServer常用关键字数据类型和常用语法文档格式.docx(32页珍藏版)》请在冰点文库上搜索。
TABLE
数据表
14
NOT
15
NULL
空值
16
IDENTITY(1,1)
标识列
17
CONSTRAINT
约束,后边跟约束名
18
PRIMARY
主键,PRIMARYKEY(列名)
19
FOREIGN
外键FOREIGNKEY(列名)
20
KEY
21
REFERENCES
把…印作参考,指定外键的时候用
22
CHECK
CHECK约束
23
UNIQUE
唯一性约束
24
COLUMN
列
25
DEFAULT
默认值
26
AND
和
27
OR
或
28
TRUNCATE
截断,快速清空表内数据
29
ORDER
常与by连用
30
BY
与GROUP或ORDER连用
31
ASC
升序
32
DESC
降序
33
AS
列名别称
34
DELETE
删除表数据
35
LIKE
通配符
36
IS
用于NULL值
37
IN
离散值
38
BETWEEN
连续值,常与and连用
39
GROUP
分组,常与by连用
40
HAVING
对GROUPBY分组内的数据进行过滤
41
TOP
筛选结果集
42
DISTINCT
去重
43
UNION
44
ALL
45
CASE
类似与C#中的SWITCH--CASE语法,查询离散值
46
ELSE
设定case的默认值
47
END
结束case语句
48
WHEN
与case连用
49
VIEW
视图
50
INDEX
索引
51
JOIN
联合查询
52
ON
与JOIN连用
数据类型:
SQLServer2008一共有36种数据类型。
具体如下:
数据类型
存储空间
字符类型说明
整数型(4)
tinyint
1字节
取值范围:
0--255
smallint
2字节
-2768--32767
int
4字节
-231—231-1
bigint
8字节
-263—263-1
浮点类型(6)
decimal(p,s)
5—17
字节
-1038+1—1038-1。
p(有效位数,p的取值小于38),可储存的最大十进位数总数,小数点左右两侧都包括在内。
s(小数位数,0<
=s<
=p<
=38)小数点右侧的小数位数。
例如:
decimal(3,1)表示,一共3位有效位,其中整数部分2位,小数部分1位,最大值是99.9,最小值是-99.9
numeric(p,s)
-214,768.3648--214,768.3647。
用法类似decimal
smallmoney
–214 748.3648~2 14 748.3647。
主要是用于货币
money
-3.438—3.438主要用于货币
real
4或8字节
-3.40E+38~-1.18E-38,0,1.18E-38~3.40E+38
float
-3.4E38~3.4E38
字符类型(8)
char(n)
每字符1字节,最大可达8000字节。
ANSI字符,会用空格填充。
nchar(n)
每字符2字节,最大可达4000字节。
UNICODE字符,会用空格填充。
varchar(n)
ANSI字符,可变长度,不会用空格填充。
varchar(MAX)
ANSI字符,最大可达2G
nvarchar(n)
UNICODE字符,可变长度,不会用空格填充。
nvarchar(MAX)
最多为231–1(2 147 483 647)字符
text
每字符1字节,最大可达2G。
ntext
每字符2字节,最大可达2G。
二进制数据类型(5)
bit
1比特
NULL,0或1
binary(n)
固定长度二进制数据,最高可达8000字节。
varbinary
可变长度二进制数据,最高可达8000字节。
varbinary(MAX)
最多为232-1字节
image
可变长度二进制数据,最高可达2GB。
日期和时间类型(7)
smalldatetime
date
3字节
精度一天,支持范围01/01/0000—31/12/9999。
datetime
0.00333秒,支持的范围是'
1000-01-0100:
00:
00'
到'
9999-12-3123:
59:
59'
。
以'
YYYY-MM-DDHH:
MM:
SS'
格式显示DATETIME值
datetime2(n)
6--8字节
100纳秒
datetimeoffset(n)
8--10字节
time
3—5字节
timestamp
TIMESTAMP值返回后显示为'
格式的字符串。
其他数据类型(6)
xml
用于存储xml格式的文档,最大可达2GB,支持128级层次。
geography
地理数据。
geometry
几何数据。
hierarchyid
主要解决的问题是拥有层次关系的表格,通常用来建立树形结构
sql_variant
用于存储SQLServer2005支持的各种数据类型(不包括text、ntext、image、timestamp和sql_variant)的值。
对于sql_variant数据类型,必须先将它转换为其基本数据类型值,然后才能参与诸如加减这类运算
uniqueidentifier
Uniqueidentifier是全局唯一的标识,可存储16字节的二进制值,其作用与全局唯一标记符(GUID)一样,一般用来做主键。
常用语法:
一、数据库
【创建数据库】
CREATEDATABASE<
dbname>
【修改数据库】
ALTERDATABASE<
【删除数据库】
DROPDATABASE<
二、表结构
【创建数据表】
1、设定字段是允许空,非空、标识列,自增和主键约束。
CREATETABLET_CUSTOMER--表名
(CUSTOMERIDINTIDENTITY(1,1),--客户ID,标识列,从开始,每次自增
COMPANYNAMENVARCHAR(50)NOTNULL,--,如果不显示指明NOTNULL,系统默认是允许空的
USERNAMENVARCHAR(10)NOTNULL,--联系人姓名,非空
PHONENUMBERCHAR(11)NULL,--联系电话,允许为空
CONSTRAINTT_CUSTOMER_PrimaryKeyPRIMARYKEY(CUSTOMERID))--设定USERID为主键,用括号括起来
/*每个单词之间是空格隔开,每个字段之间用单引号隔开,整个字段定义部分用括号括起来*/
/*T_RegUser_PrimaryKey是约束名*/
2、设定字段是UNIQUEIDENTIFIER数据类型,唯一性约束,CHECK约束和默认值约束。
CREATETABLET_CUSTOMER
(CUSTOMERIDUNIQUEIDENTIFIERUNIQUE,--客户ID,UNIQUEIDENTIFIER类型,唯一性约束
COMPANYNAMENVARCHAR(50)NOTNULLUNIQUE,--公司名称,非空,唯一性约束
USERNAMENVARCHAR(10)NOTNULL,
PHONENUMBERCHAR(11)NULL,
AGETINYINTNULLCHECK(AGE>
0),--联系人年龄,允许空,check约束必须大于
MODIFIEDDATEDATENULLCONSTRAINTT_CUSTOMER_DEFAULTDEFAULTGETDATE(),--默认值约束,并调用SQL函数GETDATE()
CONSTRAINTT_CUSTOMER_PrimaryKeyPRIMARYKEY(CUSTOMERID))
3、设定字段外键
CREATETABLET_ORDER--订单表
(ORDERIDINTIDENTITY(1,1),--订单ID,标识字段,自增
PRODUCTNVARCHAR(50)NOTNULL,--产品
PAYMENTMONEYNOTNULL,--货款
ORDER_CUSTOMERIDUNIQUEIDENTIFIERNOTNULL,--客户ID,为外键,外键内容是T_CUSTOMER表的CUSTOMERID列
CONSTRAINTT_ORDER_PrimaryKeyPRIMARYKEY(ORDERID),--设置ORDERID为主键
CONSTRAINTT_ORDER_T_CUSTOMER_ForeignKeyFOREIGNKEY(ORDER_CUSTOMERID)REFERENCEST_CUSTOMER(CUSTOMERID))
/*设定外键基本语法*/
CONSTRAINT<
约束名>
FOREIGNKEY(<
外键表列名>
)REFERENCES<
主键表>
(<
主键表列名>
)
/*设置外键,T_ORDER_T_CUSTOMER_ForeignKey是外键约束名,FOREIGNKEY后边是本表内要被设置的外键列
REFERENCES后边是主键所在的表,括号内是主键表的链接列*/
/*表名后的所有内容,都要拿括号括起来*/
/*外键的数据类型要和主键一模一样,哪怕主键是UNIQUEIDENTIFIER也必须设置成一样*/
【修改表名】
/*修改表名,可能会破坏脚本和存储过程。
*/
EXECSP_RENAME'
<
原表名>
'
'
新表名>
示例:
T_CUSTOMER2'
T_CUSTOMER22'
【修改表结构】
1、添加列和列的约束
/*添加列、添加唯一性约束*/
ALTERTABLE<
表名>
ADD<
列名1>
BITNOTNULL,--添加多个列不用括号,用逗号分开即可
列名2>
INTNOTNULLUNIQUE--声明的时候,和创建表的时候一样
ALTERTABLET_CUSTOMER
ADDGENDERBITNOTNULL,--添加多个列不用括号,用逗号分开即可
CUSTOMERADDRESSINTNOTNULLUNIQUE--声明的时候,和创建表的时候一样
2、删除列
/*删除列*/
DROPCOLUMN<
<
--使用关键字COLUNM(列)
DROPCOLUMNGENDER,CUSTOMERADDRESS--使用关键字COLUNM(列)
/*每个列名之间用逗号隔开,如果列上有任何约束,则需要先删除约束*/
3、添加主键约束,唯一性约束、check约束和默认值约束
/*添加主键约束,唯一性约束,check约束和默认值约束*/
ADDCONSTRAINT<
CHECK(CHECK约束内容),--CHECK约束,每个约束之间用逗号隔开
UNIQUE(<
列名>
),--唯一性约束
DEFAULT<
默认约束值或函数>
FOR<
--默认值约束
ADDCONSTRAINTT_CUMSTOMER_AGE_CHECKCHECK(AGE>
0),--CHECK约束
CONSTRAINTT_CUSTOMER_USERNAME_UNIQUEUNIQUE(USERNAME),--唯一性约束
CONSTRAINTT_CUSTOMER_DEFAULTDEFAULTGETDATE()FORMODIFIEDDATE--默认值约束
4、删除主键约束,唯一性约束、check约束和默认值约束
/*删除主键约束,删除唯一性约束、删除check约束,删除默认值约束*/
DROP<
约束名1>
约束名2>
约束名3>
--后边直接跟约束名,用逗号隔开
DROPT_CUSTOMER_DEFAULT,--后边直接跟约束名,用逗号隔开
UQ__T_CUSTOM__EDBD0E1935BCFE0A,
CK__T_CUSTOMER__AGE__276EDEB3
如果创建的时候,没有显性的指定约束名,例如UNIQUE,CHECK等约束,可以通过SP_HELPT_CUSTOMER来查询所有的约束名。
在查询结果的第7个结果集中,可以看到类似下图的结果,第一列是约束类型,第二列就是约束名,最后一列是列名。
5、修改列的字段类型
/*修改列的字段类型和非空*/
ALTERCOLUMN<
<
新数据类型>
ALTERCOLUMNCUSTOMERADDRESSNVARCHAR(100)–-修改多列的字段类型还不知道怎么改
6、设置列的空/非空
/*修改列的空和非空*/
数据类型>
NOTNULL—必须跟数据类型,否则会
ALTERCOLUMNMODIFIEDDATEDATENULL
7、修改列名
/*修改列名,可能会破坏脚本和存储过程*/
tbname>
.<
原列名>
新列名>
COLUMN'
—-后边的column是固定写法
T_CUSTOMER.PHONENUMBER'
PHONE'
--将原来的PHONENUMBER电话号码,改成PHONE电话
【删除表】
DROPTABLE<
三、表数据
【插入数据】
1、插入一行全字段数据
/*插入一行全字段数据*/
INSERTINTO<
VALUES('
值1'
值2'
值3'
)–-值的数量必须和表定义的一样多,而且数据类型必须一一对应
INSERTINTOT_CUSTOMER
VALUES(NEWID(),'
公司3'
用户3'
123'
DEFAULT,'
xxx'
)–-要到了NEWID()函数
2、插入一行部分字段数据
/*插入一行数据*/
(列1,列2,列3..)
)–-字符串是要用单引号括起来,数字值不用
INSERTINTOT_CUSTOMER2
(COMPANYNAME,USERNAME,PHONENUMBER)
公司1'
用户1'
)—与要插入的列一一对应,可以不同于表定义的顺序,可以乱序,只要一一对应即可
/*CUSTOMERID是标识列,自增的,所以不用指定*/
3、插入多行数据
公司2'
用户2'
),
('
),--用括号将每一行数据括起来,括号与括号之间用逗号隔开
公司4'
用户4'
)
4、插入函数值和默认值
/*UNIQUEIDENTIFIER类型字段,使用NEWID()函数。
有默认值的使用DEFAULT关键字*/
(列1,列2,列3,列4,)
VALUES(NEWID(),'
DEFAULT)
/*CUSTOMERID是UNIQUEIDENTIFIER类型,所以要使用NEWID()函数,MODIFIEDDATE字段有模式值,是取得当前的日期时间GETDATE()函数*/
(CUSTOMERID,COMPANYNAME,USERNAME,PHONE,MODIFIEDDATE)
公司'
用户'
【修改数据】
/*UPDATE通常是与SET和WHERE配合使用,如果不用WHERE,则会把整个列都修改*/
UPDATE<
SET列='
值'
WHERE列='
AND列='
—-可以是任何删选条件
/*将公司2的电话号码修改成*/
UPDATET_CUSTOMER
SETPHONE='
WHERECOMPANYNAME='
【查询数据】
1、查询所有数据,或者部分行数据(用where进行过滤)
/*查询表中的所有数据用星号*/
SELECT*
FROM<
WHERE<
筛选条件1>
AND<
筛选条件2>
OR<
筛选条件3>
/*查询客户表中的所有数据*/
SELECT*FROMT_CUSTOMER
2、查询表中的部分列数据,
/*查询部分列的所有数据,或者部分行部分列的数据*/
SELECT<
…>
--这个列名顺序可以按照自己的想法来,不用非要和表定义一致
FROMT_ORDER
/*查询订单表中的所有数据*/
SELECTPRODUCT,PAYMENT
3、对查询出来的数据进行排序
/*ORDERBY的默认排序是升序ASC,如果BY的列是数字,则是从大到小,如果是字符串,则是从A到Z,如果是时间从远至近。
降序的话是加关键字DESC。
假如是升序,最好也加上ASC*/
ORDERBY<
ASC(升序)/DESC(降序),<
ASC(升序)/DESC(降序)
/*列1和列2可以采用不一样的排序*/
SELECT*
WHEREPAYMENT>
100–价格大于100
ORDERBYPRODUCTASC,PAYMENTDESC--产品名称使用升序,产品价格使用降序
【删除数据】
1、删除一般数据
/*删除公司一般数据*/
DELETEFROM<
/*删除公司,公司ID是订单表的外键*/
DELETEFROMT_CUSTOMER
2、快速高效的删除表内的全部数据
/*快速高效的清空表内的全部数据,TRUNCATE本意是截短、把…截短。
TRUNCATE只能用来删除表中的所有数据,不能用来删除部分数据,而且有外键约束的主键表不能被删除*/
TRUNCATETABLE<
TRUNCATETABLET_CUSTOMER
3、删除有外键约束的数据
/*如果该条数据已经被外键表引用,则无法删除。
被引用的数据必须置于未被使用的状况,方法就是修改外键表字段,或者删除外键表中的引用数据*/
UPDATET_ORDER–将所有引用公司1的数据全部改成公司2
SETORDER_CUSTOMERID='
2f20b157-a287-43e0-be99-1fb917618629'
WHEREORDER_CUSTOMERID='
c013076f-7889-400e-aa7a-b38436730d70'
/*然后才可以在主键表中删除公司1*/
四、其他辅助关键字
【LIKE通配符】
1、单字符通配符,只能用于字符串匹配
/*单字符通配符_*/
FROMT_CUSTOMER
LIKE'
_通配符_'
WHEREUSERNAMELIKE'
用户_'
–-将客户表中包含”用户+任意字符”的行数据查出来
2、多字符通配符,只能用于字符串匹配
/*单字符通配符%,百分号代表*从0到N的字符串/
%