mssql(SQL Server) 常用语句集合

博主是做php的,常用数据库也就是MySQL和mariadb,对于微软家族的产品不是很熟悉。
所以就在这里整理了mssql的一些常用的语句。以备不时之需

创建数据库

创建数据库可以直接使用CREATE DATABASE xxx来完成,在这里不做描述。仅仅用mssql奇葩的语句来创建。*

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE DATABASE stuDB 
ON PRIMARY -- 主库
(
NAME='stuDB', -- 数据库名
FILENAME='D:\stuDB.mdf', -- 数据库文件保存位置
SIZE=5MB, -- 数据库初始化大小
MAXSIZE=100MB, -- 数据库最大大小
FILEGROWTH=15% -- 数据库大小每次增长值
)
LOG ON -- 日志库
(
-- 同上
NAME='stuDB_log',
FILENAME='D:\stuDB_log.ldf',
SIZE=2MB,
MAXSIZE=100MB,
FILEGROWTH=1MB
)

创建表

创建表和其他数据库同样。这里不做解释

1
2
3
4
5
6
CREATE TABLE Users(
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(32) NOT NULL,
email VARCHAR(128) NOT NULL,
password VARCHAR(32) NOT NULL
);

对表结构的一些修改

这里和其他数据库语法大同小异。适量参考

删除列

1
ALTER TABLE Users DROP COLUMN email;

添加列

1
ALTER TABLE Users ADD Address VARCHAR(1024);

修改列数据类型

1
ALTER TABLE Users ALTER COLUMN password VARCHAR(64);

创建约束

我们在前面创建数据库的时候其实已经创建了约束。在这里列出的语句是在创建表之后添加约束。

增加主键约束

1
## ALTER TABLE User ADD CONSTRAINT PK_User_name PRIMARY KEY(name);

增加非空约束

1
ALTER TABLE User ALTER COLUMN name VARCHAR(32) NOT NULL;

增加唯一约束

1
ALTER TABLE User ADD CONSTRAINT UQ_User_email UNIQUE(email);

性别增加默认约束,默认为’男’

1
ALTER TABLE User ADD CONSTRAINT DF_User_sex DEFAULT('男') FOR sex

增加检查约束,性别只能’男’ 或 ‘女’

1
ALTER TABLE User ADD CONSTRAINT CK_User_sex CHECK(sex='男' OR sex='女')

增加检查约束,年龄必须在0-120岁之间

1
ALTER TABLE User ADD CONSTRAINT CK_User_age CHECK(age>=0 AND age<=120)

数据CRUD

这个和其他数据库都是一样的,只贴代码,不解释

插入数据

1
2
3
4
5
6
INSERT INTO Users(name,email,password) VALUES(
'tsln', 'tsln1998@qq.com', 'zzzzxxxxrrrr'
);
INSERT INTO Users(name,email,password) VALUES(
'root', 'tsln1998@gmail.com', 'zzzzxxxxrrrr'
);

查询数据

1
2
3
SELECT * FROM Users;
SELECT * FROM Users WHERE 'id' = 1;
SELECT name,email FROM Users;

删除数据

1
2
DELETE FROM Users;
DELETE FROM Users WHERER 'id' = 1;

更新数据

1
UPDATE Users SET name = 'Hello Github' WHERE 'id' = 1;

统计数据

1
2
3
4
5
6
7
8
-- 统计所有记录
SELECT COUNT(*) FROM Users;
-- 统计年纪大于18岁的
SELECT COUNT(*) FROM Users WHERE 'age' > 18;
-- 统计性别,每个性别有多少人
SELECT sex,COUNT(*) FROM Users GROUP BY sex;
-- 统计年纪,每个岁数有多少人,然后按照人数大小逆序排列
SELECT age,COUNT(*) FROM Users GROUP BY age ORDER BY age DESC;