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

1.mysql

学习数据库就是学习数据库管理系统(一个数据管理系统可以管理多个数据库)

安装

安装版本:mysql -installter -community-5.7.41.0.msl

流程

1.custom自定义安装

2.选择安装MySQl Server 5.7.41 - x64

3.默认使用TCP、IP协议,端口3306

4.配置用户密码

默认root用户 直接配置密码

自定义用户

用户名

Host % 所有主机都可以访问

Role 角色 DBA

5.配置服务

服务名 MySQl57

开机启动

测试是否安装

win+r-输出cmd-输入 mysql -uroot -p

连接到数据库管理系统 mysql.exe

-h 192.168.11.15 远程访问需要权限

-uroot 用户名

-p3306 端口

-p 密码

2.数据库,表,数据相关SQL语句

2.1 数据库

展示所有数据库 show databases;

查看当前使用的数据库 select database();

创建数据库 create database 数据库名;

不存在创建 create database if not exists数据库名 charset = utf8;

指定编码

create database 数据库名 charset = utf8;

create database 数据库名 character set utf8;

使用数据库 use 数据库名;

删除数据库 drop database 数据库名;

2.2 表

展示当前数据库所有表 show tables;

创建表 create table 表名(列名 类型 约束信息, 列名 类型 约束信息, .... )

查看表 desc 表名;

删除表 drop table 表名;

修改表名 rename table 原始表名 to 新表名;

添加列 alter table 表名 add 列名 类型 约束;

删除列 alter table 表名 drop 列名;

修改列 alter table 表名 change 原始列名 新列名 类型 约束;

2.3 数据

查询数据 select * from 表名

select 列1,列2..... from 表名

select * from 表名 where 条件(id=5);

插入数据

全列插入 insert into 表名 values(列1, 列2, 列3,.....);

插入多行 insert into 表名 values(),(),()....;

缺省插入

insert into 表名 (列1,列2) values (值1,值2);

插入多行 insert into 表名 (列1,列2) values (),(),(),...;

只能写入一行 insert into 表名 set 列1=值1, 列2 = 值2...;

修改数据 update 表名 set 列1=值1,列2=值2 where 条件; 若没有where则修改整个表

删除数据 delete from 表名 where 条件; 若没有where则清空整个表

3.Mysql列的约束

用于限制数据在表中的输入规则

主键primary

外键 foreign key

自增长 auto_increment

唯一 unique

非空 not null

默认 default

4. Mysql数据类型

数字

int

bigint

float单精度

double双精度

decimal高精度

字符串

char长度

varchar可变长度

text长文本

布尔bool

1、0

日期时间

date

time

datetime

year

timestamp

枚举 enum,罗列所以可能

5.外键 创建,添加,删除

外键用于建立表与表之间的关联关系,一个表中的外键是另一个表中的主键

创建表时添加

create table 表名 (列...., constraint 外键名 foreign key(外键列名) reference 主表(主键)) on update cascade on delete cascade;

删除

alter table 表名 drop foreign key 外键名;

6.别名,查询指定列, 条件查询

select 列名 as 别名,列名 as 别名,...from 表名 where 条件

针对查询到的列起别名

多表查询,有共同的列表

7.系统函数与聚合函数

系统函数:

user()当前用户

version()当前数据库版本

database()

current_time

current_date

current_timestamp

聚合函数:

max(列名) :select max(列名) from 表名

min(列名)

sum(列名)

avg(列名)

count(任意列名)

8. 排序、分页,分组,去重

排序: order by 列名 排序方式

asc升序、desc降序

分页:

limit n:显示前n个

limit m, n:从索引m开始显示n个

分组:

group by 针对查询结果分组

select count(*), 列名 from 表名 where 条件

having 针对分组结果进行处理

having 列名条件

去重:

distinct(列名),去重某一列

9.嵌套查询,内连接,左外连接,右外连接,全连接

嵌套查询:一个查询的结果作为另一个查询的内容

内连接:inner join on 连接条件

左外连接:内连接结果+左表内容(右侧补null)

右外连接:内连接结果+右表内容(左侧补null)

全连接:左外连接 union 右外连接

10. 用户创建,授权,删除

查看当前用户:select user()

创建用户:create user 'temp1'@'%' identified by '123456';

分配权限:grant all on *.* to 'temp1'@'%';

grant select , insert on mydb. * to 'temp2'@'%';

删除用户:drop user 'temp2'@'%'

刷新权限:flush privileges;

11.视图

一张虚拟表,修改表等同于操作真实数据,方便查询

创建视图:不要求写SQL,使用navical工具创建

使用视图等同于使用表

12.函数与存储过程

都是存储在服务器上,可以提升数据安全,客户端不需要关注具体实现

函数:经过计算返回一个结果,需要指定一个形参,指定返回值

select 函数名(实参)

存储过程:一套SQL操作,没有返回值

call 过程名(实参)

13. 索引

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

索引类型:

主键索引、唯一索引、普通索引

何时定义索引:

索引不是创建越多越好,如果表的修改频率非常高,不适合创建索引

如果表的查询效率非常高,,几乎不修改,适合创建索引

索引方法:

BTREE:大数据量,适合范围比较

HASH:适合小数据量,适合精准的等值比较

14. 事务

MySQl存储引擎innoDB支持事务,MySQl数据库中对应的一系列操作要么全部执行成功然后提交,要么全部失败然后回滚

成功:commit 失败:rollback

mysql终端默认自动提交

取消自动提交:set autocommit = 0;

设置自动提交:set autocommit = 1;

事务相关

开启事务:start transaction;

默认不会自动提交

结束事务:commit;提交成功

rollback; 失败回滚

ACID原则:

原子性:不可再分,全部成功或全部失败

一致性:执行前后数据要保持一致

隔离性:多个事务相互不影响

持久性:一旦提交,则执行完毕,永久改变

15.存储引擎

create table 表名() engine=引擎名

create table myisam_table(id int not null primary key auto_increment,

name varchar(30)) engine=myisam;

数据的存储的实现,不同存储引擎不同场景

常用

InnoDB:

支持事务

支持外键

支持行级别锁定,阻塞

综合能力强,适用大多数场景

默认存储引擎

使用后缀为ibd文件存储内容

MyISAM: 查询,排序速度非常快,不支持外键

Memory: 读取内存速度最快,不能持久化,不能在本地保存

CSV: 使用逗号隔开,适合导入导出操作

16.数据库的备份与恢复

备份:将数据库信息转储为SQL文件、手动创建数据库

恢复:运行SQL文件在目录中找到myk.sql文件打开

17.Mysql与Python基础交互

1.导入模块

2.连接数据库

3.构建游标

4.通过游标执行sql语句

5.处理sql结果

6.释放连接与游标

18.Fetchone fetchall fetchmany scroll execute executemany 方法使用

fetchone:获取表中一条数据

fetchall:获取表中所有数据

fetchmany:获取表中自定义数据

scroll:在结果集中移动游标,允许你在结果集中向前或向后滚动,以便访问不同的行。

execute:用于执行单个SQL查询或操作,并且通常用于执行增删改查操作

executemany:用于执行批量的SQL操作,批量插入多行数据。

19.Mysql辅助类封装

方便地进行数据库操作,提高代码复用性和可维护性

相关推荐
林的快手25 分钟前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
HEU_firejef1 小时前
Redis——缓存预热+缓存雪崩+缓存击穿+缓存穿透
数据库·redis·缓存
KELLENSHAW2 小时前
MySQL45讲 第三十七讲 什么时候会使用内部临时表?——阅读总结
数据库·mysql
四七伵2 小时前
MySQL外键类型与应用场景总结:优缺点一目了然
mysql
SelectDB2 小时前
飞轮科技荣获中国电信星海大数据最佳合作伙伴奖!
大数据·数据库·数据分析
core5123 小时前
flink cdc各种数据库 jar下载地址
mysql·oracle·flink·jar·oceanbase·cdc
小刘鸭!3 小时前
Hbase的特点、特性
大数据·数据库·hbase
凡人的AI工具箱3 小时前
每天40分玩转Django:Django表单集
开发语言·数据库·后端·python·缓存·django
奔跑草-3 小时前
【数据库】SQL应该如何针对数据倾斜问题进行优化
数据库·后端·sql·ubuntu
Elastic 中国社区官方博客3 小时前
如何通过 Kafka 将数据导入 Elasticsearch
大数据·数据库·分布式·elasticsearch·搜索引擎·kafka·全文检索