《SQL Server基础——SQL语句》
SQL Server基础——SQL语句
一、创建和删除数据库;
1.创建数据库(默认化初始值)
格式:
CREATE DATABASE 数据库名称
例如:
CREATE DATABASE SCC
2.创建数据库(自定义初始值)
格式:
CREATE DATABASE 数据库名
ON PRIMARY
(
NAME='逻辑名称',
FILENAME='文件存储路径'
)
LOG ON
(
NAME='逻辑名称',
FILENAME='文件存储路径'
)
例如:
CREATE DATABASE SCC
ON PRIMARY
(
NAME='SCC_Data',
FILENAME='D:\SQL\SCC\SCC_Data.mdf',
SIZE=4MB
)
LOG ON
(
NAME='SCC_Log',
FILENAME='D:\SQL\SCC\SCC_Log.ldf',
SIZE=2MB
)
3.删除数据库
格式:
DROP DATABASE 数据库名
例如:
DROP DATABASE SCC
二、创建数据表;
格式:
USE 数据库名
GO
CREATE TABLE 表名
(
列名 数据类型(长度) 列级约束
)
例如:
USE SCC
GO
CREATE TABLE 学生表
(
Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(8) NOT NULL,
Sage SMALLINT DEFAULT 20, --默认值为20
Sex CHAR(2) CHECK(Sex='男' or Sex='女')
)
三、约束语句;
1.主键约束(PRIMARY KEY)
格式一:
列名 数据类型(长度) PRIMARY KEY
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Cno CHAR(5) PRIMARY KEY
)
格式二:
CONSTRAINT 约束名 PRIMARY KEY(列名) --CONSTRAINTS语句
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Sno CHAR(5),
Sname CHAR(8),
CONSTRAINT C1 PRIMARY KEY(Sno) --CONSTRAINT C1 PRIMARY KEY(Sno,Sname)————双主键
)
2.外键约束(FOREIGN KEY )
格式:
CONSTRAINT 约束名 FOREIGN KEY(列名) REFERENCES 被引用表的名称(列名)
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Cno CHAR(5),
CONSTRAINT C1 PRIMARY KEY(Cno)
)
GO
CREATE TABLE 选课表
(
Cno CHAR(5),
Sno CHAR(5),
CONSTRAINT C2 PRIMARY KEY(Sno),
CONSTRAINT C3 FOREIGN KEY(Cno) REFERENCES 课程表(Cno)
)
3.非空约束(NOT NULL)
格式:
列名 数据类型(长度) NOT NULL
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Cno CHAR(5) NOT NULL
)
4.唯一约束(UNIQUE)
格式:
列名 数据类型(长度) UNIQUE
例如:
USE SCC
GO
CREATE TABLE 课程表
(
Cno CHAR(5) UNIQUE
)
四、修改语句;
1.添加数据
格式:
INSERT INTO 表名(列名1, 列名2) VALUES(数据1, 数据2);
例如:
INSERT INTO 学生表(Sid, Sname) VALUES(3, '陈宇辉');
2.更改数据
格式:
UPDATE 表名
SET 列名1=新值1, 列名2=新值2
WHERE 过滤条件
例如:
UPDATE 学生表
SET Score='99', Sage='25'
WHERE Sname='陈宇辉'
2.删除数据(一行)
格式:
DELETE
FROM 表名
WHERE 列名='值'
AND 列名 not in ('值1', '值2')
例如:
DELETE
FROM 学生表
WHERE Sno = '8001'
AND SAGE not in ('20', '21')
3.删除约束
格式:
ALTER TABLE 表名 DROP CONSTRAINT 约束名
例如:
ALTER TABLE 选课表 DROP CONSTRAINT C2
五、终局之战;
1. 断开数据库连接
格式:
ALTER DATABASE 数据库名
SET OFFLINE WITH ROLLBACK IMMEDIATE
例如:
ALTER DATABASE SCC
SET OFFLINE WITH ROLLBACK IMMEDIATE
2. 分离数据库
格式:
EXEC sp_detach_db @dbname=N'数据库名'
例如:
EXEC sp_detach_db @dbname=N'SCC'
3.附加数据库
格式:
EXEC sp_attach_db @dbname=N'数据库名',
@filename1=N'.mdf文件的存储路径',@filename2=N'.ldf文件的存储路径'
例如
EXEC sp_attach_db @dbname=N'SCC',
@filename1=N'D:\SQL\SCC\SCC_Data.mdf', @filename2=N'D:\SQL\SCC\SCC_Log.ldf'
六、查询语句;
1.查询某列
格式:
SELECT 列名
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT SNO, SNAME
FROM STUDENT
WHERE SDEP='数学系'
2.自定义查询结果
格式:
SELECT 列名 as 重命名
FROM 表名
WHERE 查询条件
SELECT 列名*0.8 --将查询数据乘以0.8后输出
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT SN, SGRADE, SGRADE*0.8 as 成绩
FROM SC
WHERE CN='C1'
3.正倒序排列
格式:
ORDER BY 列名 DESC --降序排列
ORDER BY 列名 ASC --升序排列
ORDER BY 列名1 DESC, 列名2 ASC --先按“列名1”降序排列,若“列名1”相同,则按“列名2”升序排列
ORDER BY 2 DESCA --按第二列降序排列
例如:
USE SCC
GO
SELECT SN, SGRADE
FROM SC
WHERE CN='C1'
ORDER BY SGRADE DESC, SN ASC
3.去除重复项
格式:
SELECT 列名
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT distinct SNO, SNAME
FROM STUDENT
WHERE SDEP='数学系'
4.创建一个由查询结果组成的新数据表
格式:
SELECT 列名
INTO 新表名
FROM 表名
WHERE 查询条件
例如:
SELECT *
INTO TU_STUDENT
FROM STUDENT
WHERE SDEP='计算机系'
4.插入
格式:
SELECT 列名
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT SNO, SNAME
FROM STUDENT
WHERE SDEP='数学系'
INSERT into SC_C
select COURSE.CNO, COURSE.CNAME,avg(SC.SGRADE)
from SC, COURSE
where SC.CN=COURSE.CNO
group by COURSE.CNO, COURSE.CNAME
七、分类汇总
1.求总人数
格式:
SELECT count(*)
FROM 表名
例如:
USE SCC
GO
SELECT count(*)
FROM STUDENT
2.求最高值和最小值
代码:
SELECT max(列名), min(列名)
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT COURSE.CNAME, MAX(SC.SGRADE), MIN(SC.SGRADE)
FROM SC, COURSE
WHERE SC.CN=COURSE.CNO
GROUP BY COURSE.CNAME --以COURSE.CNAME为依据分组
3.求平均值
代码:
SELECT AVG(列名)
FROM 表名
WHERE 查询条件
例如:
USE SCC
GO
SELECT STUDENT.SNAME, AVG(SC.SGRADE)
FROM STUDENT, SC
WHERE STUDENT.SNO=SC.SN
GROUP BY STUDENT.SNAME
八、连接查询
1.两种连接方式
格式一:
SELECT 列名
FROM 表名1, 表名2
WHERE 表名1.列名=表名2.列名
例如:
USE SCC
GO
SELECT *
FROM STUDENT, SC
WHERE STUDENT.SNO=SC.SN
格式二:
SELECT 列名
FROM 表名1 JOIN 表名2 ON 表名1.列名=表名2.列名
例如:
USE SCC
GO
SELECT *
FROM STUDENT JOIN SC ON STUDENT.SNO=SC.SN
九、特殊查询
1.姓张的同学
代码:
USE SCC
GO
SELECT *
FROM STUDENT
WHERE SNAME LIKE '张%'
2.数学系或计算机系的同学
代码:
USE SCC
GO
SELECT *
FROM STUDENT
WHERE (SDEP='数学系' or SDEP='计算机系')
3.缺少了成绩的同学
代码:
USE SCC
GO
SELECT *
FROM SC
WHERE SGRADE is NULL
4.选修课超过三门的学生学号
代码:
USE SCC
GO
SELECT
FROM SC
GROUP BY SN having count(*)>3
5.求各系的男女生人数
代码:
USE SCC
GO
SELECT SDEP, SSEX, COUNT(*)
FROM STUDENT
GROUP BY SDEP, SSEX
ORDER BY SDEP
6.查询每一门课的间接先行课
代码:
USE SCC
GO
SELECT X.CNO, Y.PRECNO
FROM COURSE X, COURSE Y
WHERE X.PRECNO=Y.CNO
7.求 C1 课程的成绩高于张三的学生
代码:
USE SCC
GO
SELECT *
FROM SC, STUDENT
WHERE SC.CN='C1'
AND STUDENT.SNO=SC.SN
AND SC.SGRADE>
(
SELECT SC.SGRADE
FROM SC, STUDENT
WHERE SC.CN='C1'
AND STUDENT.SNAME='张三'
AND STUDENT.SNO=SC.SN
)
8.查询选修了全部课程的学生
代码:
【25】查询选修了全部课程的学生
USE SCC
GO
SELECT SNAME
FROM STUDENT
WHERE NOT EXISTS
(
SELECT *
FROM COURSE
WHERE NOT EXISTS
(
SELECT *
FROM SC
WHERE SC.SN=STUDENT.SNO
AND SC.CN=COURSE.CNO
)
)
9.求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名
代码:
USE SCC
GO
SELECT SNAME, SNO
FROM STUDENT
WHERE SNO NOT IN('S2')
AND SNO IN
(
SELECT SN
FROM SC X
WHERE NOT EXISTS
(
SELECT *
FROM SC Y
WHERE Y.SN='S2'
AND NOT EXISTS
(
SELECT *
FROM SC Z
WHERE Y.CN=Z.CN
AND X. SN=Z.SN
)
)
)
10.类别中最高的图书定价不低于全部按类别分组的图书平均定价的 2 倍
USE Book
GO
SELECT BType
FROM BookInfo
GROUP BY BType
having max(BPrice)>=ALL
(
SELECT AVG(BPrice)*2
FROM BookInfo
GROUP BY BType
)
《SQL Server基础——SQL语句》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- Java习题
public class ClassTest{ String str = new String("hello"); char[] ch = {'a','b','c'}; publi ...
- python基本数据类型介绍
数据类型 首先知道什么是数据类型 针对不同的数据类型采用不同的处理方法 --目录-- 一.数据类型之整型 二.数据类型之浮点型 三.数据类型之字串符 四.数据之列表 一.数据类型之整型 1.其实呢就是 ...
- Markdown基础语法规则
你好,世界.粗体,斜体,测试,弟弟,H2O 论文题目 一级标题 二级标题 三级标题 1 2 3 点击此链接打开网址 公式 \(y = \sin x\) \[ y = \frac{1}{x} \] dd ...
- C++五子棋(六&七)——游戏结束
规则原理 如图 判断游戏结束 chessData.h //row,col 表示当前落子 bool checkWin(ChessData* game, int row, int col); 横.竖.斜( ...
- liunx ip无法显示问题解决
目录 出现现象描述 解决方案步骤: 1.停止NetworkManager 2.清空NetworkManager 3. 重启net service 4. 再次查看网络状态ifconig 出现现象描述 e ...
- 聊一聊Redis的离线分析
背景 Redis 或许是我们大部分场景都会用到的一个利器,虽然是利器,用的姿势不对的话,终究还是会整出幺蛾子的. 比较常见的问题,不外乎内存暴增,慢查询等情况. 那么对于内存问题,可以借助redis自 ...
- 华为麒麟团队力造的Python,整整26G
华为团队力造的Python,下面链接自取 https://docs.qq.com/doc/DRkZvRkxvb292c2Vz
- XCTF练习题---MISC---Get-the-key.txt
XCTF练习题---MISC---Get-the-key.txt flag:SECCON{@]NL7n+-s75FrET]vU=7Z} 解题步骤: 1.观察题目,下载附件 2.拿到手以后直接惊呆,挺大 ...
- linux下虚拟环境venv的创建与使用以及virtualenvwrapper
1.linux安装学习python虚拟环境 linux提供的虚拟环境工具 有virtualenv pipenv 2.我们需求是在linux上可以运行 一个django2 运行一个django1 3.安 ...
- uniapp中利用uni.$emit()和uni.$on()进行页面和tabbar页面传值(页面通讯)
tabbar页面 <script> export default { data() { return { list: [] , }; }, onLoad() { // 监听事件 uni.$ ...