百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

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

toyiye 2024-06-21 12:35 9 浏览 0 评论

数据库

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)表中的所有内容</center>14. SELECT DISTINCT

SELECT DISTINCT过滤掉了重复的值:

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

15. WHERE

我们之前在更新记录时已经用到了WHERE关键字,用来指明条件。这里我们稍微详细一点地介绍下WHERE

WHERE的条件通常是:

  • 比较文本(text)
  • 比较数字(numbers)
  • ANDORNOT等逻辑运算

让我们来看一些例子:

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语句可以分组结果,常用于COUNTMAXMINSUMAVG聚合函数(aggregate functions)

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

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

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

17. HAVING

乍看起来,HAVINGWHERE很像:

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

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

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

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

感谢阅读!?

祝面试顺利!

最后给大家准备一套非常系统的java学习教程。

获取方式:只需转发加关注、然后私信小编“资料”即可马上免费领取哦

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码