SQL server常用操作命令


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

时间: 2025-01-26 22:42:40

SQL server常用操作命令的相关文章

SQL Server 常用SQL总结

  SQL Server 常用SQL总结 order by NAME collate Chinese_PRC_Stroke_CS_AS_KS_WS /*sqlserver分组不能以text,ntext,image类型的字段作为分组依据*/ --强制查询使用索引: select id from table_name with(index(索引名)) where num=@num --全文检索(name like '%abc%')(substring(cal_name ,1,3)='abc') se

SQL Server常用运算符学习总结教程

技术准备 基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析. 一.数据连接 数据连接是我们在写T-SQL语句的时候最常用的,通过两个表之间关联获取想要的数据. SQL Server默认支持三种物理连接运算符:嵌套循环连接.合并连接以及哈希连接.三种连接各有用途,各有特点,不同的场景会数据库会为我们选择最优的连接方式. a.嵌套循环连接(nested loops join) 嵌套循环连接是最简单也是最基础的连接方式.两张表通过关键字进行关联,然后

sql server 常用的几个数据类型

Sql server中常用的几个数据类型: binary 固定长度的二进制数据,其最大长度为 8,000 个字节. varbinary 可变长度的二进制数据,其最大长度为 8,000 个字节. image 可变长度的二进制数据,其最大长度为 2G+ - 1 (2,147,483,647) 个字节 text 服务器代码页中的可变长度非 Unicode 数据的最大长度为 2G+ (2,147,483,647) 个字符.当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节.存储

sql server 常用的扩展存储过程详解

sql server 里面提供了丰富的系统存储过程来辅助我们管理数据库以及开发.今天分享介绍一些常用的数据库扩展存储过程  xp_cmdshell 这个大家都比较熟悉了,使用xp_cmdshell 可以在连接sql server 的时候可以执行doc 命令 最简单一个例子EXEC master.sys.xp_cmdshell 'dir D:\' 获取D 盘下面的目录.当然这个D:\ 是服务器上面的,不是本地电脑的. 所以有时候可以使用 xp_cmdshell 配合作业都角度使用执行bcp等命令来

sql server 常用的几个数据类型_MsSql

Sql server中常用的几个数据类型: binary 固定长度的二进制数据,其最大长度为 8,000 个字节. varbinary 可变长度的二进制数据,其最大长度为 8,000 个字节. image 可变长度的二进制数据,其最大长度为 2G+ - 1 (2,147,483,647) 个字节 text 服务器代码页中的可变长度非 Unicode 数据的最大长度为 2G+ (2,147,483,647) 个字符.当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节.存储

Sql Server 常用日期格式

server SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08.177 整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(

SQL Server常用管理命令小结_MsSql

1. 查看数据库的版本 select @@version 2. 查看数据库所在机器操作系统参数 exec master..xp_msver 3. 查看数据库启动的参数 sp_configure 4. 查看数据库启动时间 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 查看数据库服务器名和实例名 print 'Server Name...............:' + conver

SQL Server常用存储过程及示例_MsSql

分页: 复制代码 代码如下: /*分页查找数据*/ CREATE PROCEDURE [dbo].[GetRecordSet] @strSql varchar(8000),--查询sql,如select * from [user] @PageIndex int,--查询当页号 @PageSize int--每页显示记录 AS set nocount on declare @p1 int declare @currentPage int set @currentPage = 0 declare @

SQL Server常用存储过程及示例

分页:复制代码 代码如下:/*分页查找数据*/ CREATE PROCEDURE [dbo].[GetRecordSet] @strSql varchar(8000),--查询sql,如select * from [user] @PageIndex int,--查询当页号 @PageSize int--每页显示记录 AS set nocount on declare @p1 int declare @currentPage int set @currentPage = 0 declare @Ro