掌握mysql,看完这篇文章就够了

本文详细介绍了数据库的两种主要类型——关系型和非关系型,重点剖析了MySQL数据库的数据类型、常用命令、表结构以及Python操作数据库的方法。涵盖了SQL查询、索引、事务和存储引擎等内容。
摘要由CSDN通过智能技术生成

一,数据库的类型

数据库就是对大量的数据进行存储和管理
数据库的类型分为关系型数据库和非关系型数据库

1.1关系型数据库

关系型数据库的典型代表为:

  • 大型数据库 oracle
  • 企业级数据库 mysql sqlserver
  • 轻量级数据库 sqlite
    关系型数据库的特点时可以通过表产生关系关联,每个表中都会存储结构化的数据,支持sql结构化查询
    关系型数据库的组织结构时数据库管理系统DBMS,数据库DB,表table,行row,列column

1.2 非关系型数据库

非关系型数据库的典型代表为

  • 文档数据库 mongdb
  • 内存数据库 redis
    非关系型数据库的典型特点是高度可扩展性:
  • 非关系型数据库设计用于处理大规模数据集和高并发读写操作。它们能够轻松地扩展以适应不断增长的数据量和负载。
  • 灵活的数据模型:非关系型数据库通常采用灵活的数据模型,如键值对、文档、列族和图形等。这种灵活性允许开发人员根据应用程序的需求自由组织和存储数据。
  • 高性能:非关系型数据库通常采用基于内存的存储引擎,以提供快速的读写性能。它们还可以使用分布式架构和并行计算来实现高吞吐量和低延迟。
  • 分布式存储:非关系型数据库通常采用分布式存储架构,数据可以在多个节点上进行分片和复制,提高数据的可用性和容错性。

二,MySQL数据库

2.1 MySQL的数据类型

数字类型

  • int 整形
  • bigint 整数
  • float 浮点型
  • double 双精度
  • decimal 高精度
    字符串类型
  • char 长度
  • varchar 可变长度
  • text 长文本
    bool 类型
  • 0 false
  • 1 true
    日期时间
  • data 日期
  • time 时间
  • datatime 日期时间
  • timestamp 时间戳
    枚举
  • enmu 可以默认选择

2.2 数据库的命令

按下win + R键 打开命令行窗口
值得注意在MySQL数据库中输入命令是不区分大小写的

  • 连接数据库 mysql -uroot -p
  • 输入密码 密码为数据库安装时所创建的密码
  • show databases 展示所有数据库
  • use 数据库名字 使用数据库
  • create database if not exists 数据库名字 chaset = utf8 创建一个数据库
  • drop database 数据库名字 删除数据库

2.3 数据库中的表

  • create table 表名 (列名 类型 约束信息 ,列名,类型,约束信息 )
    约束信息
  • primary key 主键 一个表必须有一个主键
  • not null 非空
  • auto_increment 自增长
  • default 默认
  • unique 唯一
  • foreign key 外键
    外键
  • constraint 外键名 命名
  • foreign key(列名)references 主表(列)
  • casade 父表删除子表跟着删除 on update cascase on delete cascade
  • restrict 约束
  • alter table 表名 add 列名 datetime default current_timestamp; 时间戳
    删除表信息
  • delete from 表名 删除一个表
  • delete from 表名 where 条件 根据条件删除
    条件
  • / >大于
  • < 小于
  • <> 不等于
  • != 不等于
  • / >= 大于等于
  • <= 小于等于
    多个条件
  • and
  • or
    成员运算符
  • in
  • not in
    模糊查询
  • 名字 使用一个下划线来代替名字中的一个字
  • 使用%代替所有
    判断是否为空
  • is null
  • not is null

2.4 表中增加列

全列插入

  • 一行 insert into 表名 values(列1,列2 )
  • 多行 insert into 表名 values(值1,值2),(值1,值2)
    局部插入
  • 一行 insert into 表名(列1 ,列2)values(值1,值2)
  • 多行 insert into 表名(列1)values (值1)
  • 指定插入 insert into 表名 set 列名 = 值
    更改表中信息
  • rename table 表名 to 表名 更名表名
  • alter table add 列名 类型 约束信息
  • alter table change 列名 新列名 类型 约束信息
  • alter drop 列名
  • update 表名 set 列名 = 值 ,列名= 值 where 条件 不加田间会导致全表更改
    查看表中信息
  • desc 表名
  • show tables 查看所有表信息
  • select *from 表名
  • select 列名,列名

三,MySQL 常用技术

3.1 select 调用

  • select user()当前用户
  • version 版本
  • database()当前表
  • current_time 时间
  • current_date 日期
  • current_timestamp 时间戳

3.2 聚合函数

  • sum 总和
  • max 最大值
  • min 最小值
  • avg 平均数
  • count 个数
    排序
    select *from order by 列名 asc 升序 desc 降序
    分页
    select *from limit n 显示前n个
    select *from limit m,m 显示page页,每页显示size个
    去重
    select distinct 列名 from 表中信息

3.3 关联查询

  • 嵌套查询 一个查询结果作为另一个的查询内容
  • 连接查询 select *from 表名,表名;
  • select *from 表名 inner join 表名 on 表名.列=表名.列
  • 左外连接 内连接结果+坐标内容 (右侧不NULL)
  • 右外连接 内连接结果+右表内容
  • 全连接 左外连接 union 右外连接

3.4 用户与授权

创建用户
create user ‘temp1’@‘%‘identified by ‘密码’;
分配权限
分配全部权限
grant all on *.*to ‘temp1’@’%’;
分配部分权限
grant select,insert on mydb.*to’temp2’@‘%’;
删除用户
drop user ‘temp2’@‘%’;
flush privileges 刷新

四,视图

视图就是一张虚拟表方便查询
修改表就等同于操作真实表隐藏真实表结构
创建视图
不要求写sql语句
使用navicat工具创建视图
使用视图
就等同于使用表

五,函数与存储过程

函数与存储过程都是存储在服务器上的可以提升数据的安全
客户端不需要关注具体的实现
可以自定义数据库级别
函数
经过计算返回一个结果
需要指定形参,指定返回值
例程就是函数
select 函数名(实参);
在黑窗口中,在相应的库下,可以使用select+函数名(实参);进行调用
存储过程
一套sql笑傲做,没有返回值
在黑窗口调用:call(过程名(实参));模式:in(相当于不可变类型);进行调用

六,索引

索引是一种优化技术
特点:可以提升查询效率
实现的本质是要预先存储一些额外数据,牺牲存储空间,提升查询效率
索引类型

  • 主键索引
  • 唯一索引
  • 普通索引
    何时定义索引
  • 索引不是创建的越多越好
  • 如果表的查询修改频率非常高,不适合创建索引
  • 如果表的查询频率非常高,几乎不修改,非常适合创建索引
    索引方法
  • BTREE 大数据量,适合范围比较
  • HASH 适合小数据量 适合精准的等值比较

七,事务

事务是 mysql数据库对应的一系列操作要么全部执行然后提交 要么全部执行失败然后回滚

  • 成功 commit
  • 失败 rollback
    MySQL终端默认自动提交
  • set autocommit = 0 取消自动提交
  • set autocommit = 1 设置自动提交
    事务相关
    开始事务
  • start transaction; 默认不会自动提交
    结束事务
  • commit 成功提交
  • rollback 失败回滚
    特性
    ACID原则
  • 原子性 不可再分
  • 一致性 执行前后数据要保持一直
  • 隔离性多个事务相互不影响
  • 永久性 一旦提交,则执行完毕,永不该表

八,存储引擎

数据的存储的实现方式 不同的存储引擎适合不同的场景
关键字 create table()engine = 引擎名字
常用的存储引擎
innoDB 特点

  • 支持事务
  • 支持行级锁定,阻塞
  • 支持外键
  • 综合能力强,使用大多数场景
    MyiSAM 特点
  • 查询,排序速度非常快
  • 不支持外键
    memory 特点
  • 读写内存速度最快
  • 但是不能持久化
  • 不能再本地保存
    CSV特点
  • 使用逗号隔开
  • 适合导入导出操作

九,使用python操作数据库

使用流程

  • 导入模块

代码如下(示例):

import pymysql
  • 构建连接

代码如下(示例):

con = pymysql.connect(host="localhost", port=3306, user="root", password="123456")
  • 构建游标

代码如下(示例):

cur = con.cursor()
  • 通过游标执行sql

代码如下(示例):

sql = "show databases;"
cur.execute(sql)
  • 处理sql结果
datas = cur.fetchall()
for data in datas:
    print(data[0])
  • 释放游标与连接

代码如下(示例):

cur.close()
con.close()

fetch

  • fetchone 获取一个
  • fetchmany 获取指定个数 默认获取一个
  • fatchall 获取所有
    scroll
  • 偏移游标位置
  • relative 相对 正值向后 负值向前
  • absolute 绝对 0-n
    execute与xecutemany
  • 用于执行sql语句
  • 第一个参数是sql字符串 使用%s占位符
  • 第二个参数是args 列表元组字典
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值