当前位置:Gxlcms > 数据库问题 > SQL server常用操作命令

SQL server常用操作命令

时间:2021-07-01 10:21:17 帮助过:2人阅读

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 server常用操作命令

标签:

人气教程排行