sqlserver01(使用篇从新建数据库开始)

先说一下我们要完成的如下(我放在代码块里了
1.在“对象资源管理器”中右击“数据库”,在“新建数据库”对话框中输入数
据库名称 stumanage,设置数据库文件初始大小为 5M,限制文件增长 50M,
日志文件初始大小设为 2M,限制文件增长 5M,并更改文件存储路径。
2、单击“新建查询”按钮,在 SQL 查询窗口中输入 SQL 语句,建立数据库
stumanage。然后单击工具栏上“执行”按钮(红色叹号)。下部的空白区显示
该语句的运行情况,将建立数据库的 SQL 语句写入实验报告。(注:以下操作
均在上部的空白区输入 SQL 语句,单击执行后,下部的空白区显示该语句的
运行情况。)
3、在 stumanage 数据库中,如下图建立表 student:
列名 数据类型 允许空 主键 说明
1 sno Char(8) 否 是 学号
2 sname Varchar(20) 是 否 姓名
3 sex Char(2) 是 否 性别
4 sdept Varchar(20) 是 否 所在系
如下图建立表:course
列名 数据类型 允许空 主键 说明
1 cno Char(6) 否 是 课程号
2 cname Varchar(20) 是 否 课程名
如下图建立表 sc:(注:包括两个外键,sno 和 cno 共同组成主键)
2
列名 数据类型 允许空 主键 外键 说明
1 sno Char(8) 否 是 students(sno) 学号
2 cno Char(6) 否 是 course(cno) 课程号
3 grade int 否 否 否 成绩
4、将三条建表语句写入实验报告。
5、在 student 表中插入两条数据:
(120050101,王飞,男,计算机系
(220050102,李丽,女,信息系
6、在 course 表中插入两条数据:
(101,数据结构
(202,数据库原理
7、在 sc 表中插入两条数据:
(12005010101702200501020290
8、将此八条 SQL 语句写入实验报告。
9、对每一门课,求学生的平均成绩,并把结果以基本表的形式存入数据库。将操
作命令和所用 SQL 语句写入实验报告。
10、修改 sc 表中 sno 为 20050102、cno 为 02 的记录的 grade 属性值为 85,然后将
该条记录删除。将此两条 SQL 语句写入实验报告。
11、修改‘数据库原理’课程的所有学生成绩为 0。将此条 SQL 语句写入实验报告。
12、删除‘李丽’的所有选课情况。将此条 SQL 语句写入实验报告。
13、删除数据库中的三个表中的所有数据,将所用 SQL 语句写入实验报告。
14、删除数据库中的三个表结构。将所用 SQL 语句写入实验报告。
15、删除数据库,将所用语句写入实验报告。

 1.新建数据库(这里我们选择1方法新建数据库,2我没有尝试)

CREATE DATABASE stumanage
ON PRIMARY
(
    NAME = stumanage_data,
    FILENAME = 'C:\Path\To\Data\stumanage_data.mdf',
    SIZE = 5MB,
    MAXSIZE = 50MB,
    FILEGROWTH = 5MB
)
LOG ON
(
    NAME = stumanage_log,
    FILENAME = 'C:\Path\To\Log\stumanage_log.ldf',
    SIZE = 2MB,
    MAXSIZE = 5MB,
    FILEGROWTH = 1MB
);

 

 我们根据第一步的要求做出如下更改

 我们创建完成之后可以看到如下图

 3.我们的建表语句如下(右键stumanage新建查询-》输入如下语句-》运行)

-- 创建 student 表
CREATE TABLE student (
    sno CHAR(8) NOT NULL PRIMARY KEY,
    sname VARCHAR(20) NOT NULL,
    sex CHAR(2) NOT NULL,
    sdept VARCHAR(20) NOT NULL
);

-- 创建 course 表
CREATE TABLE course (
    cno CHAR(6) NOT NULL PRIMARY KEY,
    cname VARCHAR(20) NOT NULL
);

-- 创建 sc 表
CREATE TABLE sc (
    sno CHAR(8) NOT NULL,
    cno CHAR(6) NOT NULL,
    grade INT NOT NULL,
    PRIMARY KEY (sno, cno),
    FOREIGN KEY (sno) REFERENCES student(sno),
    FOREIGN KEY (cno) REFERENCES course(cno)
);

我们看一下建成功的图片

 5,6,7的语句如下

-- 在 student 表中插入两条数据
INSERT INTO student (sno, sname, sex, sdept) VALUES
('20050101', '王飞', '', '计算机系'),
('20050102', '李丽', '', '信息系');

-- 在 course 表中插入两条数据
INSERT INTO course (cno, cname) VALUES
('01', '数据结构'),
('02', '数据库原理');

-- 在 sc 表中插入两条数据
INSERT INTO sc (sno, cno, grade) VALUES
('20050101', '01', 70),
('20050102', '02', 90);

 我们看一下插入预计成功后的样子(这里我们连接的navicat方便查看,因为我再SQLQuery里面没有找到插入数据的内容咋哪里查看,如果可以找到就不用连接了,连接的我也有写方法在后面的篇章里面sqlserver连接navicat)

 

9.对每一门课,求学生的平均成绩,并把结果以基本表的形式存入数据库。语句如下
首先新建一个存储的 表:

CREATE TABLE course_avg_scores (
cno CHAR(6) NOT NULL PRIMARY KEY,
average_grade DECIMAL(5, 2)
);

 

-- 计算每门课程的平均成绩并插入到course_avg_scores表中
INSERT INTO course_avg_scores (cno, average_grade)
SELECT cno, AVG(grade) AS average_grade
FROM sc
GROUP BY cno;

让我们看一下插入后的效果

 

 
10修改 sc 表中 sno 为 20050102、cno 为 02 的记录的 grade 属性值为 85,然后将
该条记录删除。 
-- 修改 sc 表中 sno 为 20050102、cno 为 02 的记录的 grade 属性值为 85
UPDATE sc
SET grade = 85
WHERE sno = '20050102' AND cno = '02';

-- 删除 sc 表中 sno 为 20050102、cno 为 02 的记录
DELETE FROM sc
WHERE sno = '20050102' AND cno = '02';

为了看清楚效果这里先展示之前的sc表

 这里是执行完语句之后的(一语句执行后)

 (二语句执行后)

 


11、修改‘数据库原理’课程的所有学生成绩为 0
-- 确定“数据库原理”课程的 cno
SELECT cno
FROM course
WHERE cname = '数据库原理';

-- 根据查询结果更新 sc 表中相应记录的 grade 为 0
-- 假设查询结果中的 cno 为 '01'
UPDATE sc
SET grade = 0
WHERE cno = '01';

我们看一下效果

 


12、删除‘李丽’的所有选课情况。
-- 查找“李丽”的 sno
SELECT sno
FROM student
WHERE sname = '李丽';

-- 根据查询结果删除 sc 表中相应的选课记录
-- 查询结果中的 sno 为 '20050102'
DELETE FROM sc
WHERE sno = '20050102';


13、删除数据库中的三个表中的所有数据。
注:可以使用 DELETE 语句或者 TRUNCATE 语句。两者的区别是 DELETE 语句逐行删除数据,并且可以回滚(如果在事务中使用),而 TRUNCATE 语句则是直接清空表中的所有数据,无法回滚,且效率更高。
-- 清空 student 表中的所有数据
TRUNCATE TABLE student;

-- 清空 course 表中的所有数据
TRUNCATE TABLE course;

-- 清空 sc 表中的所有数据
TRUNCATE TABLE sc;
消息 4712,级别 16,状态 1,第 5 行 无法截断表 'student',因为该表正由 FOREIGN KEY 约束引用。
这里由于外键的原因student和course无法用TRUNCATE删除,用DELETE可以

 


14、删除数据库中的三个表结构。 
-- 删除 sc 表
DROP TABLE IF EXISTS sc;

-- 删除 student 表
DROP TABLE IF EXISTS student;

-- 删除 course 表
DROP TABLE IF EXISTS course;

 


15、删除数据库。(这里记得要先关闭数据库)

 

 

 
posted @ 2024-05-10 11:57  艾鑫4646  阅读(79)  评论(0编辑  收藏  举报