【MySQL】SQL菜鸟教程(一)

1.常见命令

1.1 总览

命令

作用

SELECT

从数据库中提取数据

UPDATE

更新数据库中的数据

DELETE

从数据库中删除数据

INSERT INTO

向数据库中插入新数据

CREATE DATABASE

创建新数据库

ALTER DATABASE

修改数据库

CREATE TABLE

创建新表

ALTER TABLE

变更数据表

DROP TABLE

删除表

CREATE INDEX

创建索引

DROP INDEX

删除索引

1.2 常用语法

  • SELECT:用于从数据库中查询数据

    SELECT column_name

    FROM table_name

    WHERE condition

    ORDER BY column_name ASC/DESC

column_name(s): 要查询的列。

table_name: 要查询的表。

condition: 查询条件(可选)。

ORDER BY: 排序方式,ASC 表示升序,DESC 表示降序(可选)。

  • INSERT INTO:用于向数据库表中插入新数据

    INSERT INTO table_name (column1, column2,...)

    VALUES (value1, value2, ...)

table_name: 要插入数据的表。

column1, column2, ...: 要插入数据的列。

value1, value2, ...: 对应列的值。

  • UPDATE:用于更新数据库表中现有数据

    UPDATE table_name

    SET column1 = value1, column2 = value2,...

    WHERE condition

table_name: 要更新数据的表。

column1 = value1, column2 = value2, ...: 要更新的列及其新值。

condition: 更新条件。

  • DELETE:用于从数据库表中删除数据

    DELETE FROM table_name

    WHERE condition

table_name: 要删除数据的表。

condition: 删除条件。

  • CREATE TABLE:用于创建新的数据库表

    CREATE TABLE table_name(

    column1 data_type constraint,

    column2 data_type constraint,

    ...)

table_name: 要创建的表名。

column1, column2, ...: 表的列。

data_type: 列的数据类型(如 INT、VARCHAR 等)。

constraint: 列的约束(如 PRIMARY KEY、NOT NULL 等)。

  • ALTER TABLE:用于修改现有的数据库表的结构

    ALTER TABLE table_name

    ADD column_name1 data_type

    ALTER TABLE table_name

    DROP COLUMN column_name2

table_name: 要修改的表。

column_name1: 要添加的列。

data_type: 列的数据类型。

column_name2: 要删除的列。

  • DROP TABLE:用于删除数据库表

    DROP TABLE table_name

table_name: 要删除的表

  • CREATE INDEX:用于创建索引,以加快查询速度

    CREATE INDEX index_name

    ON table_name (column_name)

index_name: 索引名

table_name:创建的表

column_name: 表中要索引的列

  • DROP INDEX:用于删除索引

    DROP INDEX index_name

    ON table_name

index_name: 要删除的索引名

table_name:索引所在的表

  • WHERE:用于指定筛选条件

    SELECT column_name

    FROM table_name

    WHERE condition

condition:筛选条件

  • ORDER BY:用于对结果集进行排序

    SELECT column_name

    FROM table_name

    ORDER BY column_name ASC/DESC

column_name : 用于排序的列

ASC : 升序(默认,什么都不写的话就是升序)

DESC :降序

  • GROUP BY:用于将结果按一列或者多列进行分组

    SELECT column_name, aggregate_function(column_name)

    FROM table_name

    WHERE condition

    GROUP BY column_name

aggregate_function: 聚合函数(如 COUNT、SUM、AVG 等)

  • HAVING:用于对分组后的结果进行筛选

    SELECT column_name, aggregate_function(column_name)

    FROM table_name

    GROUP BY column_name

    HAVING condition

condition:筛选条件

  • JOIN:用于将两个或多个表的记录结合起来

    SELECT column_name

    FROM table_name1

    JOIN table_name2

    ON table_name1.column_name = table_name2.column_name

JOIN: 可以是 INNER JOIN、LEFT JOIN、RIGHT JOIN 或 FULL JOIN。

  • DISTINCT:用于返回唯一不同的值

    SELECT DISTINCT column_name

    FROM table_name

column_name(s): 要查询的列。

2.SELECT

2.1 语法

复制代码
SELECT  column_name 1, column_name 2
FROM table_name

#OR
SELECT * FROM table_name

参数说明:

  • column1, column2, ...:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
  • table_name:要查询的表名称。
  • *: 通配符,表示选择表中的所有列。

2.2 示例

Websites表:

id

name

url

alexa

country

1

Google

https://www.google.cm/

1

USA

2

淘宝

https://www.taobao.com/

13

CN

3

菜鸟教程

http://www.runoob.com/

4689

CN

4

微博

http://weibo.com/

20

CN

5

Facebook

https://www.facebook.com/

3

USA

1.从 "Websites" 表中选取 "name" 和 "country" 列:

复制代码
SELECT name, country
FROM Websites

2.从 "Websites" 表中选取所有列:

复制代码
SELECT * FROM Websites

3.SELECT DISTINCT

在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

DISTINCT 关键词用于返回唯一不同的值。

3.1 语法

复制代码
SELECT  DISTINCT column_name 1, column_name 2
FROM table_name

参数说明:

  • column1, column2, ...:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
  • table_name:要查询的表名称。

3.2 示例

Websites表:

id

name

url

alexa

country

1

Google

https://www.google.cm/

1

USA

2

淘宝

https://www.taobao.com/

13

CN

3

菜鸟教程

http://www.runoob.com/

4689

CN

4

微博

http://weibo.com/

20

CN

5

Facebook

https://www.facebook.com/

3

USA

1.从 "Websites" 表的 "country" 列中选取唯一不同的值,也就是去掉 "country" 列重复值:

复制代码
SELECT DISTINCT  country
FROM Websites

4.WHERE

WHERE 子句用于提取那些满足指定条件的记录。

4.1 语法

复制代码
SELECT  column_name 1, column_name 2
FROM table_name
WHERE condition

参数说明:

  • column1, column2, ...:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
  • table_name:要查询的表名称。
  • condition: 筛选条件

4.2 WHERE 中的运算符

运算符

含义

=

等于

!= / <>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

AND

组合多个逻辑,与

OR

逻辑,或

NOT

逻辑,非

BETWEEN ...AND...

在某个范围之内

LIKE

搜索某种模式吗,模糊查询

IN

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

IS NULL

检查是否为空

IS NOT NULL

检查是否不为空

4.3 示例

Websites表:

id

name

url

alexa

country

1

Google

https://www.google.cm/

1

USA

2

淘宝

https://www.taobao.com/

13

CN

3

菜鸟教程

http://www.runoob.com/

4689

CN

4

微博

http://weibo.com/

20

CN

5

Facebook

https://www.facebook.com/

3

USA

1.从 "Websites" 表中选取国家为 "CN" 的所有网站:

复制代码
SELECT  url
FROM Websites
WHERE country = 'CN'

SQL 使用单引号 来环绕文本值(大部分数据库系统也接受双引号)。在上个实例中 'CN' 文本字段使用了单引号。如果是数值字段,请不要使用引号。

2.从 "Websites" 表中选取id为 "1" 的网站:

复制代码
SELECT  url
FROM Websites
WHERE id = 1

3.匹配列表中的任意值(IN)

复制代码
SELECT  *
FROM Employees
WHERE Department IN ('HR', 'IT', 'Finance')

4.模糊匹配(LIKE)支持通配符 %(任意多个字符)和 _(单个字符)

复制代码
SELECT  *  FROM Employees   WHERE Name LIKE 'J%'     	-- 以J开头的名字
SELECT  *  FROM Employees   WHERE Name LIKE '%son'		-- 以son结尾的名字
SELECT  *  FROM Employees   WHERE Name LIKE '_o%'		-- 第二个字符是o的名字

5.ORDER BY

ORDER BY 关键字用于对结果集进行排序。默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。

5.1 语法

复制代码
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

参数说明:

  • column1, column2, ...:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
  • table_name:要查询的表名称。
  • ASC: 按升序排序(默认)
  • DESC: 按降序排序

5.2 示例

Websites表:

id

name

url

alexa

country

1

Google

https://www.google.cm/

1

USA

2

淘宝

https://www.taobao.com/

13

CN

3

菜鸟教程

http://www.runoob.com/

4689

CN

4

微博

http://weibo.com/

20

CN

5

Facebook

https://www.facebook.com/

3

USA

1.从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序:

复制代码
SELECT  *
FROM Websites
ORDER BY alexa

2.从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序:

复制代码
SELECT  *
FROM Websites
ORDER BY alexa DESC

3.从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序:

复制代码
SELECT  *
FROM Websites
ORDER BY country, alexa

6.INSERT INTO

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

6.1 语法

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

复制代码
INSERT INTO table_name
VALUES (value1,value2,value3,...);

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

复制代码
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

参数说明:

  • column1, column2, ...:要插入的字段名称
  • table_name:要查询的表名称。
  • value1, value2, ...:需要插入的字段值。

6.2 示例

Websites表:

id

name

url

alexa

country

1

Google

https://www.google.cm/

1

USA

2

淘宝

https://www.taobao.com/

13

CN

3

菜鸟教程

http://www.runoob.com/

4689

CN

4

微博

http://weibo.com/

20

CN

5

Facebook

https://www.facebook.com/

3

USA

1.向 "Websites" 表中插入一个新行。

复制代码
INSERT INTO Websites (name, url, alexa, country)
VALUES ('百度', 'https://www.baidu.com/','4','CN');

2.在指定的列插入数据,将插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新):

复制代码
INSERT INTO Websites (name, url, country)
VALUES ('stackoverflow', 'http://stackoverflow.com/', 'IND');

没有添加的列会自动填充为0

7.UPDATE

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

7.1 语法

复制代码
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition

参数说明:

  • column1, column2, ...:要修改的字段名称
  • table_name:要修改的表名称。
  • value1, value2, ...:需要修改的字段值。
  • condition:修改条件,用于指定哪些数据要修改。

7.2 示例

Websites表:

id

name

url

alexa

country

1

Google

https://www.google.cm/

1

USA

2

淘宝

https://www.taobao.com/

13

CN

3

菜鸟教程

http://www.runoob.com/

4689

CN

4

微博

http://weibo.com/

20

CN

5

Facebook

https://www.facebook.com/

3

USA

1.把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA。

复制代码
UPDATE Websites
SET alexa = '5000', country = 'USA'
WHERE name = '菜鸟教程'

8.DELETE

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

7.1 语法

复制代码
DELETE FROM table_name
WHERE condition;

参数说明:

  • table_name:要删除的表名称。
  • condition:删除条件,用于指定哪些数据要删除。

7.2 示例

Websites表:

id

name

url

alexa

country

1

Google

https://www.google.cm/

1

USA

2

淘宝

https://www.taobao.com/

13

CN

3

菜鸟教程

http://www.runoob.com/

4689

CN

4

微博

http://weibo.com/

20

CN

5

Facebook

https://www.facebook.com/

3

USA

1.从 "Websites" 表中删除网站名为 "Facebook" 且国家为 USA 的网站。

复制代码
DELETE FROM Websites
WHERE name = 'Facebook' AND country = 'USA'
相关推荐
冒泡的肥皂2 小时前
说下数据存储
数据库·后端·mysql
BullSmall2 小时前
MySQL全面安全加固实战指南
mysql·安全·adb
码河漫步3 小时前
win11安装mysql社区版数据库
数据库·mysql
Wang's Blog3 小时前
MySQL: 存储引擎深度解析:Memory与Federated的特性与应用场景
数据库·mysql
学习中的程序媛~3 小时前
Spring 事务(@Transactional)与异步(@Async / CompletableFuture)结合的陷阱与最佳实践
java·数据库·sql
老葱头蒸鸡3 小时前
(4)Kafka消费者分区策略、Rebalance、Offset存储机制
sql·kafka·linq
员大头硬花生3 小时前
九、InnoDB引擎-MVCC
数据库·sql·mysql
星光一影4 小时前
基于SpringBoot与Vue的海外理财系统设计与实现
vue.js·spring boot·后端·mysql·node.js·html5
王小小鸭5 小时前
【Oracle APEX开发小技巧17】交互式网格操作按钮根据条件/状态设置能否被点击生效
数据库·oracle·oracle apex