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,                        --默认值为20Sex  CHAR(2)  CHECK(Sex='男' or Sex='女')
)

三、创建视图;


格式:

USE SCC
GOCREATE VIEW 视图名
ASselect 列名from 表名
GO

例如:

USE SCC
GOCREATE VIEW View_Card
asselect * from Card
GO

四、约束语句;


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='陈宇辉'

3.删除数据(一行)

格式:

DELETE
FROM 表名
WHERE 列名='值'

例如:

DELETE
FROM 学生表
WHERE Sno = '8001'
AND SAGE not in ('20', '21')

4.删除约束

格式:

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, SNAMEFROM STUDENTWHERE SDEP='数学系'

2.自定义查询结果

格式:

SELECT 列名 as 重命名FROM 表名WHERE 查询条件
SELECT 列名*0.8                                --将查询数据乘以0.8后输出FROM 表名WHERE 查询条件

例如:

USE SCC
GO
SELECT SN, SGRADE, SGRADE*0.8 as 成绩FROM SCWHERE 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, SGRADEFROM SCWHERE CN='C1'ORDER BY SGRADE DESC, SN ASC

4.去除重复项

格式:

SELECT DISTINCT 列名FROM 表名WHERE 查询条件

例如:

USE SCC
GO
SELECT DISTINCT SNO, SNAMEFROM STUDENTWHERE SDEP='数学系'

5.把一个表的数据插入到另一个表

格式一:(当要插入的表不存在时)

SELECT 列名INTO 新表名FROM 表名WHERE 查询条件

例如:

USE SCC
GO
SELECT *INTO TU_STUDENTFROM STUDENTWHERE SDEP='计算机系'

格式二:(当要插入的表本身便存在时)

INSERT into 表名1(列名1, 列名2)
select 列名1, 列名2  from 表名2where 查询条件

例如:

INSERT into Student_back(S_StuNo,S_Name,S_Sex,S_Height)
select S_StuNo,S_Name,S_Sex,S_Height  from Studentwhere S_Sex='女'

八、分类汇总;


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, COURSEWHERE SC.CN=COURSE.CNOGROUP BY COURSE.CNAME                                  --以COURSE.CNAME为依据分组

3.求平均值

格式:

SELECT AVG(列名)FROM 表名WHERE 查询条件

例如:

USE SCC
GO
SELECT STUDENT.SNAME, AVG(SC.SGRADE)FROM STUDENT, SCWHERE STUDENT.SNO=SC.SNGROUP BY STUDENT.SNAME

九、连接查询;


1.第一种连接方式

格式:

SELECT 列名FROM 表名1, 表名2WHERE 表名1.列名=表名2.列名

例如:

USE SCC
GO
SELECT *FROM STUDENT, SCWHERE STUDENT.SNO=SC.SN

2.第二种连接方式

格式:

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 STUDENTWHERE SNAME LIKE '张%'

2.数学系或计算机系的同学

代码:

USE SCC
GO
SELECT *FROM STUDENTWHERE (SDEP='数学系' or SDEP='计算机系')

3.缺少了成绩的同学

代码:

USE SCC
GO
SELECT *FROM SCWHERE SGRADE is NULL

4.选修课超过三门的学生学号

代码:

USE SCC
GO
SELECTFROM SCGROUP BY SN having count(*)>3

5.求各系的男女生人数

代码:

USE SCC
GO
SELECT SDEP, SSEX, COUNT(*)FROM STUDENTGROUP BY SDEP, SSEXORDER BY SDEP

6.查询每一门课的间接先行课

代码:

USE SCC
GO
SELECT X.CNO, Y.PRECNOFROM COURSE X, COURSE YWHERE X.PRECNO=Y.CNO

7.求 C1 课程的成绩高于张三的学生

代码:

USE SCC
GO
SELECT *FROM SC, STUDENTWHERE SC.CN='C1'AND STUDENT.SNO=SC.SNAND SC.SGRADE>(SELECT SC.SGRADEFROM SC, STUDENTWHERE 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 COURSEWHERE NOT EXISTS(SELECT *FROM SCWHERE SC.SN=STUDENT.SNOAND SC.CN=COURSE.CNO)
)

9.求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名

代码:

USE SCC
GO
SELECT SNAME, SNO
FROM STUDENT
WHERE SNO NOT IN('S2')
AND SNO IN
(SELECT SNFROM SC XWHERE NOT EXISTS(SELECT *FROM SC YWHERE Y.SN='S2'AND NOT EXISTS(SELECT *FROM SC ZWHERE Y.CN=Z.CNAND X. SN=Z.SN))
)

10.类别中最高的图书定价不低于全部按类别分组的图书平均定价的 2 倍

代码:

USE Book
GO
SELECT BType
FROM BookInfo
GROUP BY BType
having max(BPrice)>=ALL
(SELECT AVG(BPrice)*2FROM BookInfoGROUP BY BType
)

11.选修C1课程,并且也选修C2课程的学生学号

例一:in 语句

USE SCC
GO
SELECT SC.SN
FROM SC, COURSE
WHERE SC.CN=COURSE.CNO
AND SC.CN='C1'
AND SC.SN IN
(
SELECT SC.SN
FROM SC, COURSE
WHERE SC.CN=COURSE.CNO
AND SC.CN='C2'
)

例二:exists 语句

USE SCC
GO
SELECT A.SN
FROM SC A, COURSE
WHERE A.CN=COURSE.CNO
AND A.CN='C1'
AND EXISTS
(
SELECT *
FROM SC B, COURSE
WHERE B.CN=COURSE.CNO
AND B.CN='C2'
AND B.SN=A.SN
)

例三:intersect 语句

USE SCC
GO
SELECT SC.SN
FROM SC, COURSE
WHERE SC.CN='C1'
AND SC.CN=COURSE.CNO
INTERSECT
SELECT SC.SN
FROM SC, COURSE
WHERE SC.CN='C2'
AND SC.CN=COURSE.CNO

《SQL Server基础——SQL语句》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. cat卡特鞋有实体店吗_保养课堂 | 小小密封件,竟然是CAT油缸和连杆耐用的秘密...
  2. 学计算机数据结构重要吗,程序员都说数据结构重要,那么究竟什么是数据结构?...
  3. 送一些豆瓣 8.9 分优质书,啃完拿下 BAT 高薪 offer 不是梦!
  4. matches()方法
  5. 使用Netapp与windows server 2012搭建 iSNS服务器
  6. 从生产线到生产岛:理解敏捷开发中的设计与测试活动
  7. MediaMuxer的使用
  8. 阿里天池用Pandas揭秘美国选民的总统喜好附加题
  9. 【5分钟 Paper】Deep Reinforcement Learning with Double Q-learning
  10. 大额支付系统行号编制规则
  11. Supervised Sequence Labelling with Recurrent Neural Networks 笔记 -LSTM
  12. css3+js生成任意正多边形棱柱
  13. 前端项目加载图片、视频插件
  14. 奇兔recovery卡刷教程_OPPO A59s 刷入奇兔recovery及root权限刷机教程
  15. 年前找工作好,还是年后找工作好?求职需警惕,小心陷入羊群效应
  16. MySQL 03、深入浅出索引
  17. NewLife使用心得
  18. ORB-SLAM2源码阅读(四)—LoopClosing线程SIM3变换
  19. html设置文本域的,HTML-文本域属性设置
  20. Rank-consistent Ordinal Regression for Neural Networks

热门文章

  1. SPSS(十二)SPSS对应分析(图文+数据集)
  2. Nginx提高并发量的简单思路
  3. C语言 数据结构 图的邻接矩阵存储 基本操作(附输入样例和讲解)
  4. zynq+ad9361 petalinux使用官方IIO示波器调试记录
  5. 有知道深圳艾奕康(以前叫茂尔盛)、新钶信息系统公司、梦网科技的吗?
  6. windows安装小爱同学
  7. IDEA2021配置Maven
  8. [转]开源日志系统比较
  9. Windows 技术篇 - 杜比驱动安装,解决电脑渣渣音效!
  10. 安卓来电归属地_原生 Android 也能远离骚扰电话:开源应用来电信息