何小豆儿在此 发表于 2024-11-11 04:42:54

【SQL实验】数据库、表、模式的SQL语句使用

完整代码在文章末端

1、数据库的建立、删除和修改使用

(1)使用SQL语句创建数据库EDUC,并进行如下设置:
数据库文件和日记文件的逻辑名称分别为:Student_data和Student_log;数据文件的物理文件名为‘C:\DATABASE\Student_data.MDF';数据文件的初始巨细为5MB,文件增长量为1MB;日记文件的增长方式初始巨细为2MB,文件增长量为10%;日记文件的物理文件名为‘C:\DATABASE\Student_log.LDF'。
https://i-blog.csdnimg.cn/direct/d49a751ddd1d472bbc061a3b2a6bc875.png
将要执行的语句高亮可以单独执行
假如像这样没有出现的话,
https://i-blog.csdnimg.cn/direct/012d0eb82d9a48e191936e5d204a833e.png右击刷新https://i-blog.csdnimg.cn/direct/845c3e4aaa254d4e9cf96df78e582a18.png
通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/009e28303a24406ab826733d6bf0f5b6.png
(2)使用SQL语句在数据库EDUC添加一个数据文件,逻辑名称:Student_data1,物理文件名为‘C:\DATABASE\Student_data1.NDF'文件夹中,数据文件的初始巨细为2MB,文件增长量为10%
 https://i-blog.csdnimg.cn/direct/78cb90be68ec4b7c98a5e32703010599.png
通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/7dc991c491114c7fb63f4ee8dab6738a.png
(3)使用SQL语句修改数据文件"Student_data1",初始巨细为5MB,文件增长量为2MB,最大值为1GB
https://i-blog.csdnimg.cn/direct/dabf1c8c093242e0b5c49241c8737eb4.png通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/12d00144e3cf4ade994be40dd23f4b56.png
(4)使用SQL语句将新添加数据文件"Student_data1"删除。
https://i-blog.csdnimg.cn/direct/c26202db9ba84253951f4b61ead3a803.png
通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/7704cefcc749494c97a3134e27729685.png

2、数据表的建立、删除和修改使用

https://i-blog.csdnimg.cn/direct/7d686f4696474e8a8d3d031121ffce15.png
(1)使用SQL语句在EDUC数据库中创建三个基本表(表名为“student”、“course”和“sc”),如上图。
https://i-blog.csdnimg.cn/direct/6d26c989f4934c1fae99ce247938b68a.png
通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/564f07acb63b4cd79f2f29b036b3f019.png
https://i-blog.csdnimg.cn/direct/974a381b744a4a2698b4c68685a62d0f.png
(2)使用SQL语句将student表中“sname”列的数据类型为CHAR(40)
https://i-blog.csdnimg.cn/direct/29a96e340b114b7b8d22d87afa4aa1ad.png
通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/cda2d152f2d64b9aabd1d4d366a35171.png
(3)使用SQL语句在student表中添加新列,列名为“高考成绩”,数据类型为int
https://i-blog.csdnimg.cn/direct/80b7b70d9a2340e49b1b6da1c554be95.png
通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/066cf25ef9f84ef1872da46c1621f7f9.png
(4)使用SQL语句删除“高考成绩”列
https://i-blog.csdnimg.cn/direct/b4b4fff695a1403ea2aa46c231b21fdd.png
通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/9a9b0d3fef6e4bb885b63f8c0bc33baf.png
(5)使用SQL语句设置student中的“sage”为not nullhttps://i-blog.csdnimg.cn/direct/7a85f1d93fa04b95a2556a10dd3a00b5.png
通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/73876d4afb1a4c5785a0f10e6111f206.png
   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
https://i-blog.csdnimg.cn/direct/c85ff836635448e6a89016b39c01dd51.png
通过数据库属性查看使用结果
https://i-blog.csdnimg.cn/direct/8af363aa957c4814b5e9f17c70cabc0b.png
   --添加新列,指定数据类型和是否允许为空
ALTER TABLE 表名
ADD 列名 数据类型[(长度)] ;-- NULL:允许空值,NOT NULL:不允许空值

-- 添加自增列 (IDENTITY)
ALTER TABLE 表名
ADD 列名 数据类型[(长度)] IDENTITY(标识种子, 标识增量);-- IDENTITY:自动递增


-- 修改列的数据类型、长度或是否允许为空
ALTER TABLE 表名
ALTER COLUMN 列名 数据类型[(长度)] ;-- 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表)

https://i-blog.csdnimg.cn/direct/7ddc3f5a1a814248869d6db7b59f9f71.png
这个错误的意思需要将 CREATE SCHEMA 和其他使用分开处理,单独建一个文件,但这样运行不影响
大概
https://i-blog.csdnimg.cn/direct/3985e5fbd418493e91b81c2238f7613c.png
再运行:https://i-blog.csdnimg.cn/direct/94a77d1ce8104823ba33917e8a884829.png

https://i-blog.csdnimg.cn/direct/7c16d9bce3414b0bb5c5cd0f294d75ea.png
   (2)使用SQL语句删除ST模式,若不能删除,为什么?怎样才能删除?
https://i-blog.csdnimg.cn/direct/4631ea46bb254f4ebea1cf4f468d8214.png
https://i-blog.csdnimg.cn/direct/94f7f8c162674c6c832910b0c6afc55a.png
https://i-blog.csdnimg.cn/direct/1fc29f60b5ff4d5ea319024b0de5f1ff.png
https://i-blog.csdnimg.cn/direct/e0af39b104be4beca4edd0527f72eedb.png
   

[*]模式不能直接删除,假如此中包含对象(如表),必须先删除模式下的所有对象,才能删除模式。
[*]先删除模式中的对象,再删除模式本身,才能成功删除模式。
完整运行代码:
--创建数据库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企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【SQL实验】数据库、表、模式的SQL语句使用