在数据库管理中,MSSQL(Microsoft SQL Server)提供了丰富的命令和语法,用于数据操作、管理及维护,以下从基础到进阶,详细梳理常用命令及用法,涵盖数据查询、表管理、用户权限、事务处理等核心场景。

基础数据查询与操作
数据查询是MSSQL最核心的功能,主要通过SELECT语句实现,基础语法包括:
- 查询所有列:
SELECT * FROM 表名; - 查询指定列:
SELECT 列1, 列2 FROM 表名; - 条件查询:
SELECT * FROM 表名 WHERE 条件;(如WHERE 年龄 > 18) - 排序:
SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;(升序/降序) - 聚合函数:
SELECT COUNT(*), AVG(成绩) FROM 表名;(统计数量、平均值等) - 分组:
SELECT 部门, COUNT(*) FROM 表名 GROUP BY 部门;
多表查询通过JOIN实现,如SELECT a.姓名, b.部门 FROM 员工表 a JOIN 部门表 b ON a.部门ID = b.ID;。
表的管理命令
表是数据库的基本结构,MSSQL提供了完整的创建、修改、删除命令:
-
创建表:
(图片来源网络,侵删)CREATE TABLE 表名 ( 列名1 数据类型 PRIMARY KEY, 列名2 数据类型 NOT NULL, 列名3 数据类型 DEFAULT 默认值 );常见数据类型包括
INT(整数)、VARCHAR(n)(变长字符串)、DATETIME(日期时间)、BIT(布尔型)等。 -
修改表结构:
- 添加列:
ALTER TABLE 表名 ADD 列名 数据类型; - 修改列:
ALTER TABLE 表名 ALTER COLUMN 列名 新数据类型; - 删除列:
ALTER TABLE 表名 DROP COLUMN 列名;
- 添加列:
-
删除表:
DROP TABLE 表名;(注意:删除后数据无法恢复,需谨慎操作)
数据操作语言(DML)
DML用于操作表中的数据,主要包括插入、更新、删除:

-
插入数据:
- 单行插入:
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2); - 多行插入:
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2), (值3, 值4);
- 单行插入:
-
更新数据:
UPDATE 表名 SET 列名1 = 新值1 WHERE 条件;(建议添加WHERE条件,否则更新全表) -
删除数据:
DELETE FROM 表名 WHERE 条件;(不加WHERE则清空表数据)
事务处理
事务确保数据操作的原子性,要么全部成功,要么全部回滚,核心命令:
- 开始事务:
BEGIN TRANSACTION; - 提交事务:
COMMIT TRANSACTION;(确认操作) - 回滚事务:
ROLLBACK TRANSACTION;(撤销操作)
示例:BEGIN TRANSACTION; UPDATE 账户表 SET 余额 = 余额 - 100 WHERE ID = 1; UPDATE 账户表 SET 余额 = 余额 + 100 WHERE ID = 2; COMMIT TRANSACTION;
用户与权限管理
MSSQL支持多用户操作,需通过权限管理保障数据安全:
- 创建用户:
CREATE LOGIN 用户名 WITH PASSWORD = '密码'; - 创建数据库用户:
CREATE USER 用户名 FOR LOGIN 用户名; - 授权:
GRANT SELECT, INSERT ON 表名 TO 用户名;(授予查询、插入权限) - 撤销权限:
REVOKE DELETE ON 表名 FROM 用户名;(撤销删除权限) - 删除用户:
DROP USER 用户名;
常用系统函数与存储过程
-
系统函数:
- 字符串处理:
LEN(列名)(长度)、SUBSTRING(列名, 起始位置, 长度)(截取) - 日期处理:
GETDATE()(当前时间)、DATEADD(日, 1, 日期)(日期加减) - 类型转换:
CAST(列名 AS 数据类型)、CONVERT(数据类型, 列名)
- 字符串处理:
-
存储过程:
创建存储过程可封装复杂逻辑:CREATE PROCEDURE 存储过程名 @参数1 数据类型, @参数2 数据类型 = 默认值 AS BEGIN SELECT * FROM 表名 WHERE 列名 = @参数1; END调用存储过程:
EXEC 存储过程名 @参数1 = 值, @参数2 = 值;
维护与优化命令
- 备份数据库:
BACKUP DATABASE 数据库名 TO DISK = '备份路径.bak'; - 恢复数据库:
RESTORE DATABASE 数据库名 FROM DISK = '备份路径.bak'; - 查看索引:
EXEC SP_HELPINDEX '表名'; - 重建索引:
ALTER INDEX 索引名 ON 表名 REBUILD;
相关问答FAQs
Q1:如何查询MSSQL数据库中所有表的信息?
A:可通过查询系统表sys.tables或使用系统存储过程SP_TABLES实现,示例:
SELECT * FROM sys.tables;(返回当前数据库所有表名及相关信息)EXEC SP_TABLES;(返回所有表、视图等对象列表)
Q2:MSSQL中如何批量导入CSV文件数据到表?
A:使用BULK INSERT命令,需确保CSV文件格式与表结构匹配,示例:
BULK INSERT 表名
FROM 'C:\数据文件.csv'
WITH (
FIELDTERMINATOR = ',', -- 字段分隔符
ROWTERMINATOR = '\n', -- 行分隔符
FIRSTROW = 2 -- 从第2行开始导入(跳过标题行)
); 