SQL server常用操作命令

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
use mytest
go
 
--nchar类型与char类型完全相同,除了nchar是以Unicode格式而非ANSI格式来存储字符。
--Unicode格式比ANSI格式有更大的字符集范围。ANSI字符集仅有256个字符,Unicode字符集有65536个不同的字符。
--在SQL server中,Unicode数据类型要占用更多的存储空间,SQL server将为Unicode数据类型分配双倍的内部
--存储空间,因此,除非数据库中的确需要以这种格式保存字符,否则应使用ANSI。
 
--新建数据库
--create database mytest
 
--删除数据库
--drop database mytest
 
--新建表
--create table SaleManager(
--number varchar(10) not null,
--name vachar(20) not null,
--sex char(4) not null)
 
--删除表
--drop table SaleManager
 
--修改表名
--EXEC sp_rename 'SaleManager','Student'
 
--插入数据
--insert into SaleManager values(1501,N'jia',N'男'),(1502,N'ze',N'男')
 
--更改列名      注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。
--exec sp_rename 'SaleManager.[birthday]','Birthday ','column '
 
--更改列类型
--alter table SaleManeger alter column Birthday date
 
--增加列
--alter table SaleManager add Birthday date
 
--更新数据
--update SaleManager set Birthday = '07/15/2015' where number = 1501
 
--删除列
--alter table SaleManager drop column Birthday
 
--变量的使用
--declare @number int
--set @number = 2015
--print @number
 
--赋值列所有数据
--update SaleManager set [Birthday ] = '02/12/2014'
 
--使用聚合函数
--select N'人员数量' = COUNT(*),
--     N'平均年龄' = AVG(Age),
--     N'最小年龄' = MIN(Age),
--     N'最大年龄' = MAX(Age),
--     N'年龄方差' = STDEV(Age)
--from SaleManager
 
--使用数学函数
--select N'自然对数' = LOG(10),
--     N'指数' = EXP(12),
--     N'符号' = SIGN(2),
--     N'圆周率' = PI(),
--     N'正弦' = SIN(PI()/2.0),
--     N'余弦' = COS(PI()/2.0)
 
--使用字符串函数
--select name,
--     N'名字长度' = LEN(name)
--from SaleManager
 
--选取id为1和2的数据行,in可译为'有,为'
--select * from Score
--where id in (1,2)
 
--通配符%替代一个或多个字符,_仅替代一个字符,[charlist]字符列中的任何一个首字符,[!charlist]
--select * from Score
--where name like 'j%'
--where name like 'z_'
--where name like '[j]%'
 
--操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
--select * from Score
--where name between 'jia' and 'ze'
 
--通过使用 SQL,可以为列名称和表名称指定别名(Alias),as可省略
--指定表别名,多表查询
--select sc.name,sa.number
--from Score as sc,SaleManager as sa
--where sc.name = 'jia' and sa.number = 1501
--指定列别名
--select name as n,sex as s
--from Score
 
--UNION 操作符用于合并两个或多个 SELECT 语句的结果集.
--默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL
--select name from SaleManager
--union     --(union all)
--select name from Score
 
--SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中
--SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档
--select * into Score1   --(in 'backup.mdb')
--from Score
--(where id = 01)
 
/*UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
例:Id_P int NOT NULL UNIQUE,
*/
 
/*PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表应该都一个主键,并且每个表只能有一个主键。
例:Id_P int NOT NULL PRIMARY KEY,
*/
 
/*一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
例:FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
*/
 
/*CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
例:Id_P int NOT NULL CHECK (Id_P>0),
*/
 
/*DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新纪录。
例:City varchar(255) DEFAULT 'Sandnes'
*/
 
/*Auto-increment 会在新纪录插入表中时生成一个唯一的数字。
我们通常希望在每次插入新纪录时,自动地创建主键字段的值。
我们可以在表中创建一个 auto-increment 字段。
MS SQL 使用 IDENTITY 关键字来执行 auto-increment 任务
默认地,IDENTITY 的开始值是 1,每条新纪录递增 1。
要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10)
下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键:
P_Id int PRIMARY KEY IDENTITY
*/
 
/*SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:
DATE            - 格式: YYYY-MM-DD 
DATETIME        - 格式: YYYY-MM-DD HH:MM:SS 
SMALLDATETIME   - 格式: YYYY-MM-DD HH:MM:SS 
TIMESTAMP       - 格式: 唯一的数字 
*/
 
/*NULL 值的处理方式与其他值不同。
NULL 用作未知的或不适用的值的占位符。
注释:无法比较 NULL 和 0;它们是不等价的。
*/
 
/*在 SQL Server 中的合计函数:
     函数                  描述 
AVG(column)             返回某列的行数   
COUNT(column)           返回某列的行数(不包括NULL值) 
COUNT(*)                返回被选行数 
COUNT(DISTINCT column)  返回相异结果的数目 
FIRST(column)           返回在指定的域中第一个记录的值(SQLServer2000 不支持) 
LAST(column)            返回在指定的域中最后一个记录的值(SQLServer2000 不支持) 
MAX(column)             返回某列的最高值 
MIN(column)             返回某列的最低值  
SUM(column)             返回某列的总和 
 
例:select avg(age) as AveAge from SaleManager
*/
 
/*SQL索引有两种,聚集索引和非聚集索引,聚集索引存储记录是物理上连续存在,
而非聚集索引是逻辑上的连续,物理存储并不连续。
聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。
*/
 
--创建视图
--create view [FirstView] as
--select name, score
--from Score
--(where score>80)
--go
 
--查询视图
--select * from [FirstView]
 
--GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
--select name, AVG(score) as AveScore from Score
--group by name
 
--HAVING 子句,在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
--select name, AVG(score) as AveScore from Score
--where sex = '女'
--group by name
--having AVG(score)>80
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
2月前
|
SQL 存储 数据库
新建数据集SQL命令详解及技巧
在数据库管理中,新建数据集(即创建新表)是常见的操作之一
|
2月前
|
SQL 安全 关系型数据库
sql注入原理和sqlmap命令的基础命令以及使用手法
sql注入原理和sqlmap命令的基础命令以及使用手法
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
5月前
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
171 28
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
118 13
|
4月前
|
SQL 数据库 开发者
深入理解SQL中的ALIAS命令
【8月更文挑战第31天】
87 0
|
4月前
|
SQL 存储 关系型数据库
|
5月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
5月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
63 6
|
5月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
408 1