【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:用于从数据库中查询数据
SQL 复制代码
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:用于向数据库表中插入新数据
SQL 复制代码
INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2, ...)

table_name: 要插入数据的表。

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

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

  • UPDATE:用于更新数据库表中现有数据
SQL 复制代码
UPDATE table_name
SET  column1 = value1, column2 = value2,..
WHERE condition

table_name: 要更新数据的表。

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

condition: 更新条件。

  • DELETE:用于从数据库表中删除数据
SQL 复制代码
DELETE FROM table_name
WHERE condition

table_name: 要删除数据的表。

condition: 删除条件。

  • CREATE TABLE:用于创建新的数据库表
SQL 复制代码
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:用于修改现有的数据库表的结构
SQL 复制代码
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:用于删除数据库表
SQL 复制代码
DROP TABLE table_name

table_name: 要删除的表

  • CREATE INDEX:用于创建索引,以加快查询速度
SQL 复制代码
CREATE INDEX index_name
ON table_name (column_name)

index_name: 索引名

table_name:创建的表

column_name: 表中要索引的列

  • DROP INDEX:用于删除索引
SQL 复制代码
DROP INDEX index_name
ON table_name 

index_name: 要删除的索引名

table_name:索引所在的表

  • WHERE:用于指定筛选条件
SQL 复制代码
SELECT column_name
FROM table_name
WHERE condition

condition:筛选条件

  • ORDER BY:用于对结果集进行排序
SQL 复制代码
SELECT column_name
FROM table_name
ORDER BY column_name ASC/DESC

column_name : 用于排序的列

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

DESC :降序

  • GROUP BY:用于将结果按一列或者多列进行分组
SQL 复制代码
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column_name

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

  • HAVING:用于对分组后的结果进行筛选
SQL 复制代码
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
HAVING condition

condition:筛选条件

  • JOIN:用于将两个或多个表的记录结合起来
SQL 复制代码
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:用于返回唯一不同的值
SQL 复制代码
SELECT DISTINCT column_name 
FROM table_name

column_name(s): 要查询的列。

2.SELECT

2.1 语法

SQL 复制代码
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" 列:

SQL 复制代码
SELECT name, country
FROM Websites

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

SQL 复制代码
SELECT * FROM Websites

3.SELECT DISTINCT

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

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

3.1 语法

SQL 复制代码
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" 列重复值:

SQL 复制代码
SELECT DISTINCT  country
FROM Websites

4.WHERE

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

4.1 语法

SQL 复制代码
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" 的所有网站:

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

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

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

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

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

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

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

SQL 复制代码
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 语法

SQL 复制代码
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" 列排序:

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

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

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

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

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

6.INSERT INTO

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

6.1 语法

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

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

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

SQL 复制代码
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" 表中插入一个新行。

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

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

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

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

7.UPDATE

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

7.1 语法

SQL 复制代码
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。

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

8.DELETE

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

7.1 语法

SQL 复制代码
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 的网站。

SQL 复制代码
DELETE FROM Websites
WHERE name = 'Facebook' AND country = 'USA'
相关推荐
似水流年风萧兮28 分钟前
MySql按年月日自动创建分区存储过程
数据库·mysql·oracle
臣妾写不来啊1 小时前
MySQL之having关键字
数据库·mysql
sleP4o2 小时前
MySQL的学习
学习·mysql·adb
唐可盐2 小时前
CentOS 7 下 MySQL 5.7 的详细安装与配置
linux·mysql·centos
Ruyi_baobao2 小时前
MySQL -- 约束
数据库·mysql·oracle
L~river2 小时前
SQL刷题快速入门(二)
数据库·sql·mysql·算法·笔试·刷题
shuangyueliao3 小时前
sql server cdc漏扫数据
数据库·oracle
费费开心一点3 小时前
数据库系统概论学习笔记
数据库·oracle
Lang_xi_3 小时前
mysql中创建计算字段
数据库·mysql