0%

SQL从入门到实战

不要混日子,小心让日子把你给混了

数据库组织数据存储是按照库->表->数据这三个层级

数据库和SQL的关系:

  • 数据库是用来存储数据的,在这个过程中,会涉及到

    • 数据的新增

    • 数据的删除

    • 数据的修改

    • 数据的查询

    • 数据库,数据表的管理

      SQL语言,就是一种对数据库,数据进行操作,管理,查询的工具。

使用数据库软件去获得库->表->数据,这种数据组织,存储的能力。

并借助SQL语言,完成对数据的增删改查等操作。

SQL语法特征:

​ SQL大小写不敏感

​ SQL可以单行或多行书写,最后以;号结束

​ SQL支持注释:

​ 单行注释: — 注释内容(—后面一定要有一个空格)

​ 单行注释: # 注释内容(# 后面可以不加空格)

DDL:数据定义(库的创建删除,表的创建删除)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
-- 针对库的操作
-- 查看数据库
SHOW DATABASES;
-- 使用数据库
USE 数据库名称;
-- 创建数据库
CREATE DATABASE 数据库名称 [CHARSET UTF8];
-- 删除数据库
DROP DATABASE 数据库名称;
-- 查看当前使用的数据库
SELECT DATABASE();
-- -----------------------------------------
-- 针对表的管理
-- 需要先选择数据库
-- 查看有那些表
SHOW TABLES;
-- 删除表
DROP TABLE 表名称;
DROP TABLE IF EXISTS 表名称;
-- 创建表
CREATE TABLE 表名称(
列名称 列类型,
列名称 列类型,
..........
);
-- 列类型有
int -- 整数
float -- 浮点数
varchar(长度) -- 文本,长度为文字,做最大长度限制
date -- 日期类型
timetamp -- 时间戳类型

DML:数据操纵(新增数据,删除数据,修改数据)

SQL只支持单引号对字符串

INSERT数据插入:

1
INSERT INTO 表[(列1,列2,列3....,列N)] VALUES(值1,值2,..,值N)[,(值1,值2,..,值N),(值1,值2,..,值N)] -- []表示可选

DELETE数据删除:

1
2
3
DELETE FROM 表名称 [WHERE 条件判断]
-- 条件判断: 列 操作符 值
-- 操作符:=,>, <,<=,>=,!=等等

UPDATE数据更新:

1
2
3
UPDATE 表名 SET 列=值 [WHERE 条件判断];
-- 条件判断: 列 操作符 值
-- 操作符:=,>, <,<=,>=,!=等等

DCL:数据控制(新增用户,删除用户,密码修改,权限管理)

DQL:数据查询(基于需求查询和计算数据)

1
2
SELECT 字段列表|* FROM 表 -- 从(FROM)表中,选择(SELECT)某些列进行展示
SELECT 字段列表|* FROM 表 WHERE 条件判断

分组聚合:

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

GROUP BY 中出现了那个列,那个列才能出现在SELECT中的非聚合中。

排序分页:

1
2
3
4
5
-- 结果排序
SELECT 列|聚合函数|* FROM 表
WHERE ...
GROUP BY ...
ORDER BY ...[ASC | DESC] -- ASC升 DESC降
1
2
3
4
5
6
7
8
-- 结果分页限制
-- 可以使用LIMIT关键字,对查询结果进行数量限制或分页显示
SELECT 列|聚合函数|* FROM 表
WHERE ...
GROUP BY ...
ORDER BY ... [ASC|DESC]
LIMIT n[,m] -- n,m 跳过n条取m条
-- 讲究顺序的

Python创建到MySQL的数据库链接:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
pip install pymysql # 按照pymysql库

from pymysql import Connection # 获取到MySQL数据库的链接对象
conn = Connection(
host='localhost',
port=3306,
user='root',
password='123456'
)
# 打印MySQL数据库软件信息
print(conn.get_server_info())
# 执行非查询性质的SQL语句--------------------
cursor=conn.cursor() # 获取到游标对象
conn.select_db("test") # 选择数据库
cursor.execute("create table test_pymysql(id int);") # 执行sql
# 执行查询性质的SQL语句----------------------
cursor=conn.cursor() # 获取到游标对象
conn.select_db("test") # 选择数据库
cursor.execute("select * from student") # 执行sql
# 获取查询结果
results:tuple=cursor.fetchall()
for r in results:
print(r)
# 关闭到数据库的链接
conn.close()

Python执行SQL语句插入数据到MySQL

1
2
3
4
5
6
7
8
9
conn.commit
# 如果不想手动commit确认,可以在构建链接对象的时候,设置自动commit的属性
conn = Connection(
host='localhost',
port=3306,
user='root',
password='123456'
autocommit=True # 设置自动提交
)