SQLServer常用关键字数据类型和常用语法.docx
- 文档编号:20128130
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:32
- 大小:76.87KB
SQLServer常用关键字数据类型和常用语法.docx
《SQLServer常用关键字数据类型和常用语法.docx》由会员分享,可在线阅读,更多相关《SQLServer常用关键字数据类型和常用语法.docx(32页珍藏版)》请在冰豆网上搜索。
SQLServer常用关键字数据类型和常用语法
SQLServer2008
常用关键字、数据类型和常用语法
常用关键字:
SQLserver2008一共大约有180多个关键字。
简要分为主要关键字、辅助关键字和函数类关键字。
本文就常用的这三类关键字进行语法说明和用例。
说明:
1、比较好的习惯是,数据库名以D_开头,表名用T_开头,字段名以F_开头,这样可以防止和关键字重名。
2、如果确实用到了系统关键字,就要在关键上加[]方括号,以与关键字进行区别。
例如有一个用户表被命名为USER,则查询该表内容的时候:
SELECT*FROMUSER语句是错误的,应该是SELECT*FROM[USER]。
因为USER是关键字。
编号
关键字
应用场景
主要关键字
1
CREATE
创建表
2
ALTER
修改表结构
3
DROP
删除数据库和表
4
INSERT
插入表数据
5
INTO
与INSERT连用,插入表数据
6
VALUES
插入表数据时,指定列值
7
UPDATE
更新表数据
8
SET
与UPDATE连用,设定列值
9
SELECT
查询表数据
10
FROM
从哪个表中查询
11
WHERE
查询表数据的条件
12
DATABASE
数据库
13
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)
1
tinyint
1字节
取值范围:
0--255
2
smallint
2字节
取值范围:
-2768--32767
3
int
4字节
取值范围:
-231—231-1
4
bigint
8字节
取值范围:
-263—263-1
浮点类型(6)
5
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
6
numeric(p,s)
4字节
取值范围:
-214,768.3648--214,768.3647。
用法类似decimal
7
smallmoney
4字节
取值范围:
–214 748.3648~2 14 748.3647。
主要是用于货币
8
money
8字节
取值范围:
-3.438—3.438主要用于货币
9
real
4或8字节
取值范围:
-3.40E+38~-1.18E-38,0,1.18E-38~3.40E+38
10
float
4字节
取值范围:
-3.4E38~3.4E38
字符类型(8)
11
char(n)
每字符1字节,最大可达8000字节。
ANSI字符,会用空格填充。
12
nchar(n)
每字符2字节,最大可达4000字节。
UNICODE字符,会用空格填充。
13
varchar(n)
每字符1字节,最大可达8000字节。
ANSI字符,可变长度,不会用空格填充。
14
varchar(MAX)
ANSI字符,最大可达2G
15
nvarchar(n)
每字符2字节,最大可达4000字节。
UNICODE字符,可变长度,不会用空格填充。
16
nvarchar(MAX)
最多为231–1(2 147 483 647)字符
17
text
每字符1字节,最大可达2G。
18
ntext
每字符2字节,最大可达2G。
二进制数据类型(5)
19
bit
1比特
NULL,0或1
20
binary(n)
固定长度二进制数据,最高可达8000字节。
21
varbinary
可变长度二进制数据,最高可达8000字节。
22
varbinary(MAX)
最多为232-1字节
23
image
可变长度二进制数据,最高可达2GB。
日期和时间类型(7)
24
smalldatetime
25
date
3字节
精度一天,支持范围01/01/0000—31/12/9999。
26
datetime
8字节
0.00333秒,支持的范围是'1000-01-0100:
00:
00'到'9999-12-3123:
59:
59'。
以'YYYY-MM-DDHH:
MM:
SS'格式显示DATETIME值
27
datetime2(n)
6--8字节
100纳秒
28
datetimeoffset(n)
8--10字节
100纳秒
29
time
3—5字节
100纳秒
30
timestamp
TIMESTAMP值返回后显示为'YYYY-MM-DDHH:
MM:
SS'格式的字符串。
其他数据类型(6)
31
xml
用于存储xml格式的文档,最大可达2GB,支持128级层次。
32
geography
地理数据。
33
geometry
几何数据。
34
hierarchyid
主要解决的问题是拥有层次关系的表格,通常用来建立树形结构
35
sql_variant
用于存储SQLServer2005支持的各种数据类型(不包括text、ntext、image、timestamp和sql_variant)的值。
对于sql_variant数据类型,必须先将它转换为其基本数据类型值,然后才能参与诸如加减这类运算
36
uniqueidentifier
Uniqueidentifier是全局唯一的标识,可存储16字节的二进制值,其作用与全局唯一标记符(GUID)一样,一般用来做主键。
常用语法:
一、数据库
【创建数据库】
CREATEDATABASE
【修改数据库】
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'<原表名>','<新表名>'
示例:
EXECSP_RENAME'T_CUSTOMER2','T_CUSTOMER22'
【修改表结构】
1、添加列和列的约束
/*添加列、添加唯一性约束*/
ALTERTABLE<表名>
ADD<列名1>BITNOTNULL,--添加多个列不用括号,用逗号分开即可
<列名2>INTNOTNULLUNIQUE--声明的时候,和创建表的时候一样
示例:
ALTERTABLET_CUSTOMER
ADDGENDERBITNOTNULL,--添加多个列不用括号,用逗号分开即可
CUSTOMERADDRESSINTNOTNULLUNIQUE--声明的时候,和创建表的时候一样
2、删除列
/*删除列*/
ALTERTABLE<表名>
DROPCOLUMN<列名1>,<列名2>--使用关键字COLUNM(列)
示例:
ALTERTABLET_CUSTOMER
DROPCOLUMNGENDER,CUSTOMERADDRESS--使用关键字COLUNM(列)
/*每个列名之间用逗号隔开,如果列上有任何约束,则需要先删除约束*/
3、添加主键约束,唯一性约束、check约束和默认值约束
/*添加主键约束,唯一性约束,check约束和默认值约束*/
ALTERTABLE<表名>
ADDCONSTRAINT<约束名>CHECK(CHECK约束内容),--CHECK约束,每个约束之间用逗号隔开
CONSTRAINT<约束名>UNIQUE(<列名>),--唯一性约束
CONSTRAINT<约束名>DEFAULT<默认约束值或函数>FOR<列名>--默认值约束
示例:
ALTERTABLET_CUSTOMER
ADDCONSTRAINTT_CUMSTOMER_AGE_CHECKCHECK(AGE>0),--CHECK约束
CONSTRAINTT_CUSTOMER_USERNAME_UNIQUEUNIQUE(USERNAME),--唯一性约束
CONSTRAINTT_CUSTOMER_DEFAULTDEFAULTGETDATE()FORMODIFIEDDATE--默认值约束
4、删除主键约束,唯一性约束、check约束和默认值约束
/*删除主键约束,删除唯一性约束、删除check约束,删除默认值约束*/
ALTERTABLE<表名>
DROP<约束名1>,<约束名2>,<约束名3>--后边直接跟约束名,用逗号隔开
示例:
ALTERTABLET_CUSTOMER
DROPT_CUSTOMER_DEFAULT,--后边直接跟约束名,用逗号隔开
UQ__T_CUSTOM__EDBD0E1935BCFE0A,
CK__T_CUSTOMER__AGE__276EDEB3
如果创建的时候,没有显性的指定约束名,例如UNIQUE,CHECK等约束,可以通过SP_HELPT_CUSTOMER来查询所有的约束名。
在查询结果的第7个结果集中,可以看到类似下图的结果,第一列是约束类型,第二列就是约束名,最后一列是列名。
5、修改列的字段类型
/*修改列的字段类型和非空*/
ALTERTABLE<表名>
ALTERCOLUMN<列名><新数据类型>
示例:
ALTERTABLET_CUSTOMER
ALTERCOLUMNCUSTOMERADDRESSNVARCHAR(100)–-修改多列的字段类型还不知道怎么改
6、设置列的空/非空
/*修改列的空和非空*/
ALTERTABLE<表名>
ALTERCOLUMN<列名><数据类型>NOTNULL—必须跟数据类型,否则会
示例:
ALTERTABLET_CUSTOMER
ALTERCOLUMNMODIFIEDDATEDATENULL
7、修改列名
/*修改列名,可能会破坏脚本和存储过程*/
EXECSP_RENAME'
示例:
EXECSP_RENAME'T_CUSTOMER.PHONENUMBER','PHONE','COLUMN'--将原来的PHONENUMBER电话号码,改成PHONE电话
【删除表】
DROPTABLE
三、表数据
【插入数据】
1、插入一行全字段数据
/*插入一行全字段数据*/
INSERTINTO
VALUES('值1','值2','值3')–-值的数量必须和表定义的一样多,而且数据类型必须一一对应
示例:
INSERTINTOT_CUSTOMER
VALUES(NEWID(),'公司3','用户3','123',DEFAULT,'xxx')–-要到了NEWID()函数
2、插入一行部分字段数据
/*插入一行数据*/
INSERTINTO
(列1,列2,列3..)
VALUES('值1','值2','值3')–-字符串是要用单引号括起来,数字值不用
示例:
INSERTINTOT_CUSTOMER2
(COMPANYNAME,USERNAME,PHONENUMBER)
VALUES('公司1','用户1','')—与要插入的列一一对应,可以不同于表定义的顺序,可以乱序,只要一一对应即可
/*CUSTOMERID是标识列,自增的,所以不用指定*/
3、插入多行数据
INSERTINTOT_CUSTOMER2
(COMPANYNAME,USERNAME,PHONENUMBER)
VALUES('公司2','用户2',''),
('公司3','用户3',''),--用括号将每一行数据括起来,括号与括号之间用逗号隔开
('公司4','用户4','')
4、插入函数值和默认值
/*UNIQUEIDENTIFIER类型字段,使用NEWID()函数。
有默认值的使用DEFAULT关键字*/
INSERTINTO
(列1,列2,列3,列4,)
VALUES(NEWID(),'值1','值2',DEFAULT)
示例:
/*CUSTOMERID是UNIQUEIDENTIFIER类型,所以要使用NEWID()函数,MODIFIEDDATE字段有模式值,是取得当前的日期时间GETDATE()函数*/
INSERTINTOT_CUSTOMER
(CUSTOMERID,COMPANYNAME,USERNAME,PHONE,MODIFIEDDATE)
VALUES(NEWID(),'公司','用户','',DEFAULT)
【修改数据】
/*UPDATE通常是与SET和WHERE配合使用,如果不用WHERE,则会把整个列都修改*/
UPDATE
SET列='值'
WHERE列='值'AND列='值'—-可以是任何删选条件
示例:
/*将公司2的电话号码修改成*/
UPDATET_CUSTOMER
SETPHONE=''
WHERECOMPANYNAME='公司2'
【查询数据】
1、查询所有数据,或者部分行数据(用where进行过滤)
/*查询表中的所有数据用星号*/
SELECT*
FROM
WHERE<筛选条件1>AND<筛选条件2>OR<筛选条件3>
示例:
/*查询客户表中的所有数据*/
SELECT*FROMT_CUSTOMER
2、查询表中的部分列数据,
/*查询部分列的所有数据,或者部分行部分列的数据*/
SELECT<列名1>,<列名2>,<…>--这个列名顺序可以按照自己的想法来,不用非要和表定义一致
FROMT_ORDER
WHERE<筛选条件1>AND<筛选条件2>OR<筛选条件3>
示例:
/*查询订单表中的所有数据*/
SELECTPRODUCT,PAYMENT
FROMT_ORDER
3、对查询出来的数据进行排序
/*ORDERBY的默认排序是升序ASC,如果BY的列是数字,则是从大到小,如果是字符串,则是从A到Z,如果是时间从远至近。
降序的话是加关键字DESC。
假如是升序,最好也加上ASC*/
SELECT*
FROM
WHERE<筛选条件1>AND<筛选条件2>OR<筛选条件3>
ORDERBY<列名1>ASC(升序)/DESC(降序),<列名2>ASC(升序)/DESC(降序)
/*列1和列2可以采用不一样的排序*/
示例:
/*查询客户表中的所有数据*/
SELECT*
FROMT_ORDER
WHEREPAYMENT>100–价格大于100
ORDERBYPRODUCTASC,PAYMENTDESC--产品名称使用升序,产品价格使用降序
【删除数据】
1、删除一般数据
/*删除公司一般数据*/
DELETEFROM
WHERE<筛选条件1>AND<筛选条件2>OR<筛选条件3>
示例:
/*删除公司,公司ID是订单表的外键*/
DELETEFROMT_CUSTOMER
WHERECOMPANYNAME='公司1'
2、快速高效的删除表内的全部数据
/*快速高效的清空表内的全部数据,TRUNCATE本意是截短、把…截短。
TRUNCATE只能用来删除表中的所有数据,不能用来删除部分数据,而且有外键约束的主键表不能被删除*/
TRUNCATETABLE
示例:
/*删除公司,公司ID是订单表的外键*/
TRUNCATETABLET_CUSTOMER
3、删除有外键约束的数据
/*如果该条数据已经被外键表引用,则无法删除。
被引用的数据必须置于未被使用的状况,方法就是修改外键表字段,或者删除外键表中的引用数据*/
示例:
/*删除公司,公司ID是订单表的外键*/
UPDATET_ORDER–将所有引用公司1的数据全部改成公司2
SETORDER_CUSTOMERID='2f20b157-a287-43e0-be99-1fb917618629'
WHEREORDER_CUSTOMERID='c013076f-7889-400e-aa7a-b38436730d70'
/*然后才可以在主键表中删除公司1*/
DELETEFROMT_CUSTOMER
WHERECOMPANYNAME='公司1'
四、其他辅助关键字
【LIKE通配符】
1、单字符通配符,只能用于字符串匹配
/*单字符通配符_*/
SELECT*
FROMT_CUSTOMER
WHERE<列名1>LIKE'_通配符_'AND<筛选条件2>OR<筛选条件3>
示例:
SELECT*
FROMT_CUSTOMER
WHEREUSERNAMELIKE'用户_'–-将客户表中包含”用户+任意字符”的行数据查出来
2、多字符通配符,只能用于字符串匹配
/*单字符通配符%,百分号代表*从0到N的字符串/
SELECT*
FROMT_CUSTOMER
WHERE<列名1>LIKE'%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQLServer 常用 关键字 数据类型 语法
![提示](https://static.bdocx.com/images/bang_tan.gif)