首页 > 其他分享 >第九周总结

第九周总结

时间:2022-11-27 16:11:16浏览次数:45  
标签:总结 存储 数据库 查询 关键字 表名 第九 select

目录

线程理论

进程:进程其实是资源单位 表示一块内存空间
线程:线程才是执行单位 表示真正的代码指令
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

相关文章