sql server 入门篇

一、创建数据库

1、格式

CREATE DATABASE 数据库名称
[  /*[] 表示可省略*/
ON 
	[PRIMARY]   /*指定主数据库文件或文件组*/
	(	
		NAME = '主数据库文件的逻辑名称',
		FILENAME = '主数据库文件的路径名称',
		SIZE = 5,            /*文件初始大小*/
		MAXSIZE = 80,        /*文件的最大容量 可填 UNLIMITED*/
		FILEGROWTH = 2       /*文件的每次增长量*/
	),
    [,...n]  /*可重复多个文件,第一个以外的都为辅数据库文件*/
    
    [
	[filegroup dataGroup]  /*新建文件组 dataGroup (不是文件夹)*/
	(	
		/*文件信息*/
	),
    [,...n]  /*可重复多个文件*/
    
    [,...n]  /*可重复多个文件组*/
    ]

LOG ON 
	(	
		NAME = '事务日志文件的逻辑名称',
		FILENAME = '事务日志文件的路径名称',
		SIZE = 5,        /*文件初始大小*/
		MAXSIZE = 80,    /*文件的最大容量 可填 UNLIMITED*/
		FILEGROWTH = 2   /*文件的每次增长量*/
	),
    [,...n]   /*可重复多个日志文件*/
]

2、示例一: 创建名为 MISS 默认配置的数据库

CREATE DATABASE MISS

3、示例二: 创建名为 MISS 设定配置的数据库,

CREATE DATABASE MISS
ON
(
    NAME = 'mainData',
    FILENAME = 'C:\\MainData.mdf',
    SIZE = 3,
    MAXSIZE = 80,
    FILEGROWTH = 2
)

LOG ON 
(	NAME = 'log',
	FILENAME = 'C:\\Log.ldf',
	SIZE = 3,
	MAXSIZE = 80,
	FILEGROWTH = 2
)

4、示例三: 创建名为 MISS 设定配置, 两个文件组(不是文件夹),四个数据文件,两个日志文件的数据库

CREATE DATABASE MISS

ON
	PRIMARY
	(
		NAME = 'mainData',
		FILENAME = 'C:\\MainData.mdf',
		SIZE = 3,
		MAXSIZE = 80,
		FILEGROWTH = 2
	),
	(
		NAME = 'Data',
		FILENAME = 'C:\\Data.mdf',
		SIZE = 3,
		MAXSIZE = 80,
		FILEGROWTH = 2
	),

	filegroup dataGroup
	(
		NAME = 'data0',
		FILENAME = 'C:\\Data0.ndf',
		SIZE = 3,
		MAXSIZE = 80,
		FILEGROWTH = 2
	),
	(
		NAME = 'data1',
		FILENAME = 'C:\\Data1.ndf',
		SIZE = 3,
		MAXSIZE = 80,
		FILEGROWTH = 2
	)

LOG ON 
(	NAME = 'log0',
	FILENAME = 'C:\\Log0.ldf',
	SIZE = 3,
	MAXSIZE = 80,
	FILEGROWTH = 2
),
(	NAME = 'log1',
	FILENAME = 'C:\\Log1.ldf',
	SIZE = 3,
	MAXSIZE = 80,
	FILEGROWTH = 2
)

二、修改数据库

1、格式

/*一次只能执行一个选项*/
ALTER DATABASE 数据库名称
/*1、增加数据文件*/
ADD FILE
(
    /*文件信息*/
),
[,...n]  /*可重复多个文件,第一个以外的都为辅数据库文件*/
TO FILEGROUP dataGroup   /*文件添加至 dataGroup 文件组*/

/*2、增加事务日志文件*/
ADD LOG FILE
(
    /*文件信息*/
),
[,...n]  /*可重复多个文件,第一个以外的都为辅数据库文件*/

/*3、添加文件组*/
ADD FILEGROUP 文件组名称

/*4、删除文件,只有文件为空时才能删除*/
REMOVE FILE 文件逻辑名称

/*5、删除文件组,只有文件组为空时才能删除*/
REMOVE FILEGROUP 文件组名称

/*6、修改指定文件的属性,一次只能修改一个属性*/
MODIFY FILE
(
    NAME = '文件的逻辑名称',  /*此项不可修改*/
    /*需要修改的文件属性*/
)

/*7、重命名数据库*/
ALTER DATABASE 旧名称 MODIFY NAME = 新名称

2、示例

/*1、增加数据文件 file0 和 file1 */
ALTER DATABASE MISS
ADD FILE
(
	NAME = 'file0',
	FILENAME = 'F:\sql server\file0.ndf',
	SIZE = 3,
	MAXSIZE = 80,
	FILEGROWTH = 2
),
(
	NAME = 'file1',
	FILENAME = 'F:\sql server\file1.ndf',
	SIZE = 3,
	MAXSIZE = 80,
	FILEGROWTH = 2
)
TO FILEGROUP dataGroup


/*2、增加事务日志文件 logFile0 和 logFile1 */
ALTER DATABASE MISS
ADD LOG FILE
(
	NAME = 'logFile0',
	FILENAME = 'F:\sql server\logFile0.ldf',
	SIZE = 3,
	MAXSIZE = 80,
	FILEGROWTH = 2
),
(
	NAME = 'logFile1',
	FILENAME = 'F:\sql server\logFile1.ldf',
	SIZE = 3,
	MAXSIZE = 80,
	FILEGROWTH = 2
)


/*3、添加文件组 dataGroup0 */
ALTER DATABASE MISS
ADD FILEGROUP dataGroup0

/*4、删除文件 file1 */
ALTER DATABASE MISS
REMOVE FILE file1

/*5、删除文件组 dataGroup0 */
ALTER DATABASE MISS
REMOVE FILEGROUP dataGroup0

/*6、修改文件 file0.ndf 为 file.ndf */
ALTER DATABASE MISS
MODIFY FILE
(
    NAME = 'file0',
    FILENAME = 'F:\sql server\file.ndf'
)

/*7、数据库 MISS 重命名为 miss */
ALTER DATABASE MISS MODIFY NAME = miss

三、删除数据库

DROP DATABASE 数据库1名称,数据库2名称  /*不能删除正在使用的数据库*/

示例

DROP DATABASE miss

四、数据表创建

1、格式

CREATE TABLE 表格名称
(
    字段名称  字段类型 [约束 ...],
    字段名称  字段类型 [约束 ...],
    字段名称  字段类型 [约束 ...],
    ...
)
约束 描叙
primary key 将字段设置为主键
not null 指定该字段的值不能为空
unique 指定该字段的值不能重复
check 约束该字段值的范围
default 指定该字段的默认值

2、示例

CREATE TABLE missTb
(
编号 int primary key,  /*设置该字段为主键*/
姓名 varchar(10) unique not null,  /*设置该字段的值不能重复且不能为空*/
年龄 int check(年龄>=0 and 年龄 <=100),  /*设置该字段的值在0-100之间*/
性别 char(2) not null,  /*设置该字段的值不能为空*/
备注 text default '无',  /*设置该字段的默认值为 无*/
)

五、数据表数据修改(增、删、改)

–1) insert [into] 语句 (用于向表中插入新记录。)

insert [into] 数据表名 
[(字段名[,字段名2, ...])] 
values ([,2, ...])[,...n]  /*可插入多行数据*/

–2) update 语句 (用于更新表中的记录。)

update 数据表名称
set 字段1=1,字段2=2,...
[where 字段名 =]  /*如果不写则删除整个字段的值*/

–2) delete 语句 (用于删除表中的记录。)

delete from 数据表名称
[where 字段名 =]  /*如果不写则删除整个字段的值*/

–3) alter table 语句 (用于在已有的表中添加、删除或修改列。)

/*添加列*/
alter table 数据表名称 add 列名称 数据类型
/*删除列*/
alter table 数据表名称 
drop column 列名称
/*改变列的数据类型*/
alter table 数据表名称 
alter column 列名称 数据类型

六、数据表查询

数据表查询内容较多,基本是通用的。

–1) select 语句 (用于从数据表中选取数据。)

select *|字段名[,字段名2, ...] 
from 数据表名;

–2) where 子句 (用于提取那些满足指定条件的记录。)

SELECT *|字段名[,字段名2, ...] 
FROM 数据表名
WHERE *|字段名[,字段名2, ...] 条件表达式;

–3) and & or 运算符 (用于基于一个以上的条件对记录进行过滤。)

and 与运算符,符合所有条件则返回
or 或运算符,符合其中一个条件则返回

–4) distinct 关键字 (用来消除查询结果中的重复行)

select [distinct] * | 字段名[,字段名2, ...] 
from 数据表名

–5) top 关键字 (用来查找结果中前n条或前n%条记录)

select [top n | n percent] * | 字段名[,字段名2, ...] 
from 数据表名 

–6) between…and…关键字 (用于选取介于两个值之间的数据范围内的值。)

select *|字段名[,字段名2, ...] 
from 数据表名 
where 字段名 [not] between 低值 and 高值
--加"not"表示对满足between...and...关键字的查找结果取反值

–7) in 关键字 (用来查找结果为指定值的记录)

select *|字段名[,字段名2, ...] 
from 数据表名 
where 字段名 [not] in (1,2,3,...) 
--加"not"表示对满足in关键字的查找结果取反值

–8) is null 关键字 (用来查询字段中是否包含空值)

select *|字段名[,字段名2, ...] 
from 数据表名 
where 字段名 is null

–9) like 关键字 (用来实现表示一定范围的模糊查询,主要用于字符型字段,使用时放于where后面,作为筛选条件)

select [关键字] *|字段名[,字段名2, ...] 
from 数据表名 
where 字段名 [not] like '<字符表达式>' 
--加"not"表示对满足like关键字的查找结果取反值

–10) 通配符 (可用于替代字符串中的任何其他字符。)

%  替代 0 个或多个字符;
_  替代一个字符;
[] 匹配自字符集的任意单一字符
[^][] 相反

–11) as 关键字 (为表名称或列名称指定别名。)

select 字段名 as 字段别名
from 数据表名 as 数据表别名

–12) AVG() 函数 (返回数值列的平均值。)

select AVG(字段名) from 数据表名

–13) COUNT() 函数 (返回匹配指定条件的行数。)

select COUNT(*|字段名[,字段名2, ...]) 
from 数据表名 
[where 条件表达式];

–14) MAX() 函数 (返回指定列的最大值。)

select MAX(字段名) from 数据表名;

–15) MIN() 函数 (返回指定列的最小值。)

select MIN(字段名) from 数据表名;

–16) SUM() 函数 (返回数值列的总数。)

select SUM(字段名) from 数据表名;

–17) upper() 函数 (把字段的值转换为大写。)

select upper(字段名) FROM 数据表名;

–18) lower() 函数 (把字段的值转换为小写。)

select lower(字段名) FROM 数据表名;

–19) mid() 函数 (用于从文本字段中提取字符。)

select mid(字段名,开始位置[,返回的字符数]) FROM 数据表名;

–20) len() 函数 (返回文本字段中值的长度。)

select len(字段名) FROM 数据表名;

–21) round() 函数 (用于把数值字段舍入为指定的小数位数。)

select round(字段名,小数位数) FROM 数据表名;

–22) now() 函数 (返回当前系统的日期和时间。)

select now() FROM 数据表名;

–23) format() 函数 (用于对字段的显示进行格式化。)

select format(字段名,格式) FROM 数据表名;

–24) order by 语句 (用于对结果集进行排序。)

select *|字段名[,字段名2, ...]
from 数据表名
order by *|字段名[,字段名2, ...] asc|desc;

–25) group by 语句 (用于一个或多个列对结果集进行分组。)

select 字段名, 聚合函数(字段名)
from 数据表名
where 字段名 operator value
group by 字段名;

–26) having 子句 (用于限制聚合函数,)

select 字段名, 聚合函数(字段名)
from 数据表名
where 字段名 operator value
group by 字段名
having 聚合函数(字段名) operator value;

–27) exists 运算符 (用于判断查询子句是否有记录,存在返回 True,否则返回 False。)

select *|字段名[,字段名2, ...]
from 数据表名
where exists
(select 字段名 from 数据表名 where 条件表达式);

–28) INNER JOIN 关键字 (在表中存在至少一个匹配时返回行。)

SELECT *|字段名[,字段名2, ...]
FROM 数据表1
INNER JOIN 数据表2
ON 数据表1.字段名=数据表2.字段名;

–29) LEFT JOIN 关键字 (从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。)

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

–30) RIGHT JOIN 关键字 (从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。)

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

–31) FULL OUTER JOIN 关键字 (只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.)

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

–32) union 操作符 (用于合并两个或多个 SELECT 语句的结果集。)

select *|字段名[,字段名2, ...] from 数据表1
union
select *|字段名[,字段名2, ...] from 数据表2;

七、数据表操作

1、重命名数据表

exec sp_rename '旧数据表名称' , '新数据表名称'

2、删除数据表

drop table 数据表[,数据表2,...]

更多请参考 sql server 文档:
https://docs.microsoft.com/zh-cn/sql/sql-server/?view=sql-server-ver15

发布了35 篇原创文章 · 获赞 54 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42686768/article/details/105606694