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

一. 创建数据库

打开 Microsoft SQL Server Management Studio

SQL Server数据库 sql server数据库怎么使用_Sage


右击数据库,创建新数据库,命名为“教务系统”

SQL Server数据库 sql server数据库怎么使用_sql_02


右击我们新建的数据库“教务系统”,点击新建查询。本次实验操作都基于SQL语句。

SQL Server数据库 sql server数据库怎么使用_sql_03

二. 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)
);

SQL Server数据库 sql server数据库怎么使用_sql_04


(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*/
);

SQL Server数据库 sql server数据库怎么使用_Sage_05


(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 */
);

SQL Server数据库 sql server数据库怎么使用_完整性约束_06

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')

SQL Server数据库 sql server数据库怎么使用_sql_07


(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)

SQL Server数据库 sql server数据库怎么使用_SQL_08


(3)添加学生选课表(SC)数据

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

SQL Server数据库 sql server数据库怎么使用_Sage_09

3. 查看数据(SELECT)

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

SELECT * FROM SC;

SQL Server数据库 sql server数据库怎么使用_sql_10


单独查询学生学号和所修课程号。

SELECT
	Sno, Cno
FROM 
	SC;

SQL Server数据库 sql server数据库怎么使用_sql_11


查询学生信息,出生年份,所在院系。

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

SQL Server数据库 sql server数据库怎么使用_SQL_12


(2)连接查询

查询学生姓名,性别,所在院系,选修课程号及对应成绩。

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

SQL Server数据库 sql server数据库怎么使用_sql_13


查询课程的先修课程。

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

SQL Server数据库 sql server数据库怎么使用_SQL Server数据库_14


查询学生学号,姓名,所在院系,所修课程的课程号,课程名称和对应成绩。

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

SQL Server数据库 sql server数据库怎么使用_SQL Server数据库_15


查询学生学号,姓名,所在院系,所修课程的课程号,课程名称和对应成绩。

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

SQL Server数据库 sql server数据库怎么使用_Sage_16


(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 = '信息系统'
		)	
	)

SQL Server数据库 sql server数据库怎么使用_Sage_17


查询年龄最大的学生的姓名和年龄。

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

SQL Server数据库 sql server数据库怎么使用_sql_18


(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'
	)

SQL Server数据库 sql server数据库怎么使用_SQL_19


(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

SQL Server数据库 sql server数据库怎么使用_SQL_20

3. 修改数据(UPDATE)

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

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

SQL Server数据库 sql server数据库怎么使用_完整性约束_21


将所有学生的年龄增加1岁。

UPDATE
	Student
SET
	Sage = Sage + 1

SQL Server数据库 sql server数据库怎么使用_sql_22

4. 删除数据

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

DELETE
FROM
	Student
WHERE
	Sno = '201215125'

	SELECT 
	*
FROM
	Student

SQL Server数据库 sql server数据库怎么使用_SQL Server数据库_23