数据库 SQL DotRedStone 2025-10-03 2025-10-03 命令 一、数据库操作 1. 创建数据库 基础创建语法 1 CREATE DATABASE [DatabaseName];
此简单形式会使用 model 数据库 作为模板创建新数据库,所有属性(包括文件大小、增长设置等)都继承自 model 数据库的配置
详细创建语法(生产环境推荐使用) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 CREATE DATABASE SMON PRIMARY ( NAME = SM, FILENAME = '/var/opt/mssql/data/SM.mdf' , SIZE = 10 MB, MAXSIZE = 50 MB, FILEGROWTH = 2 MB ) LOG ON ( NAME = SM_log, FILENAME = '/var/opt/mssql/data/SM_log.ldf' , SIZE = 5 MB, MAXSIZE = 30 MB, FILEGROWTH = 1 MB );
高级创建选项 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 CREATE DATABASE InventoryON PRIMARY ( NAME = Inventory_Primary, FILENAME = 'D:\Data\Inventory_Prm.mdf' , SIZE = 10 MB, MAXSIZE = 50 MB, FILEGROWTH = 5 MB ), FILEGROUP FG_Archive ( NAME = Inventory_Archive, FILENAME = 'D:\Data\Inventory_Arc.ndf' , SIZE = 5 MB, MAXSIZE = 25 MB, FILEGROWTH = 5 MB ) LOG ON ( NAME = Inventory_Log1, FILENAME = 'D:\Data\Inventory_Log1.ldf' , SIZE = 5 MB, MAXSIZE = 25 MB, FILEGROWTH = 5 MB ); CREATE DATABASE InternationalDB COLLATE Latin1_General_CI_AS;
安全检查后创建 1 2 3 4 5 6 7 8 9 10 IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = 'SM' ) BEGIN CREATE DATABASE SM; PRINT '数据库 SM 创建成功' ; END ELSE BEGIN PRINT '数据库 SM 已存在' ; END
2. 查看数据库信息 基本查看命令 1 2 3 4 5 6 7 8 9 10 11 ### 3. 删除数据库 ```sql -- 安全删除(如果存在) DROP DATABASE IF EXISTS [DatabaseName]; -- 强制删除(断开所有连接) USE master; GO ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DROP DATABASE [DatabaseName];
二、表操作 1. 创建表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE TABLE [TableName] ( column1 datatype, column2 datatype, column3 datatype, .... ); CREATE TABLE Students ( StudentID INT PRIMARY KEY , FirstName VARCHAR (50 ), LastName VARCHAR (50 ), Age INT , EnrollmentDate DATE );
2. 修改表 1 2 3 4 5 6 7 8 9 10 11 ALTER TABLE [TableName]ADD [ColumnName] [DataType];ALTER TABLE [TableName]ALTER COLUMN [ColumnName] [NewDataType];ALTER TABLE [TableName]DROP COLUMN [ColumnName];
3. 删除表 1 2 3 4 5 DROP TABLE [TableName];DROP TABLE IF EXISTS [TableName];
三、数据操作 1. 插入数据 1 2 3 4 5 6 7 8 9 INSERT INTO Students (StudentID, FirstName, LastName, Age, EnrollmentDate)VALUES (1 , 'John' , 'Doe' , 20 , '2023-09-01' );INSERT INTO Students (StudentID, FirstName, LastName, Age, EnrollmentDate)VALUES (2 , 'Jane' , 'Smith' , 22 , '2023-09-01' ), (3 , 'Tom' , 'Brown' , 21 , '2023-09-01' );
2. 查询数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT * FROM Students;SELECT FirstName, LastName FROM Students;SELECT * FROM Students WHERE Age > 21 ;SELECT * FROM Students ORDER BY EnrollmentDate DESC ;SELECT COUNT (* ) AS TotalStudents FROM Students;
3. 更新数据 1 2 3 4 5 6 7 8 9 UPDATE StudentsSET Age = 21 WHERE StudentID = 1 ;UPDATE StudentsSET FirstName = 'Johnathan' , LastName = 'Doe' WHERE StudentID = 1 ;
4. 删除数据 1 2 3 4 5 DELETE FROM Students WHERE StudentID = 1 ;DELETE FROM Students;
四、索引操作 1. 创建索引 1 2 3 4 5 CREATE INDEX IDX_LastName ON Students(LastName);CREATE INDEX IDX_Name_Age ON Students(FirstName, Age);
2. 删除索引 1 2 DROP INDEX IDX_LastName ON Students;
五、视图操作 1. 创建视图 1 2 3 4 5 CREATE VIEW StudentView AS SELECT FirstName, LastName, AgeFROM StudentsWHERE Age > 20 ;
2. 查询视图 1 2 SELECT * FROM StudentView;
3. 删除视图
六、存储过程 1. 创建存储过程 1 2 3 4 5 6 CREATE PROCEDURE GetStudentById @StudentID INT AS BEGIN SELECT * FROM Students WHERE StudentID = @StudentID ; END ;
2. 执行存储过程 1 EXEC GetStudentById @StudentID = 1 ;
3. 删除存储过程 1 DROP PROCEDURE IF EXISTS GetStudentById;
七、事务处理 1. 开始事务 1 2 3 4 5 6 7 8 9 10 11 BEGIN TRANSACTION;INSERT INTO Students (StudentID, FirstName, LastName, Age, EnrollmentDate)VALUES (4 , 'Alice' , 'Johnson' , 23 , '2023-09-01' );COMMIT ;ROLLBACK ;
八、权限管理 1. 创建用户 1 CREATE USER [Username] FOR LOGIN [LoginName];
2. 授予权限 1 GRANT SELECT , INSERT , UPDATE ON Students TO [Username];
3. 撤销权限 1 REVOKE INSERT ON Students FROM [Username];
4. 删除用户
九、备份与恢复 1. 备份数据库 1 2 3 BACKUP DATABASE [DatabaseName] TO DISK = 'D:\Backups\DatabaseName.bak' WITH FORMAT;
2. 恢复数据库 1 2 3 RESTORE DATABASE [DatabaseName] FROM DISK = 'D:\Backups\DatabaseName.bak' WITH REPLACE;