IT评测·应用市场-qidao123.com
标题: 【SQL实验】数据库、表、模式的SQL语句使用 [打印本页]
作者: 何小豆儿在此 时间: 2024-11-11 04:42
标题: 【SQL实验】数据库、表、模式的SQL语句使用
完整代码在文章末端
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;
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) |
Powered by Discuz! X3.4 |