目录
- 线程理论
- GIL全局解释器锁
- 进程池与线程池
- 协程
- 存取数据的演变史
- 数据库软件应用史
- 数据库的本质
- 数据库的分类
- MySQL简介
- 密码相关操作
- SQL与NoSQL
- 数据库重要概念
- 基本SQL语句
- 字符编码与配置文件
- 数据库存储引擎
- 创建表的完整语法
- 字段类型之整型
- 字段类型之浮点型
- 字段类型之字符类型
- 数字的含义
- 字段类型之枚举与集合
- 字段类型之日期类型
- mysql表字段约束条件
- SQL语句查询关键字
- 查询关键字之where筛选
- 查询关键字之group by 分组
- 查询关键字之having过滤
- 查询关键字之distinct去重
- 查询关键字之order by 排序
- 查询关键字limit分页
- 查询关键字之regexp正则表达式
线程理论
进程:进程其实是资源单位 表示一块内存空间
线程:线程才是执行单位 表示真正的代码指令
ps:创建进程的消耗要远大于线程
GIL全局解释器锁
在Cpython解释器中存在全局解释器锁简称GIL
GIL本质也是一把互斥锁 用来阻止同一个进程内多个线程同时执行
GIL的存在是因为CPython解释器中针对多线程无法保证数据的安全
进程池与线程池
池:降低程序的运行效率 但是保证了计算机的硬件安全
进程池:提前创建好固定数量的进程供后续程序的调用 超出则等待
线程池:提前创建好固定数量的线程池供后续程序的调用 超出则等待
协程
进程:资源单位
线程:执行单位
协程:单线程下实现并发(效率极高)
在代码层面欺骗CPU 让CPU觉得我们的代码里面没有IO操作,实际上IO操作被我们自己写的代码检测 一旦有立刻让代码执行别的 核心:自己写代码完成切换+保存状态
存取数据的演变史
1.文本文件:文件路径不固定,数据格式不统一
2.软件开发目录规范:数据格式还是没有得到统一
3.数据库服务(重点):统一路径,统一操作方式,降低学习成本,提高开发效率
数据库软件应用史
1.单机游戏:数据存储于各个计算机的本地,无法共享
2.网络游戏:数据存储于网络中,可以共享(数据库服务)
数据库的本质
1.站在底层原理的角度:数据库指的是操作数据的进程(一堆代码)
2.站在实际应用的角度:数据库指定是可视化操作界面(一些软件)
数据库软件本质也是CS架构的程序
数据库的分类
1.关系型数据库
特征1:拥有固定的表结构(字段名、字段类型)
特征2:数据之间可以建立数据库层面关系
常见的有:MySQL/Oracle/MariaDB/PostgreSQL
2.非关系型数据库
特征1:没有固定的表结构 数据存储采用K:V键值对的形式
特征2:数据之间无法建立数据库层面的关系
常见的有:redis、mongoDB
MySQL简介
1.版本问题
8.0 最新版
5.7 使用频率较高
5.6 学习推荐使用
2.主要目录介绍
bin目录 存放启动文件
data目录 存放核心数据
密码相关操作
1.修改密码
方式1:mysqladmin
方式2:直接修改存储用户数据的表
方式3:冷门操作 set password=password('新密码') #5.7及以上不支持
2.忘记密码
方式1:卸载重装
方式2:把data目录删除 拷贝同桌的目录
方式3:关闭正常服务端,跳过授权表的方式重启服务端
SQL与NoSQL
数据库服务端是可以服务多种类型的客户端
客户端可以是自己开发的 也可以是python代码编写 也可以是java代码编写
SQL:操作关系型数据库的语言
NoSQL:操作非关系型数据库的语言
ps:要想跟数据库交互就必须使用数据库指定的语言,sql有时候指定关系型数据库,NoSQL有时候也指代非关系型数据库
数据库重要概念
库 --》文件夹
表 --》文件夹里面的文件
记录 --》文件夹里面的文件中的一行行数据
基本SQL语句
1.sql语句必须以分号结尾
2.sql语句编写错误之后不用担心,可以直接执行
'''基于库操作'''
create database 库名;
show databases;
alter database 库名 charset='utf8';
drop database 库名;
'''基于表操作'''
操作表之前需要先确定库
use 库名;
create table 表名(字段名 字段类型,字段名 字段类型);
show tables;
show create table 表名;
desc 表名;
alter table 表名 rename 新表名;
drop table 表名;
'''基于记录操作'''
insert into 表名 values(数据值1,数据值2);
select * from 表名;
update 表名 set 字段名=新数据 where 筛选条件;
delete from 表名;
delete from 表名 where id=2;
字符编码与配置文件
\s 查看MySQL相关信息(当前用户、版本、编码、端口号)
mysql5.6及之前的版本编码需要人为统一 之后的版本已经全部默认统一
如果想要永久修改编码配置,需要操作配置文件
utf8mb4能够存储表情,功能强大
utf8与utf-8是有区别的 MySQL中只有utf8
数据库存储引擎
存储引擎:数据库针对数据采取的的多种存取方式
查看常见存储引擎:show engines;
MyISAM:mysql5.5及以前默认的存储引擎
特点:存取数据的速度快,但是功能较少,安全性较低
InnoDB:mysql5.5后默认的存储引擎
特点:支持事物、行锁、外键等操作 存取速度没有MyISAM快 但是安全性更高
Memory:基于内存存取数据 仅用于临时表数据存取
BlackHole:任何写入进去的数据都会立刻丢失
创建表的完整语法
create table 表名 (
字段名 字段类型(数字) 约束条件,
字段名 字段类型(数字) 约束条件,
字段名 字段类型(数字) 约束条件
);
1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件也可以写多个 空格隔开即可
4.最后一行结尾不能加逗号
字段类型之整型
tinyint 1bytes 正负号(1bit)
smallint 2bytes 正负号(1bit)
int 4bytes 正负号(1bit)
bigint 8bytes 正负号(1bit)
字段类型之浮点型
float(20,10)总共存储20位数 小数点后面占10位
double(20,10)总共存储20位数 小数点后面占10位
decimal(20,10)总共存储20位数 小数点后面占10位
字段类型之字符类型
char 定长 :最多存储指定个数字符,超出报错,不够空格填充
varchar 边长:最多存储指定个数字符,超出报错,不够有几位存几位
数字的含义
数字在很多地方都是用来标识限制存储数据的长度,但是在整型中数字不是用来
限制存储长度,而是用来控制显示的长度
字段类型之枚举与集合
枚举 多选一 enum
集合 多选多、多选一 set
字段类型之日期类型
datetime 年月日时分秒
date 年月日
time 时分秒
year 年
mysql表字段约束条件
无符号、零填充
unsigned、zerofill
非空 not null
默认值 default
主键 primary key
自增 auto_increment(配合主键一起使用)
外键:用于标识数据与数据直接关系的字段
表的关系有四种:
一对多
多对多
一对一
没有关系
SQL语句查询关键字
select 指定查询字段信息 from 指定需要查询的表信息;
查询关键字之where筛选
select * from emp where id >=3 and id <=6;
select * from emp where name like '%o%';
查询关键字之group by 分组
分组:按照指定的条件将单个单个的数据组成一个个整体
分组的目的是为了更好的统计相关数据
聚合函数:专门用于分组之后的数据统计
max、min、sum、avg、count(最大值、最小值、求和、平均值、计数)
select post,max(salary) from emp group by post;
查询关键字之having过滤
having与where本质是一样的 都是用来对数据做筛选
where用在分组之前(首次筛选),having用在分组之后(二次筛选)
select post,avg(salary) from emp where avg>30 group by post having avg(salary) > 10000;
查询关键字之distinct去重
去重有一个必须的条件也是很容易被忽略的条件(数据必须一模一样才可以去重)
select distinct id,age from emp;
查询关键字之order by 排序
1.单个字段排序
select * from emp order by age;
2.多个字段排序
select * from emp order by age,salary desc;
查询关键字limit分页
select * from emp limit 5; 直接限制展示的条数
select * from emp order by salary desc limit 1;
查询关键字之regexp正则表达式
SQL语句的模糊匹配如果用不习惯 也可以自己写正则批量查询
select * from emp where name regexp 'j.*?(n|y)$';
标签:总结,存储,数据库,查询,关键字,表名,第九,select
From: https://www.cnblogs.com/winter-yu1989/p/16929903.html