完整代码在文章末尾
1、数据库的建立、删除和修改操作
(1)使用SQL语句创建数据库EDUC,并进行如下设置:
数据库文件和日志文件的逻辑名称分别为:Student_data和Student_log;数据文件的物理文件名为‘C:\DATABASE\Student_data.MDF';数据文件的初始大小为5MB,文件增长量为1MB;日志文件的增长方式初始大小为2MB,文件增长量为10%;日志文件的物理文件名为‘C:\DATABASE\Student_log.LDF'。
将要执行的语句高亮可以单独执行
如果像这样没有出现的话,
右击刷新
通过数据库属性查看操作结果
(2)使用SQL语句在数据库EDUC添加一个数据文件,逻辑名称:Student_data1,物理文件名为‘C:\DATABASE\Student_data1.NDF'文件夹中,数据文件的初始大小为2MB,文件增长量为10%
通过数据库属性查看操作结果
(3)使用SQL语句修改数据文件"Student_data1",初始大小为5MB,文件增长量为2MB,最大值为1GB
通过数据库属性查看操作结果
(4)使用SQL语句将新添加数据文件"Student_data1"删除。
通过数据库属性查看操作结果
2、数据表的建立、删除和修改操作
(1)使用SQL语句在EDUC数据库中创建三个基本表(表名为“student”、“course”和“sc”)。
通过数据库属性查看操作结果
(2)使用SQL语句将student表中“sname”列的数据类型为CHAR(40)
通过数据库属性查看操作结果
(3)使用SQL语句在student表中添加新列,列名为“高考成绩”,数据类型为int
通过数据库属性查看操作结果
(4)使用SQL语句删除“高考成绩”列
通过数据库属性查看操作结果
(5)使用SQL语句设置student中的“sage”为not null
通过数据库属性查看操作结果
ALTER COLUMN
指定要修改的列
ADD CONSTRAINT
用于添加新约束,约束名称为check_ccredit
。CHECK (ccredit BETWEEN 1 AND 3)
CHECK
是一种约束,用于限制列中的值。
(ccredit BETWEEN 1 AND 3)
表示ccredit
列的值必须在 1 和 3 之间(包括 1 和 3),确保数据在有效范围内。
(6)使用SQL语句设置course中的“ccredit”的取值范围为1-3
通过数据库属性查看操作结果
-- 添加新列,指定数据类型和是否允许为空 ALTER TABLE 表名 ADD 列名 数据类型[(长度)] [NULL | NOT NULL]; -- NULL:允许空值,NOT NULL:不允许空值 -- 添加自增列 (IDENTITY) ALTER TABLE 表名 ADD 列名 数据类型[(长度)] IDENTITY(标识种子, 标识增量); -- IDENTITY:自动递增 -- 修改列的数据类型、长度或是否允许为空 ALTER TABLE 表名 ALTER COLUMN 列名 数据类型[(长度)] [NULL | NOT NULL]; -- ALTER COLUMN 修改现有列 -- 删除列 ALTER TABLE 表名 DROP COLUMN 列名 [, …n]; -- DROP COLUMN 删除一个或多个列 -- 添加约束 ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束定义; -- ADD CONSTRAINT 添加约束 -- 添加外键约束,引用其他表的主键 -- 例如:在 "sc" 表中为 "sno" 列添加外键,引用 "student" 表中的 "sno" ALTER TABLE sc ADD CONSTRAINT fk_sc_sno FOREIGN KEY (sno) REFERENCES student(sno); -- 删除约束 ALTER TABLE 表名 DROP CONSTRAINT 约束名; -- DROP CONSTRAINT 删除约束 -- 禁用约束 ALTER TABLE 表名 NOCHECK CONSTRAINT 约束名; -- NOCHECK 暂时禁用约束 -- 8启用约束 ALTER TABLE 表名 CHECK CONSTRAINT 约束名; -- CHECK 重新启用已禁用的约束
3、模式的建立、删除和修改操作
(1)使用SQL语句:在EDUC数据库下,为guest用户创建ST模式,在该模式下面创建一张STUDENT表(列信息如上面的student表)
这个错误的意思需要将 CREATE SCHEMA
和其他操作分开处理,单独建一个文件,但这样运行不影响
或者
再运行:
(2)使用SQL语句删除ST模式,若不能删除,为什么?如何才能删除?
- 模式不能直接删除,如果其中包含对象(如表),必须先删除模式下的所有对象,才能删除模式。
- 先删除模式中的对象,再删除模式本身,才能成功删除模式。
完整运行代码:
--创建数据库EDUC并设置数据库文件和日志文件【这里路径自己设定了一下】
CREATE DATABASE EDUC
ON
(
NAME = 'Student_data',
FILENAME = 'D:\code files\SQL DATA\Student_data.MDF',
SIZE = 5MB,
FILEGROWTH = 1MB
)
LOG ON
(
NAME = 'Student_log',
FILENAME = 'D:\code files\SQL DATA\Student_log.LDF',
SIZE = 2MB,
FILEGROWTH = 10%
);
--在数据库EDUC中添加数据文件
ALTER DATABASE EDUC
ADD FILE
(
NAME = 'Student_data1',
FILENAME = 'D:\code files\SQL DATA\Student_data1.NDF',
SIZE = 2MB,
FILEGROWTH = 10%
);
--修改数据文件
ALTER DATABASE EDUC
MODIFY FILE
(
NAME = 'Student_data1',
SIZE = 5MB,
FILEGROWTH = 2MB,
MAXSIZE = 1GB
);
--删除数据文件
ALTER DATABASE EDUC
REMOVE FILE Student_data1;
--数据表的建立、删除和修改操作
-- 创建 student 表
CREATE TABLE student (
sno CHAR(9) NOT NULL,
sname CHAR(20) NOT NULL,
ssex CHAR(2),
sage SMALLINT,
sdept CHAR(20),
PRIMARY KEY (sno)
);
-- 创建 course 表
CREATE TABLE course (
cno CHAR(4) NOT NULL,
cname CHAR(40) NOT NULL,
cpno CHAR(4),
ccredit SMALLINT,
PRIMARY KEY (cno)
);
-- 创建 sc 表
CREATE TABLE sc (
sno CHAR(9) NOT NULL,
cno CHAR(4) NOT NULL,
grade SMALLINT,
PRIMARY KEY (sno, cno),
FOREIGN KEY (sno) REFERENCES student(sno),
FOREIGN KEY (cno) REFERENCES course(cno)
);
--修改
ALTER TABLE student
ALTER COLUMN sname CHAR(40) NOT NULL;
ALTER TABLE student
ADD 高考成绩 INT;
ALTER TABLE student
DROP COLUMN 高考成绩;
ALTER TABLE student
ALTER COLUMN sage SMALLINT NOT NULL;
ALTER TABLE course
ADD CONSTRAINT check_ccredit
CHECK (ccredit BETWEEN 1 AND 3);
go
-- 在 EDUC 数据库中为 guest 用户创建 ST 模式
CREATE SCHEMA ST AUTHORIZATION guest;
go
-- 在 ST 模式下创建 STUDENT 表
CREATE TABLE ST.STUDENT (
sno CHAR(9) NOT NULL,
sname CHAR(20) NOT NULL,
ssex CHAR(2),
sage SMALLINT,
sdept CHAR(20),
PRIMARY KEY (sno)
);
-- 尝试删除 ST 模式
DROP SCHEMA ST;
--运行结果:无法对 'ST' 执行 drop schema,因为对象 'PK__STUDENT__DDDF64467444FCB1' 正引用它。
-- 要删除 ST 模式中的 STUDENT 表
DROP TABLE ST.STUDENT;
-- 删除 ST 模式
DROP SCHEMA ST;