一、创建数据库
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