sql 语言

sql 语言

DDL

DDL 全称 Data Definition Language,即数据定义语言。

DATABASE

创建数据库

CREATE DATABASE 语句用于创建数据库。

CREATE DATABASE database_name;

撤销数据库

DROP DATABASE 语句用于撤销数据库。

DROP DATABASE database_name;

TABLE

创建表

CREATE TABLE 语句用于创建数据库中的表。

CREATE TABLE table_name
(
    column_name1 data_type(size),
    column_name2 data_type(size),
    column_name3 data_type(size),
    ....
);

撤销表

DROP TABLE 语句用于撤销数据库中的表。

DROP TABLE table_name;

修改表

ALTER TABLE 语句用于在已有的表中添加、删除或修改列。

  • 添加列
ALTER TABLE table_name
ADD column_name datatype;
  • 删除列
ALTER TABLE table_name
DROP COLUMN column_name;
  • 修改列
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

INDEX

创建索引

CREATE INDEX 语句用于在表中创建索引。

CREATE INDEX index_name
ON table_name (column_name)

创建唯一索引

CREATE UNIQUE INDEX 语句用于在表中创建唯一索引。

在表上创建一个唯一的索引。不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

撤销索引

Oracle 方法:

DROP INDEX index_name

Mysql 方法:

ALTER TABLE table_name DROP INDEX index_name

VIEW

视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。

注:视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据。

创建视图

CREATE VIEW 语句用于创建视图。

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;

撤销视图

DROP VIEW 语句用于撤销视图。

DROP VIEW view_name;

修改视图

CREATE OR REPLACE VIEW 语句用于修改视图。

CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;

DML

DML 全称 Data Manipulation Language,即数据操纵语言。

INSERT

INSERT INTO 语句用于向表中插入新记录。

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

UPDATE

UPDATE 语句用于更新表中的记录。

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

DELETE

DELETE 语句用于删除表中的记录。

DELETE FROM table_name
WHERE some_column=some_value;

DQL

DQL 全称 Data Query Language,即数据查询语言。

SELECT

SELECT column_name(s)
FROM table_name
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]

DISTINCT

WHERE

WHERE 子句用于过滤查询条件。

下面的运算符可以在 WHERE 子句中使用:

运算符

描述

=

等于

<>

不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=

>

大于

<

小于

>=

大于等于

<=

小于等于

AND

前后两个条件都成立

OR

前后两个条件有一个成立

BETWEEN

在某个范围内

IN

指定针对某个列的多个可能值

LIKE

搜索某种模式

AND & OR

AND & OR 运算符用于基于一个以上的条件对记录进行过滤。

SELECT column_name(s)
FROM table_name
WHERE condition1 AND condition2;

SELECT column_name(s)
FROM table_name
WHERE condition1 OR condition2;

BETWEEN

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

IN

IN 操作符允许您在 WHERE 子句中规定多个值。

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

LIKE

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

通配符

通配符可用于替代字符串中的任何其他字符。在 SQL 中,通配符与 SQL LIKE 操作符一起使用。

在 SQL 中,可使用以下通配符:

通配符

描述

%

替代 0 个或多个字符

_

替代一个字符

[charlist]

字符列中的任何单一字符

[^*charlist*]或[!charlist]

不在字符列中的任何单一字符

ORDER BY

ORDER BY 关键字用于对结果集进行排序。

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

注:ASC 表示升序;DESC 表示降序。

GROUP BY

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

例:

SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;

HAVING

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

HAVING 子句可以让我们筛选分组后的各组数据。

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

例:

SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200 
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

JOIN

JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

在我们继续讲解实例之前,我们先列出您可以使用的不同的 SQL JOIN 类型:

  • INNER JOIN:如果表中有至少一个匹配,则返回行
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
  • FULL JOIN:只要其中一个表中存在匹配,则返回行
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

UNION

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

--如果允许重复
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

FAQ

CRUD:是指Create、Retrieve、Update 和 Delete 的首字母,合指增删改查。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

1347 旋转字符串

1347 旋转字符串 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 S[0...n-1]是一个长度为n的字符串,定义旋转函数...

3348
来自专栏Bingo的深度学习杂货店

Q69 Sqrt(x)

Implement int sqrt(int x). Compute and return the square root of x. x is guarant...

3247
来自专栏用户2442861的专栏

mysql 创建 主键索引 唯一索引 全文索引 多列索引 添加索引

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

1111
来自专栏程序生活

连续子数组的最大和

题目1 连续子数组的最大和 描述: 输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度...

2815
来自专栏程序员互动联盟

【编程基础】C语言产生随机数需要了解的几个函数

C语言产生随机数是一个常见的编程功能任务,当然这个也不难,调用两三个函数就出来了,但是你知道这些函数具体是起到怎样的作用,并且是它们是如何产生随机数的吗? 几...

2717
来自专栏Bingo的深度学习杂货店

Q7 Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 1...

2684
来自专栏我的博客

Sqlite创建表以及默认当前时间

1、创建数据库 CREATE TABLE Joyous_sqlite ( id INTEGER NOT NULL, create_time TIMESTAM...

1983
来自专栏Ryan Miao

oracle创建表相关

1 --创建表 2 create table person( 3 id number primary key, 4 name varchar2(40),...

2585
来自专栏小樱的经验随笔

51Nod 1090 3个数和为0(暴力)

1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 给出一个长度为N的无序数组,数组中的元...

2616
来自专栏WindCoder

MySQL中INSERT INTO SELECT的应用

这种方法常用在目标表已经存在数据库中.需要从源表把数据插入到目标表的情况.如果目标表和源表的列相同,就不必列出数据列了.(未完待续,另参考资料中重复项太多,暂且...

561

扫码关注云+社区