当前位置:首页 > 科技数码

sql语句查询 SQL常用语句总结(面试很有用哦)

数据库

1. 查看现有数据库

SHOW DATABASES;

2. 新建数据库

CREATE DATABASE <数据库名>;

3. 选择数据库

USE <数据库名>;

4. 从.sql文件引入SQL语句

SOURCE <.sql文件路径>;

5. 删除数据库

DROP DATABASE <数据库名>;

6. 查看当前数据库中的表

SHOW TABLES;

7. 创建新表

CREATE TABLE <表名> ( <列名1> <列类型1>, <列名2> <列类型2>, <列名3> <列类型3>, PRIMARY KEY (<列名1>), FOREIGN KEY (<列名2>) REFERENCES <表名2>(<列名2>));

主键(PRIMARY KEY)用来标识一条记录(一行),所以每条记录的主键值必须是唯一的。主键可以定义在多列上,这称为

联合主键(composite primary key)

如果我们把表视作具有某种结构的数组(例如,C语言中的struct),那么外键(FOREIGN KEY)可以视作指针。

例子:

CREATE TABLE instructor ( ID CHAR(5), name VARCHAR(20) NOT NULL, dept_name VARCHAR(20), salary NUMERIC(8,2), PRIMARY KEY (ID), FOREIGN KEY (dept_name) REFERENCES department(dept_name));

在上面的例子中,我们创建了一个教员(instructor)表,该表的主键是ID,外键是教员所在的部门名称(dept_name),关联部门(department)表。此外,教员表还包括姓名(name)、薪水(salary)。其中,姓名有约束NOT NULL,表示姓名这一项不能为空。

8. 概述表中的列

使用如下语句查看表中的列的基本信息:

DESCRIBE <表名>;

下图显示了一些例子:

9. 在表中插入新纪录

INSERT INTO <表名> (<列名1>, <列名2>, <列名3>, …)VALUES (<值1>, <值2>, <值3>, …);

也可以省略列名(依序在所有列上插入新值):

INSERT INTO <表名>VALUES (<值1>, <值2>, <值3>, …);

10. 在表中更新记录

UPDATE <表名> SET <列名1> = <值1>, <列名2> = <值2>, ... WHERE <条件>;

11. 清空表

DELETE FROM <表名>;

12. 删除表

DROP TABLE <表名>;

查询

13. SELECT

SELECT

语句可以从表中选择数据:

SELECT <列名1>, <列名2>, … FROM <表名>;

以下语句选择所有内容:

SELECT * FROM <表名>;

artment)表和课程(course)表中的所有内容

14. SELECT DISTINCT

SELECT DISTINCT

过滤掉了重复的值:

SELECT DISTINCT <列名1>, <列名2>, … FROM <表名>;

15. WHERE

我们之前在更新记录时已经用到了

WHERE

关键字,用来指明条件。这里我们稍微详细一点地介绍下

WHERE

WHERE

的条件通常是:

比较

文本(text)

比较

数字(numbers)

AND

OR

NOT

等逻辑运算

让我们来看一些例子:

SELECT * FROM course WHERE dept_name="Comp. Sci.";SELECT * FROM course WHERE credits>3;SELECT * FROM course WHERE dept_name="Comp. Sci." AND credits>3;

16. GROUP BY

GROUP BY

语句可以分组结果,常用于

COUNT

MAX

MIN

SUM

AVG

聚合函数(aggregate functions)

SELECT <列名1>, <列名2>, … FROM <表名> GROUP BY <列名>;

让我们来看一个例子,列出每个部门的课程数量:

SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name;

17. HAVING

乍看起来,

HAVING

WHERE

很像:

SELECT <列名1>, <列名2>, … FROM <表名> GROUP BY <列名x> HAVING <条件>;

那么,

HAVING

WHERE

有什么不同呢?让我们先来看一个例子,列出开了不止一门课程的部门开设的课程数:

SELECT COUNT(course_id), dept_name FROM course GROUP BY dept_name HAVING COUNT(course_id)>1;

这里

HAVING

不能换成

WHERE

,因为

WHERE

直接针对行操作,且在

GROUP BY

之前运行(即先通过

WHERE

筛选行,之后再将筛选出的行通过

GROUP BY

分组)。假设SQL中不存在

HAVING

语句,那么我们只能先新建一张表,将COUNT(course_id)作为新表的列,然后在新表上再通过

WHERE

进行筛选(当然,实际上SQL提供了派生表、CTE等机制,并不用真的手工建新表)。

18. ORDER BY

ORDER BY

可以对结果进行排序,在没有明确指定

ASC

(升序)或

DESC

(降序)的情况下,默认按升序排列。

SELECT <列名1>, <列名2>, …FROM <表名>ORDER BY <列名1>, <列名2>, …, ASC|DESC;

例子:

SELECT * FROM course ORDER BY credits;SELECT * FROM course ORDER BY credits DESC;

19. BETWEEN

BETWEEN

语句用于

指定区间

SELECT <列名1>, <列名2>, … FROM <表名> WHERE <列名x> BETWEEN <值1> AND <值2>;

其中“值”可能是数字,文本,乃至日期等。

例如,列出薪资在50000和100000之间的教员:

SELECT * FROM instructor WHERE salary BETWEEN 50000 AND 100000;

20. LIKE

LIKE

用于匹配

文本中的特定模式

SELECT <列名1>, <列名2>, … FROM <表名> WHERE <列名x> LIKE <模式>;

模式中可以使用以下两个通配符:

% (零个、一个或多个字符)_ (单个字符)

例子:列出课程名中包含“to”的课程,以及课程ID以“CS-”开头的课程。

SELECT * FROM course WHERE title LIKE "%to%";SELECT * FROM course WHERE course_id LIKE "CS-___";

21. IN

IN

语句表示值属于某个集合。

SELECT <列名1>, <列名2>, … FROM <表名> WHERE <列名n> IN (<值1>, <值2>, …);

例子:列出计算机科学、物理、电子工程部门的学生。

SELECT * FROM student WHERE dept_name IN ("Comp. Sci.", "Physics", "Elec. Eng.");

22. JOIN

JOIN

用来组合两张以上表中的值。下图展示了

JOIN

的三种类型:

图片来源:zeroturnaround.com

SELECT <列名1>, <列名2>, … FROM <表名1> JOIN <表名2> ON <表名1.列名x> = <表名2.列名x>

让我们来看三个例子,分别对应三种

JOIN

的类型。

第一个例子,列出课程时包含开设课程的部门详情:

SELECT * FROM course JOIN department ON course.dept_name=department.dept_name;

第二个例子,列出所有具有前置课程的课程的详情:

SELECT prereq.course_id, title, dept_name, credits, prereq_id FROM prereq LEFT OUTER JOIN course ON prereq.course_id=course.course_id;

最后一个例子,列出所有课程的详情,不管是否具有前置课程:

SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq RIGHT OUTER JOIN course ON prereq.course_id=course.course_id;

23. 视图

视图(view)是虚拟的SQL表。它包含行和列,和一般的SQL表格很类似。视图总是显示数据库中的最新数据。

CREATE VIEW

创建视图:

CREATE VIEW <视图名> AS SELECT <列名1>, <列名2>, … FROM <表名> WHERE <条件>;

DROP VIEW

删除视图:

DROP VIEW <视图名>;

例如,创建3学分的课程视图:

CREATE VIEW my_view AS SELECT * FROM course WHERE credits=3;

24. 聚合函数

我们之前已经提到聚合函数,这里列出最常用的一些聚合函数:

COUNT(列名)

返回行数

SUM(列名)

返回指定列的值之和

AVG(列名)

返回指定列的平均值

MIN(列名)

返回指定列的最小值

MAX(列名)

返回指定列的最大值

25. 嵌套子查询

在SQL请求中,可以嵌套

SELECT-FROM-WHERE

表达式,称为

嵌套子查询(nested subqueries)

例如,查找2009年秋、2010年春都开的课程:

SELECT DISTINCT course_id FROM section WHERE semester = ‘Fall’ AND year= 2009 AND course_id IN ( SELECT course_id FROM section WHERE semester = ‘Spring’ AND year= 2010 );

希望你觉得这篇文章有用。

感谢阅读!?

祝面试顺利!

1.《sql语句查询 SQL常用语句总结(面试很有用哦)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《sql语句查询 SQL常用语句总结(面试很有用哦)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/486146.html

上一篇

智能计算机 当计算机智能超越人类 人工智能奇点会到来吗?

下一篇

北京p2p租车平台 P2P租车兴起:分享经济离普及还有多远?

课程整合 课程整合成课堂新模式,“新课改”背景下“跨学科”教学或成必然-山东省青岛第五十九中学

课程整合成课堂新模式,“新课改”背景下“跨学科”教学或成必然教学课程课堂课程整合成课堂新模式,“新课改”背景下“跨学科”教学或成必然-山东省青岛第五十九中学山东省青岛第五十九中学 · 2017-01-17 11:21课程整合成课堂新模式,“新课改”背景下“跨学科”教学或成必然-山东省青岛第五十九中学课程整合成课堂新模式,“新课改”背景下“跨学科”...

 日常英语口语900句20:过去进行时口语句子

日常英语口语900句20:过去进行时口语句子

288. I was writing some letters to friends of mine.288. 我给我的朋友写了几封信。289. What were you doing at about 4 o’clock yesterday afternoon?289.昨天下午四点钟左右你在干什么?290. I was listening to...

黑曼巴精神是什么 科比布莱恩特霸气语句,黑曼巴精神!励志人生!

  • 黑曼巴精神是什么 科比布莱恩特霸气语句,黑曼巴精神!励志人生!
  • 黑曼巴精神是什么 科比布莱恩特霸气语句,黑曼巴精神!励志人生!
  • 黑曼巴精神是什么 科比布莱恩特霸气语句,黑曼巴精神!励志人生!
达内在线课程 达内上线技术学习平台TMOOC.CN,由线下反攻线上,O2O是在线教育的出路?

达内在线课程 达内上线技术学习平台TMOOC.CN,由线下反攻线上,O2O是在线教育的出路?

3月17日,达内宣布上线达内精品在线平台—— TMOOC.CN,将原有线下的老师、教学和课程资源搬到线上,围绕着IT教育打造一个O2O的技术学习平台。为什么是一个 O2O 的技术学习平台?TMOOC.CN 上共有 4 种不同类型的课程,分别是技术课程、职业课程和就业课程。目前除了技术课程是以在线录播课程和答疑方式之外,其余都借助了达内原先在线下积...

吕良伟年龄 健身教练为卖课程,篡改吕良伟探望敬老院真相,老人并非网传61岁

  • 吕良伟年龄 健身教练为卖课程,篡改吕良伟探望敬老院真相,老人并非网传61岁
  • 吕良伟年龄 健身教练为卖课程,篡改吕良伟探望敬老院真相,老人并非网传61岁
  • 吕良伟年龄 健身教练为卖课程,篡改吕良伟探望敬老院真相,老人并非网传61岁
课程格子 课程格子CEO李天放:有竞争是好事

课程格子 课程格子CEO李天放:有竞争是好事

本站讯 11月30日消息,课程格子CEO李天放跟大家分享了他做课程格子的想法。以下为演讲实录:李天方:我们所有的时间都是去校园里面,大约每个学期可能会10所校园跟学生们沟通,所以我今天说的内容可能也是从来都没有说过的,更多是跟大家分享一些我们每天做产品和一个垂直领域打交道的一些经验和想法。我们的产品其实是蛮简单的,我们从12年9月份开始做,当时我...

coursera官网中文版 三门重量级Coursera课程发布中文版,越发重视中国市场

coursera官网中文版 三门重量级Coursera课程发布中文版,越发重视中国市场

昨日,Coursera三门重量级课程发布全中文版,包括密歇根大学的模型思维,约翰霍普金斯学院的数据科学家的工具箱和R语言程序开发。模型思维关注如何建构模型,而后两门课是数据科学转向课程的前两门课。Coursera新任掌门人Richard Levin在10月份接受China Daily记者采访,那时他告诉记者Coursera正在我为中国学习者提供更...

网易云课程 网易云课堂:在线教育到底该不该收费?

网易云课程 网易云课堂:在线教育到底该不该收费?

互联网的发展对很多传统产业都起到了非常积极的促进作用和影响,其中在线教育就是最为明显和突出的一个。轻松便捷的学习机制,丰富多彩的课程内容,在线教育凭借着自身独特的产品特点,已经被很多人熟悉并喜爱,成为了日常生活的一部分。随着在线教育市场的壮大,围绕其到底应该是免费还是收费的问题,引起了不少网民的关注。关于这个问题,国内在线教育的领先平台——网易云...