目录
1.创建数据库
1.普通创建
查询系统视图是否存在数据库后创建。
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'MyDatabase')
BEGIN
CREATE DATABASE MyDatabase;
END
2.指定文件路径和大小创建
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'MyDatabase')
BEGIN
CREATE DATABASE MyDatabase
ON PRIMARY
(
NAME = MyDatabase_Data,
FILENAME = 'C:\SQLData\MyDatabase.mdf',
SIZE = 10MB,
MAXSIZE = 50MB,
FILEGROWTH = 5MB
)
LOG ON
(
NAME = MyDatabase_Log,
FILENAME = 'C:\SQLLogs\MyDatabase.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 1MB
);
END
解释语法行为:
- ON PRIMARY:指定主文件组。
- NAME:逻辑文件名。
- FILENAME:物理文件名和路径。
- SIZE:初始大小。
- MAXSIZE:文件的最大大小。
- FILEGROWTH:文件增长的增量。
- LOG ON:指定日志文件的属性。
3.删除数据库
--IF EXISTS 可选语法 作用是防止在数据库不存在时产生错误
DROP DATABASE IF EXISTS MyDatabase;
2.创建表
判断是否存在后创建。
--指定数据库
USE MyDatabase;
GO
--判断是否存在后新建表
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'UserTest') AND type in (N'U'))
BEGIN
CREATE TABLE UserTest (
id NVARCHAR(50) PRIMARY KEY,
UserId NVARCHAR(50),
Pwd NVARCHAR(50),
userName NVARCHAR(50),
age INT,
IsDeleted BIT,
Stutes BIT,
CreateUserId NVARCHAR(50),
CreateUserName NVARCHAR(50),
CreateDate DATETIME,
ModifyUserId NVARCHAR(50),
ModifyUserName NVARCHAR(50),
ModifyDate DATETIME,
);
END
2.1.加标识和约束
- 自增标识 IDENTITY(1,1)
- 主键标识 PRIMARY KEY
- 唯一标识 UNIQUE
- 不可为空 NOT NULL
- 默认值 DEFAULT 1 如 hire_date DATE DEFAULT GETDATE()
- 定义条件 CHECK 如 salary DECIMAL(10, 2) CHECK (salary > 0)
3.操作表
3.1.判断是否存在后给表加字段
-- 使用 INFORMATION_SCHEMA.COLUMNS 视图查看表字段是否存在
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'UserTest'
AND COLUMN_NAME = 'CloTest')
BEGIN
ALTER TABLE UserTest
ADD CloTest VARCHAR(20);
END
-- 使用 sys.columns 视图查看表字段是否存在
IF NOT EXISTS (SELECT * FROM sys.columns
WHERE object_id = OBJECT_ID(N'UserTest')
AND name = 'CloTest')
BEGIN
ALTER TABLE UserTest
ADD CloTest VARCHAR(20);
END
3.2.添加字段
--添加字段
ALTER TABLE UserTest
ADD CloTest NVARCHAR(50);
3.3.修改字段
--修改字段
EXEC sp_RENAME 'UserTest.CloTest', 'CloTestaa';
3.4.删除字段
--删除字段
ALTER TABLE UserTest
DROP COLUMN CloTest;
3.5.删除表/数据
--删除表数据
TRUNCATE TABLE UserTest ;
--删除表
DROP TABLE UserTest ;
3.6.创建索引
--为表创建索引以提高查询性能
CREATE INDEX idx_last_name ON UserTest (userName);
3.7. 为字段添加说明
可以给每个字段加中文说明其作用
EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = N'说明内容',
@level0type = N'Schema', @level0name = N'dbo',
@level1type = N'Table', @level1name = N'需要加说明的表名',
@level2type = N'Column', @level2name = N'需要加说明的列名';
说明:
- @name: 指定要添加的扩展属性的名称。对于描述或注释,通常使用 N'MS_Description'。
- @value: 指定扩展属性的值,即你要添加的描述或注释内容。
- @level0type: 指定对象的第一级类型,通常是架构(Schema)。常见的值有 N'Schema'。
- @level0name: 指定第一级对象的名称,通常是架构的名称。默认情况下是 N'dbo'。
- @level1type: 指定对象的第二级类型,通常是表(Table)或视图(View)。常见的值有 N'Table'。
- @level1name: 指定第二级对象的名称,即表或视图的名称。
- @level2type: 指定对象的第三级类型,通常是列(Column)。常见的值有 N'Column'。
- @level2name: 指定第三级对象的名称,即列的名称。