基础命令

SQL语言分类:

  • DDL (Data Definition Language)数据定义
  • DML (Data Manipulation Language)数据操作
  • DCL(Data Control Language)数据控制
  • DQL (Data Query Language)数据查询

MySQL命令行环境下的基础命令:

SQL命令 结果
mysql -uroot -p 以root用户,通过密码进行登录
show databases; 查看有哪些数据库
use 数据库名; 使用某个数据库
show tables; 查看数据库内有哪些表
exit 退出MySQL的命令行环境

SQL的语法特征

  1. 大小写不敏感
  2. 可以单行或多行书写,最后以;号结束
  3. SQL支持注释:
    • 单行注释:– 注释内容(–后面一定要有一个空格)
    • 单行注释:# 注释内容(#后面可以不加空格,推荐加上)
    • 多行注释:/* 注释内容 */

DDL-数据定义

库管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 查看数据库
SHOW DATABASES;

-- 使用数据库
USE 数据库名称;

-- 创建数据库
CREATE DATABASE 数据库名称[CHARSET UTF8];

-- 删除数据库
DROP DATABASE 数据库名称;

-- 查看当前使用的数据库
SELECT DATABASE();

表管理

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 查看有哪些表(需要先选择数据库)
SHOW TABLES;

-- 创建表
CREATE TABLE 表名称(
列名称 列类型,
列名称 列类型,
......
);

-- 删除表
DROP TABLE 表名称;
DROP TABLE IF EXISTS 表名称;

列类型:

列名称 列类型
int 整数
float 浮点数
varchar(长度) 文本,长度为数字,做最大长度限制,最大可填255
date 日期类型
timestamp 时间戳类型

DML-数据操作

INSERT数据插入

1
2
# []代表可以省略的内容
INSERT INTO 表[(列1, 列2, ..., 列N)] VALUES(值1, 值2, ..., 值N)[, (值1, 值2, ..., 值N),...,(值1, 值2, ..., 值N)]

DELETE数据删除

1
2
3
4
5
6
7
8
# []代表可以省略的内容
DELETE FROM 表名称 [WHERE条件判断]

/*
条件判断:列 操作符 值
操作符: = < > <= >= !=等等,
如:id = 5 id < 3 id >= 6 id != 5
*/

UPDATE 数据更新

1
UPDATE 表名 SET=值 [WHERE 条件判断]

注意:字符串的值出现在SQL语句中,必须要用单引号包围起来。


DCL-数据控制


DQL-数据查询

基础查询

1
2
3
4
# 基础查询的语法
SELECT 字段列表|*FROM
# 过滤查询的语法
SELECT 字段列表|*FROMWHERE 条件判断

分组聚合

1
2
3
4
5
6
7
SELECT 字段|聚合函数 FROM 表 [WHERE 条件] GROUP BY
聚合函数有:
- SUM(列) 求和
- AVG(列) 求平均值
- MIN(列) 求最小值
- MAX(列) 求最大值
- COUNT(列|*) 求数量

注意:

  • 一个SQL中可以写多个聚合
  • GROUP BY中出现了哪个列,哪个列才能出现在SELECT中的非聚合中

排序分页

1
2
3
4
5
6
7
# 只写n表示:只显示几条数据
# n和m都写表示:跳过前n行,从第n + 1条开始往下取m条
SELECT|聚合函数|* FROM
WHERE ...
GROUP BY ...
ORDER BY ... [ASC | DESC]
LIMIT n[, m]

注意:

  • WHERE、GROUP BY、ORDER BY、LIMIT均可按需求省略
  • SELECT和FROM是必写的
  • 执行顺序:FROM ->WHERE ->GROUP BY和聚合函数 ->SELECT ->ORDER BY ->LIMIT

Python操作MySQL

基础使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 导包
from pymysql import Connection

# 获取链接对象
链接对象 = Connection(主机,端口,账户,密码)

# 得到游标对象
游标对象 = 链接对象.cursor()
链接对象.select_db("")

# 执行SQL语句
游标对象.execute("")

# 得到全部的查询结果(封装在元组内)
results = 游标对象.fetchall()

# 关闭和数据库的连接
链接对象.close()

数据插入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 导包
from pymysql import Connection

# 获取链接对象
链接对象 = Connection(主机,端口,账户,密码)

# 得到游标对象
游标对象 = conn.cursor()
链接对象.select_db("")

# 执行SQL语句
游标对象.execute("")

# 确认提交
链接对象.commit()

# 关闭和数据库的连接
链接对象.close()

也可以通过代码设置自动提交,无需手动commit

1
2
3
4
5
6
7
链接对象 = Connection(
主机,
端口,
账户,
密码
autocommit = True # 设置自动提交
)

Repository

本章示例代码已归档至 GitHub,可用于本地复现、调试与扩展。

查看本章源码