1.SQL Server安装流程
可以在官网下载SQL安装 版本选择:Developer版本(全功能免费版)
注意事项:整个安装过程基本不会有坑,安装完后需要按照它的指示安装SSMS,一个用于管理数据库的IDE。(不安装也可以,后面使用vscode的插件可以直接在vscode上进行开发,但SSMS的功能要更完善,推荐还是下载,跟vscode配合使用)
2.在vscode中搭建开发环境
(1)安装插件
安装插件后,软件左边会多一个小图标,指示数据库。
(2)连接本地库
- 打开任意一个.sql文件
- 按F1打开命令输入框
- 输入sql,依次选择Connect->Create Connection Profile
- 输入连接信息:服务器名填localhost,用户名选择Integrated,其他的都可以直接空格跳过。
- 连接成功后,vscode会自动存储连接信息,下次直接点connect即可连接。
- 至此,环境搭建就完成了,接下来就是快乐的玩耍环节
(3)SQL基础语法的使用(以学校管理为例)
- 创建和使用数据库
--创建School数据库
CREATE DATABASE School;
GO
USE School;
GO
- 创建图表
--创建图表
CREATE TABLE Student
(
--列级完整性约束条件,Sno为主键
Sno CHAR(9) PRIMARY KEY,
--列级完整性约束条件,Sname不为空
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT, /* SMALLINT 的范围为 0-255 */
Sdept CHAR(20)
);
CREATE TABLE Course
(
Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40) NOT NULL,
Cpno CHAR(4),
Credit TINYINT,
);
CREATE TABLE SC
(
Sno CHAR(9),
Cno CHAR(4),
Grade TINYINT,
--主码由两个属性构成,必须作为表级完整性进行定义
PRIMARY KEY (Sno, Cno),
--表级完整性约束条件,Sno 是外码,被参照表是 Student,被参照列是Sno
FOREIGN KEY (Sno) REFERENCES Student(Sno),
--表级完整性约束条件,Cno 是外码,被参照表是 Course,被参照列是Cno
FOREIGN KEY (Cno) REFERENCES Course(Cno),
);
- 向表中插入数据
--向表中插入数据
INSERT INTO
Student(Sno,Sname,Ssex,Sage,Sdept)
VALUES
('201215121','李勇','男',20,'CS'),
('201215122','刘晨','女',19,'CS'),
('201215123','王杰','女',18,'MA'),
('201215125','张立','男',19,'IS')
INSERT INTO
Course(Cno, Cname, Credit)
VALUES
('6','数据处理',2),
('1','数据库',4),
('2','高等数学',2),
('3','信息系统',4),
('4','操作系统',3),
('5','数据结构',4)
INSERT INTO
SC(Sno, Cno, Grade)
VALUES
('201215121','1',92),
('201215121','2',85),
('201215121','3',88),
('201215122','2',90),
('201215122','3',80)
- 数据查询
--查询数据库School中的数据数据
USE School;
GO
/* -----------------一般查询----------------- */
--1.查询学生成绩表中所有数据
SELECT * FROM SC;
--2.查询学生学号和所修课程
SELECT
Sno, Cno
FROM
SC;
--3.查询学生信息,出生年份,所在院系
SELECT
Sname NAME, 2021-Sage BIRTHYEAR, LOWER(Sdept) DEPARTMENT
FROM
Student
/* -----------------连接查询----------------- */
--1.查询学生学号,姓名,性别,所在院系,选修课程号及对应成绩
SELECT
Student.Sno SNO, Sname NAME, Ssex SEX, LOWER(Sdept) DEPARTMENT, Cno CNO, Grade GRADE
FROM
Student, SC
WHERE
Student.Sno = SC.Sno;
--2.查询学生学号,姓名,所在院系,所修课程的课程号,课程名称和对应成绩。
SELECT
Student.Sno Sno, Sname, Sdept, SC.Cno, Cname, Grade
FROM
Student, Course, SC
WHERE
Student.Sno = SC.Sno AND SC.Cno = Course.Cno
/* -----------------嵌套查询----------------- */
--1.查询同时选修了信息系统的同学名称和院系
SELECT
Sno, Sname, Sdept
FROM
Student
WHERE
Student.Sno IN
(
SELECT
Sno
FROM
SC
WHERE SC.Cno IN
(
SELECT
Cno
FROM
Course
WHERE
Cname = '信息系统'
)
)
--2.查询同时选修了信息系统的同学名称和院系
SELECT
Sname, Sage
FROM
Student
WHERE
Sage =
(SELECT
MAX(Sage)
FROM
Student
)
/* -----------------集合查询----------------- */
--查询同时选修课程号为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'
)
/* -----------------基于派生类的查询----------------- */
--找出每个学生超过他自己选修课程平均成绩的课程号
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
- 数据更新
USE School;
GO
--将学号为 201215122 的学生的年龄修改为20岁
UPDATE
Student
SET
Sage = 20
WHERE
Sno='201215122'
--将所有学生的年龄增加1岁。
UPDATE
Student
SET
Sage = Sage + 1
- 数据删除
--删除学号为 201215125 的学生信息
DELETE
FROM
Student
WHERE
Sno = '201215125'
SELECT
*
FROM
Student
总结:
其实数据库无非就是管理库的内容和查询库信息两种大操作,再细分到各种小的语法,基本的语法比较简单易懂,难的在于查询规则的制定,这部分内容之后会随着学习继续更新,也会着手做一些简单的数据库项目。