Python-MySQL详解

MySQL数据库

1. 关系型数据库的特征

~ 理论基础 - 关系代数(集合论、一阶逻辑、关系运算)
~ 具体表象 - 用二维表组织数据
    - 表 - 实体- 关系
    - 行 - 记录- 元组
    - 列 - 字段- 属性
    - 主键
    - 外键
    - 行数 - 集合的势)
    - 列数 - 集合的度
    - 取值范围 - 域
~ 编程语言 - 结构化查询语言 - SQL
    - 数据定义语言 - DDL - create / drop / alter / rename / truncate
    - 数据操作语言 - DML - insert / delete / update / select
    - 数据控制语言 - DCL - grant / revoke
    - 事务控制语言 - TCL - start transaction / commit / rollback

2. MySQL命令

~ show - 显示相关信息
    - 显示所有数据库:show databases;
    - 显示所有二维表:show tables;
    - 显示所有字符集:show charset;
    - 显示所有排序规则:show collation;
    - 显示存储引擎:show engines;
~ help - 获取帮助信息
~ system - 调用系统命令
    - 清屏:system clear; / system cls;
    - 查看文件:system ls; / system dir;
~ source - 执行SQL脚本
~ edit - 打开文本编辑器
~ quit - 退出客户端

3. 使用DDL建库建表

    ~ 创建数据库
    create database school default charset utf8mb4 collate utf8mb4_0900_as_cs;

    ~ 删除数据库
    drop database if exists school;

    ~ 切换上下文
    use school;

    ~ 创建二维表
    create table students
    (
        stu_id int not null,
        stu_name varchar(20) not null,
        stu_sex boolean not null default 1,
        stu_birth date not null,
        primary key (stu_id)
    ) engine innodb;

    ~ 显示表结构
    desc students;

    ~ 删除二维表
    drop table if exists students;
    
    ~ 修改二维表
        - 添加列
        alter table students add column stu_tel char(11) not null;

        - 删除列
        alter table students drop column stu_tel;

        - 修改列
        alter table students modify column stu_sex char(1) not null default '男';
        alter table students change column stu_sex stu_gender char(1) not null default '男';

        - 添加约束
        alter table students add constraint ck_students_gender check (stu_gender in ('男', '女'));

        - 删除约束
        alter table students drop constraint ck_students_gender;

        - 修改表名
        alter table students rename to tb_student;

4. 表关系的建立

~ 一对一 - 多对一的特例,可以将任何一方视为多添加外键列,再给外键列加唯一约束
~ 一对多 - 在多的一方添加外键列
~ 多对多 - 创建中间表,将多对多关系变成两个多对一关系

5. 写数据操作

~ 插入数据 - insert
    insert into 表名 (字段1, 字段2, ...) values (值1, 值2, ...);
    insert into 表名 (字段1, 字段2, ...) values (值1, 值2, ...), (值1, 值2, ...);
~ 删除数据 - delete
    delete from 表名 where 条件;
~ 更新数据 - update
    update 表名 set 字段1 = 值1, 字段2 = 值2, ... where 条件;

6. 读数据操作 - 业务提数

~ 投影 - select子句
    - 别名 - as
    - 去重 - distinct
~ 数据来源 - from子句
    - 表连接 - 连接事实表和维度表
        ~ cross   join - 交叉连接 - 笛卡尔积
        ~ inner   join - 内连接 - on
        ~ natural join - 自然连接
        ~ left    join - 左外连接
        ~ right   join - 右外连接
        ~ full    join - 全外连接
~ 分组前筛选 - where子句
    - 比较运算 - =、<>、<、>、<=、>=
    - 逻辑运算 - and、or、not、all、any、in
    - 模糊查询 - like、regexp
    - 空值运算 - is null / is not null
    - 算术运算 - +、-、*、/、%
    - 函数运算 - trim / char_length / substr / timestampdiff
~ 分组 - group by子句 - 给每个组做统计
    - 聚合函数
        ~ sum - 求和
        ~ avg - 算术平均
        ~ max - 最大值
        ~ min - 最小值
        ~ count / count(distinct) - 计数
        ~ variance / var_pop / var_samp - 方差
        ~ stddev / stddev_pop / stddev_samp - 标准差
~ 分组后筛选 - having子句 - 可以写聚合函数
~ 排序 - order by子句
    - 升序 - asc(默认)
    - 降序 - desc
~ 分页 - limit子句 - MySQL方言

7. 窗口函数 - 数据分析函数 - 开窗打标

~ 函数() over ()
~ 函数() over (order by ...)
~ 函数() over (partition by ... order by ...)
~ 函数() over (order by ... rows between ... and ...)
~ 函数() over (order by ... range between ... and ...)
~ 有哪些函数可以在窗口函数语法中使用
    - 聚合函数 - sum() / avg() / count() / max() / min() / stddev() / variance()
    - 排名函数 - rank() / dense_rank() / row_number() / percent_rank()
    - 取数函数 - lag() / lead() / first_value() / last_value() / nth_value()

8. Python程序接入MySQL数据库

~ 创建连接 - pymysql.connect(host, port, user, password, database, charset) - Connection
~ 获取游标 - conn.cursor() - Cursor
~ 执行SQL - cursor.execute() / cursor.executemany() - int
~ 两种情况:
    - 写数据:提交或回滚 - conn.commit() / conn.rollback()
    - 读数据:通过游标抓取 - cursor.fetchone() / cursor.fetchall() / cursor.fetchmany(size)
~ 关闭连接 - conn.close()

9. 视图 - view - 查询的快照 - 命名查询

~ 作用:
    - 实现对数据的预处理 - 数据分析师
    - 隐藏表结构
    - 将访问权限控制到列
~ 限制:
    - 视图可以嵌套 - 基于视图创建视图
    - 视图中的排序会被查询的排序覆盖
    - 视图无法使用索引,不会激发触发器
    ~ 创建或替换视图
    create or replace view view_name as select ...;

    ~ 删除视图
    drop view if exists view_name;

10. 函数

~ MySQL内置函数
    - 聚合函数
        ~ 描述性统计信息 - sum() / avg() / count() / max() / min() / var_pop() / var_samp() / stddev_pop() / stddev_samp()
        ~ 其他 - group_concat() / json_arrayagg() / json_objectagg()
    - 数值函数
        ~ 绝对值和符号函数 - abs() / sign()
        ~ 取整和四舍五入 - ceiling() / floor() / round() / truncate()
        ~ 三角和反三角函数 - sin() / cos() / tan() / cot() / asin() / acos() / atan()
        ~ 指数和对数 - pow() / exp() / log() / log10() / log2()
        ~ 随机数 - rand()
        ~ 弧度和角度 - degrees() / radians()
        ~ 平方根 - sqrt()
    - 字符串函数
        ~ 长度 - char_length() / length()
        ~ 拼接 - concat()
        ~ 大小写 - lower() / upper()
        ~ 取子串 - left() / right() / substring()
        ~ 替换 - replace()
        ~ 修剪 - trim() / ltrim() / rtrim()
        ~ 定位 - instr() / locate()
        ~ 填充 - lpad() / rpad()
        ~ BASE64编解码 - from_base64() / to_base64()
        ~ 反转 - reverse()
    - 日期时间函数
        ~ 获取日期和时间 - current_timestamp() / current_date() / current_time()
        ~ 获取部分信息 - date() / time() / year() / quarter() / month() / day() / weekday() / hour() / minute() / second()
        ~ 计算时间差 - datediff() / timestampdiff()
        ~ 添加间隔 - date_add() / date_sub()
        ~ 格式化日期时间 - date_format()
    - 流程控制函数
        ~ if() / ifnull() / nullif()
    - 窗口函数
        ~ 排序 - rank() / dense_rank() / row_number() / percent_rank()
        ~ 取数 - lag() / lead() / first_value() / last_value() / nth_value()
    - 其他函数
        ~ 类型转换 - cast() / convert()
        ~ 信息获取 - current_role() / current_user() / database() / last_insert_id() / version()
        ~ 全局唯一标识符 - uuid() / uuid_to_bin() / bin_to_uuid()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值