MySQL数据库
数据库介绍
信息化社会,无处不在的就是数据
数据包含数据的存储和计算。
数据的存储有TXT,EXCEL,数据库
生活中,如何以Excel组织数据的存储
数据库组织数据的存储
数据库的存储等级可以是按照:库,表,数据进行存储的
数据库管理系统,也就是常说的数据库软件
数据库软件是非常多的,常见的有:
这些软件都能实现:管理库、管理表、基于表来管理数据
数据库和SQL的关系
数据库是用来存储数据的,在这个过程中,会涉及到:
·数据的新增
·数据的删除
·数据的修改
·数据的查询
·数据库、数据表的管理
等等
而SQL语言,就是一种对数据库、数据进行操作、管理、查询的工具。
使用数据库软件去获得库—>表—>数据,这种数据组织、存储的能力
并借助SQL语言,完成对数据的增删改查等操作
MySQL的安装
MySQL的介绍
MySQL是一个中小型的数据库,简单易用性能不错,在企业中频繁出现。
MySQL的安装
下载地址:https://downloads.mysql.com/archives/installer/
MySQL的入门使用
MySQL安装好后,就可以简单的尝试使用它
打开命令行提示符,输入mysql -uroot -p,然后回车后输入密码,即可进入命令行环境
在MySQL的命令行环境下,可以通过:
·show databases; 查看有哪些数据库
·use 数据库名 查看某个数据库
·show tables 查看数据库内有哪些表
·exit 退出MySQL的命令行环境
等命令。
使用图形化工具操作MySQL
使用命令行提示符进行MySQL的操作,不是太方便,一般开发者都会使用第三方图形化工具进行使用。
可用于MySQL的图形化工具非常多。
SQL基础
SQL的概述
·SQL的全程:Structured Query Language,结构化查询语言,用于访问和处理数据库的标准的计算机语言。
SQL语言的分类
由于数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包含:数据的管理、表的管理、库的管理、账号管理、权限管理等等。
所以,操作数据库的SQL语言,也基于功能,可以划分为4类:
·数据定义:DDL(Data Definition Language)
·库的创建删除、表的创建删除等
·数据操纵:DML(Data Mainpulation Language)
·新增数据、删除数据、修改数据等等
·数据控制:DCL(Data Control Language)
·新增用户、删除用户、密码修改、权限管理等等
·数据查询:DQL(Data Query Language)
·基于需求查询和计算数据
SQL的语法特征
在学习DDL、DQL等之前,我们先来了解 SQL的语法特征。
·SQL语言,大小写不敏感
·SQL可以单行或多行书写,最后以;号结束
·SQL支持注释:
·单行注释:-- 注释内容(–后边一定要有一个空格)
·单行注释:# 注释内容(# 后面可以不加空格,推荐加上)
·多行注释:/*注释内容*/
DDL-库管理
查看数据库
show databases;
使用数据库
use 数据库名称;
创建数据库
create database 数据库名称 [charset UTF8];
删除数据库
drop database 数据库名称;
查看当前数据库
slect database();
DDL-表管理
查看有哪些表
show tables;
删除表
drop table 表名称;
drop table if exists 表名称;
创建表
create table 表名称(
列名称 列类型,
列名称 列类型,
...........
列名称 列类型);
--列类型有
int ---整数
float ---浮点数
varchar(长度) ---文本,长度为数字,做最大长度限制
data ---日期类型
timestamp ---时间类型
SQL-DML
DML
DML是指数据操作语言,英文全称是 Data Mainpulation Language,用来对数据库中表的数据记录进行更新。
关键字:
·插入insert
·删除delete
·更新updata
数据插入INSERT
基本语法:
INSERT INTO 表[(列2,列2,......,列N)] VALUES(值1,值2,........,值N),(值1,值2,........,值N),........(值1,值2,........,值N);
数据删除DELETE
基本语法:
DELETE FROM 表名称 [WHERE 条件判断]
条件判断:列 操作符 值
操作符 = < > <= >= !=等等
数据更新UPDATA
基础语法:
UPDATA 表名 SET 列=值 [WHERE 条件判断]
注意事项
字符串的值,出现SQL语句中,必须要用单引号包围起来
SQL-DQL
基本查询
在SQL中,通过SELECT关键字开头的SQL语句,来进行数据的查询
基础语法:
SELECT 字段列表|* FROM 表
含义就是:
从(FROM)表中,选择(SELECT)某些 列进行展示
过滤查询的语法
SELECT 字段列表|* FROM 表SELECT WHERE 条件判断
分组聚合
分组聚合应用场景非常多,如:统计班级中,男生和女生的人数。
这种需求就是需要:
·按性别分组
·统计每个组的人数
这就称之为:分组聚合
基础语法:
SELECT 字段|聚合函数 FROM 表 [WHERE 条件] GROUP BY 列
聚合函数有:
-SUM(列) 求和
-AVG(列) 求平均值
-MIN(列) 求最小值
-MAX(列) 求最大值
-COUNT(列|*) 求数量
GROUP BY 中出现哪个列,那个列才能出现在SELECT中的非聚合中
排序分页
结果排序
可以对查询的结果,使用ORDER BY关键字,指定某个列进行排序,语法:
SELECT 列|聚合函数 * FROM 表
WHERE ......
GROUP BY ......
ORDER BY ...... [ASC | DESC]
LIMIT n[,m]
同样,可以使用LIMIT关键字,对查询结果进行数量限制或分页显示
截至到目前学习到的关键字,需注意:
·WHERE、GROUP BY、 ORDER BY、LIMIT均可以省略
·SELECT 和FROM是必写的
·执行顺序:
FROM–> WHERE -->GROUP BY和聚合函数 -->SELECT -->ORDER BY -->LIMIT
Python & MySQL
基础使用
pymysql
除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库
在python中,使用第三方库:pymysql来完成对MySQL数据库的操作
安装:
pip install pymysql
创建到MySQL的数据库链接
代码如下:
from pymysql import Connection
#获取到MySQL数据库的链接对象
conn = Connection(
host = 'localhost', #主机名(或IP地址)
port = 3306, #端口,默认3306
user = 'root', #账户名
password = '123456' #密码
)
#打印MySQL数据库软件信息
print(conn.get_server_info())
#关闭到数据库的链接
conn.close()
执行SQL语句
演示,执行非查询性质的sql语句:
from pymysql import Connection
#获取到MySQL数据库的链接对象
conn = Connection(
host = 'localhost', #主机名(或IP地址)
port = 3306, #端口,默认3306
user = 'root', #账户名
password = 'root' #密码
)
#获取游标对象
cursor = conn.cursor()
#选择数据库
conn.select_db("test")
#使用游标对象,执行sql语句
cursor.execute("create table test_pymysql(id int ,info varchar(255))")
#关闭到数据库的链接
conn.close()
执行查询性质的sql语句:
from pymysql import Connection
#获取到MySQL数据库的链接对象
conn = Connection(
host = 'localhost', #主机名(或IP地址)
port = 3306, #端口,默认3306
user = 'root', #账户名
password = 'root' #密码
)
#获取游标对象
cursor = conn.cursor()
#选择数据库
conn.select_db("test")
#使用游标对象,执行sql语句
cursor.execute("select * from student")
#获取查询结果
results:tuple = cursor.fetchall()
for r in results:
print(r)
#关闭到数据库的链接
conn.close()
如何获取链接对象
·from pymysql import Connection 导包
·Connection(主机,端口,账户,密码)即为可得到链接对象
·链接对象.close()关闭和MySQL数据库的连接
如何执行SQL查询
通过连接对象调用cursor()方法,得到游标对象
·游标对象.execute()执行SQL语句
·游标对象.fetchall()得到全部的查询结果封装入元组内
数据插入
commit提交
#示例
from pymysql import Connection
#获取到MySQL数据库的链接对象
conn = Connection(
host = 'localhost', #主机名(或IP地址)
port = 3306, #端口,默认3306
user = 'root', #账户名
password = 'root' #密码
)
#获取游标对象
cursor = conn.cursor()
#选择数据库
conn.select_db("test")
#使用游标对象,执行sql语句
cursor.execute("insert into student values(1001,'张三',31,'男')")
#通过commit确认
conn.commit()
#关闭到数据库的链接
conn.close()
没有commit确认,经过执行是无法将数据插入到数据表student中的。
pymysql在执行数据插入或其它产生的数据更改的SQL语句时,默认时需要提交更改的,即,需要通过代码"确认"这种更改行为。
通过链接对象.commit()即可确认此行为。
自动commit
如果不想手动commit确认,可以在构建链接对象的时候,设置自动commit的属性。
#构建到MySQL数据库的链接
conn = Connection(
host = 'localhost', #主机名(或IP地址)
port = 3306, #端口,默认3306
user = 'root', #账户名
password = 'root', #密码
autocommit = True #设置自动提交
)
如上代码进行设置,即可自动提交无需手动commit了。