SQL Server 初次使用

之前习惯使用mysql + Navicat 进行数据库操作,并没有使用过SQL Server。这次介绍如何使用SQL Server。

一. 创建数据库

打开 Microsoft SQL Server Management Studio
在这里插入图片描述
右击数据库,创建新数据库,命名为“教务系统”
在这里插入图片描述
右击我们新建的数据库“教务系统”,点击新建查询。本次实验操作都基于SQL语句。

在这里插入图片描述

二. SQL 语句操作
1. 创建表

设计学生表(Student),课程表(Course),学生选课表(SC)
(1)学生表(Student)

CREATE TABLE Student
(
	Sno CHAR(9) PRIMARY KEY,	/* 列级完整性约束条件,Sno 为主键 */
	Sname CHAR(20) NOT NULL,	/* 列级完整性约束条件,Sname 不为空 */
	Ssex CHAR(2),
	Sage SMALLINT,				/* SMALLINT 的范围为 0-255 */
	Sdept CHAR(20)
);

在这里插入图片描述
(2)课程表(Course)

CREATE TABLE Course
(
	Cno CHAR(4) PRIMARY KEY,	/* 列级完整性约束条件,Cno 为主键*/
	Cname CHAR(40) NOT NULL,	/* 列级完整性约束条件,Cname 不为空*/
	Cpno CHAR(4),
	Credit TINYINT,
	FOREIGN KEY(Cpno) REFERENCES Course(Cno)	/*表级完整性约束条件,Cpno 是外键,被参照表是 Course, 被参照列是 Cno*/
);

在这里插入图片描述
(3)学生选课表(SC)

CREATE TABLE SC
(
	Sno CHAR(9),
	Cno CHAR(4),
	Grade TINYINT,
	PRIMARY KEY (Sno, Cno),						/* 主码由两个属性构成,必须作为表级完整性进行定义 */
	FOREIGN KEY (Sno) REFERENCES Student(Sno),	/* 表级完整性约束条件,Sno 是外码,被参照表是 Student,被参照列是Sno */
	FOREIGN KEY (Cno) REFERENCES Course(Cno),	/* 表级完整性约束条件,Sno 是外码,被参照表是 Course,被参照列是Cno */
);

在这里插入图片描述

2. 增加数据(INSERT)

(1)添加学生表(Student)数据

INSERT INTO 
Student(Sno,Sname,Ssex,Sage,Sdept)
VALUES
('201215121','李勇','男',20,'CS'),
('201215122','刘晨','女',19,'CS'),
('201215123','王敏','女',18,'MA'),
('201215125','张立','男',19,'IS')

在这里插入图片描述
(2)添加课程表(Course)数据

INSERT INTO
Course(Cno, Cname, Cpno, Credit)
VALUES
('6','数据处理',NULL,2),
('1','数据库','5',4),
('2','数学',NULL,2),
('3','信息系统','1',4),
('4','操作系统','6',3),
('5','数据结构','7',4),
('7','PASCAL','6',4)

在这里插入图片描述
(3)添加学生选课表(SC)数据

INSERT INTO
SC(Sno, Cno, Grade)
VALUES
('201215121','1',92),
('201215121','2',85),
('201215121','3',88),
('201215122','2',90),
('201215122','3',80)

在这里插入图片描述

3. 查看数据(SELECT)

(1)单表查询
查询所有学生信息。

SELECT * FROM SC;

在这里插入图片描述
单独查询学生学号和所修课程号。

SELECT
	Sno, Cno
FROM 
	SC;

在这里插入图片描述
查询学生信息,出生年份,所在院系。

SELECT
	Sname NAME, 2014-Sage BIRTHYEAR, LOWER(Sdept) DEPARTMENT
FROM	
	Student

在这里插入图片描述
(2)连接查询
查询学生姓名,性别,所在院系,选修课程号及对应成绩。

SELECT 
	Student.Sno SNO, Sname NAME, Ssex SEX, Sdept DEPARTMENT, Cno CNO, Grade GRADE
FROM
	Student, SC
WHERE
	Student.Sno = SC.Sno;

在这里插入图片描述
查询课程的先修课程。

SELECT 
	First.Cno '课程号', First.Cname '课程名',Second.Cno '先修课程号', Second.Cname '先修课'
FROM
	Course First, Course Second
WHERE
	First.Cpno = Second.Cno

在这里插入图片描述
查询学生学号,姓名,所在院系,所修课程的课程号,课程名称和对应成绩。

SELECT
	Student.Sno Sno, Sname, Sdept, SC.Cno, Cname, Grade
FROM
	Student LEFT OUTER JOIN SC ON (Student.Sno = SC.Sno), Course
WHERE
	SC.Cno = Course.Cno

在这里插入图片描述
查询学生学号,姓名,所在院系,所修课程的课程号,课程名称和对应成绩。

SELECT 
	Student.Sno Sno, Sname, Sdept, SC.Cno, Cname, Grade
FROM
	Student, Course, SC
WHERE
	Student.Sno = SC.Sno AND SC.Cno = Course.Cno

在这里插入图片描述
(3)嵌套查询
查询同时选修了信息系统的同学名称和院系。

SELECT 
	Sno, Sname, Sdept
FROM
	Student
WHERE
	Student.Sno IN
	(
		SELECT 
			Sno
		FROM
			SC
		WHERE SC.Cno IN
		(
			SELECT
				Cno
			FROM
				Course
			WHERE
				Cname = '信息系统'
		)	
	)

在这里插入图片描述
查询年龄最大的学生的姓名和年龄。

SELECT 
	Sname, Sage
FROM
	Student
WHERE
	Sage = 
	(SELECT 
		MAX(Sage)
	FROM 
		Student
	)

在这里插入图片描述
(4)集合查询
查询同时选修课程号为1和课程号为2课程的学生。

SELECT 
	Sno, Sname
FROM
	Student
WHERE
	Sno IN
	(
		SELECT 
			Sno 
		FROM 
			SC
		WHERE 
			Cno = '1'
		INTERSECT
		SELECT 
			Sno 
		FROM 
			SC
		WHERE 
			Cno = '2'
	)

在这里插入图片描述
(5)基于派生表的查询
找出每个学生超过他自己选修课程平均成绩的课程号。

SELECT 
	Sno, Cno
FROM
	SC, (
			SELECT
				Sno, AVG(Grade)
			FROM
				SC
			GROUP BY
				Sno
		) AS Avg_sc(avg_sno, avg_grade)
WHERE
	SC.Sno = Avg_sc.avg_sno AND SC.Grade >= Avg_sc.avg_grade

在这里插入图片描述

3. 修改数据(UPDATE)

将学号为 201215122 的学生 的年龄修改为10岁。

UPDATE
	Student
SET
	Sage = 10
WHERE
	Sno='201215122'

在这里插入图片描述
将所有学生的年龄增加1岁。

UPDATE
	Student
SET
	Sage = Sage + 1

在这里插入图片描述

4. 删除数据

删除学号为 201215125 的学生信息。

DELETE
FROM
	Student
WHERE
	Sno = '201215125'

	SELECT 
	*
FROM
	Student

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值