阶段学习总结之04

阶段学习总结之04

概要

day17 面向对象与异常处理

  • 面向对象

  • 异常处理

day18 数据库基础理论

  • 数据库简介

  • 软件开发架构

  • 数据库的分类

  • SQL语句的由来

  • MySQL数据库简介

  • MySQL数据库的下载与安装

day19 数据库基本使用(上)

  • 修改密码与破解密码

  • 字符编码与配置文件

  • 基本SQL语句

day20 数据库基本使用(下)

  • 存储引擎

  • 创建表的完整语法

  • MySQL基本数据类型

  • 字段的约束条件


详情

day17 面向对象与异常处理

  • 面向对象

1、对象的概念

Python中所有程序都能用“数据”和“功能”结合的形式表达。对象是数据与功能的结合体。类是多个对象具有相似数据与功能的结合体

class 类名:
    数据1
    def 功能1(self):
        pass
# 注意
1.在程序中要先定义类,才能产生该类的对象
2.类名的首字母最好用大写
3.缩进的代码块表示类的对象相同的数据与功能
4.类中的函数称为功能/方法
5.通过类名加括号的形式调用类产生该类的对象,即类的实例化
6.每次类的实例化都会产生一个新的对象
2、访问数据和功能

类的属性包含在类中定义的变量和函数,即类的数据和功能。

类中定义的变量或函数可以共享给该类产生的对象使用。
	对象访问时,会先从自身名称空间查找元素,未找到则去类的名称空间查找。
# 访问方法
1.类名.__dict__['属性名']
2.类名/对象名.数据名
  类名/对象名.功能名()
3、独有数据
1.类名.__dict__     # 返回类内部所有'共有'的元素
2.对象名.__dict__   # 返回对象内部所有'独有'的元素
3.对象调用类中定义的方法时会将对象本身(self)作为第一个位置参数传入
4、继承
父类:多个类相同的数据和功能的结合体
继承:一个类可以继承多个父类从而获得多个父类的属性
    class 类名(一个或多个父类名,逗号隔开):
    	独有属性
对象查找属性:对象自身 ---> 产生该对象的类 ---> 父类   
# 若找不到则按照继承顺序依次往父类查找
  • 异常处理

异常分为语法错误和逻辑错误

1.语法错误
	Python中红色下划线表示,应立即修改。
2.逻辑错误
	运行时才会出现,又称Bug。
# 异常捕获
try:
    被监测的代码段
except 错误类型 as 变量名:
    出现对应类型异常时执行的分支代码
'''
	Exception/BaseException可指任何一种错误类型
    try、exception之间被检测的代码段尽可能少
    异常在程序中只可少量使用(尽量减少可预知错误的出现)
'''
3.else/finally
异常捕获也可以与其他关键字连用
else
	被检测的代码段未出现任何异常时会执行,与for/while使用场景类似
finally
        被检测的代码段执行完毕后,无论出现异常与否都会执行finally后代码

day18 数据库基础理论

  • 数据库简介

# 演变历程
1.文件存储
	五花八门的文本格式
2.类似"单机游戏"
	数据保存在本地文件夹内,格式由设计者做出规定
3.类似"网络游戏"
	数据保存在统一管理的服务器内(用户无需知道具体位置)
  • 软件开发架构

    两种软件开发架构的本质是相同的。

1.c/s架构
	c表示客户端,s表示服务端
    该架构类似于某顾客(客户端)要去特定的店(服务端)里消费,两者存在明显的对应关系
2.b/s架构
	b表示浏览器,s表示服务器/端
    该架构类似于某个不清楚要去哪消费的顾客(浏览器),可能去任意一家店(服务器/端)消费
  • 数据库的分类

1.关系型数据库:具有固定的表结构,表与表直接通过外键建立联系。
例如MySQL、MariaDB、Oracle、PostgreSQL、SQL Server、sqlite等
2.非关系型数据库:不具有固定的表结构,采用键值对形式存储数据。
例如redis、mongoDB、memcache等
  • SQL语句的由来

SQL语句是为了使其它程序能与数据库交互而发明的语言。

SQL语句是用来操作关系型数据库的语言。
NoSQL语句是用来操作非关系型数据库的语言。
  • MySQL数据库的简介

MySQL数据库有多种版本,目前应用最广泛的是MySQL5.6,并逐步推进MySQL5.7的使用,5.5以前的版本几乎不使用,最新版是8.0。
  • MySQL数据库的下载与安装

1.移除
	以管理员身份打开cmd窗口
	关闭MySQL服务       net stop mysql
	移除系统MySQL服务端 mysqld --remove
	删除MySQL的环境变量
	删除MySQL文件夹
2.下载
	打开官网点击 DOWNLOADS
	下拉页面点击 MySQL Community (GPL) Downloads
	点击 MySQL Community Server
	点击 Archives 选择往期版本
	版本号 Product Version下拉框 选择5.6.44
	点击 Download
3.添加至服务
'''
  查看系统服务
	方法1:鼠标右键点击底部任务栏,选择任务管理器
	方式2(推荐):windows+R 以管理员身份运行 services.msc
'''
	windows+R 以管理员身份打开cmd窗口
	输入mysqld --install
	第一次需要手动启动
		方法1: 找到系统服务列表中MySQL点击启动
		方法2: net start mysql
	添加完成后MySQL服务端随着电脑的启动/关闭而启动/关闭

day19 数据库基本使用(上)

  • 修改密码与破解密码

1.修改当前用户的密码
set password= password('密码')
2.不登录修改指定用户密码
mysqladmin -u用户名 -p原密码 password 新密码

# 如果忘记密码(本地),重置管理员密码的方法
1.停止当前MySQL服务
2.取消校验授权表启动MySQL服务
	mysqld --skip-grant-tables
3.以管理员身份登录MySQL
4.修改指定用户密码
update mysql.user set password=password('密码') where user="root" and host="localhost"
5.停止当前MySQL服务并正常启动
  • 字符编码与配置文件

查看字符编码
\s 可以查看当前MySQL服务端的信息
配置文件
1.初始配置文件最好不要修改 my-default.ini
2.想要修改配置需重新创建额外的配置文件并命名为my.ini
3.配置字符编码,一般为UTF-8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
4.配置更改完毕需重启MySQL服务
  • 基本SQL语句

1、对库操作
# 查找
	1.查看所有数据库名称	
	show databases;
	2.查看指定的数据库
	show create database test01;
# 增加
	创建数据库test01
	create database test01;
# 修改
	1.修改指定数据库编码
	alter database test01 charset='gbk';
# 删除
	drop database test01;
2、对表操作
'''对表操作需先知道当前库'''
	1.查看当前表在哪个库下
	select database();
	2.切换当前数据库
	use 库名;
# 查找
	1.查看某个库下所有的表名
	show tables;
	2.查看指定的表的信息
	show create table 表名;
	3.查看表结构
	describe 表名;简写: desc 表名;
# 增加
	create table 表名(
        字段1 类型1,
        字段2 类型2
    );
# 修改
	alter table student01 modify id varchar(16) 
# 删除
	drop table 表名;
3、对记录操作
# 增加
	1.插入记录(给表中每个字段都赋值)
	insert into 表名 values(记录1的字段1,记录1的字段2);
	2.一次插入多条记录
	insert into 表名 values(记录1的字段1,记录1的字段2),(记录2的字段1,记录2的字段2);
# 查找
	1.查看表中所有数据
	select * from 表名;
	2.查看指定字段对应的数据
	select 字段名 from 表名;
# 修改
	1.修改符合条件的记录
	update 表名 set 字段名=值 where 条件字段=条件值;
# 删除
	1.删除符合条件的记录
	delete from 表名 where 条件字段=条件值;
	2.删除表中所有数据(慎用)
	delete from 表名;

day20 数据库基本使用(下)

  • 存储引擎

存储引擎是数据库内部存储数据的方式,有很多种。

查看存储引擎:show engines;
'''主要的存储引擎'''
1.InnoDB # MySQL5.5以后的版本默认的存储引擎
	支出事务、外键、行锁等功能
	故数据安全性高
2.MyISAM # MySQL5.5以前的版本默认的存储引擎
	不支持事务、外键等功能
	故安全性较低,不过存取速度快于InnoDB
3.MEMORY
	数据直接存储在内存中
	故存取速度很快,不过数据在断电立即丢失
4.BLACKHOLE
	写入其中的数据都会丢失
'''比较不同存储引擎的特点'''
1.用不同的存储引擎创建四张可供测试的表
create table test_engine_1(id int)engine=InnoDB;
create table test_engine_2(id int)engine=MyISAM;
create table test_engine_3(id int)engine=MEMORY;
create table test_engine_4(id int)engine=BLACKHOLE;
2.生成的文件数量也不相同
	(1) InnoDB >>> 2
		.frm              # 表结构
		.idb              # 表数据、表索引用同一个文件存储
	(2) MyISAM >>> 3
		.frm              # 表结构
		.MYD              # 表数据   单独一个文件
		.MYI              # 表索引   单独一个文件
	(3) MEMORY >>> 1
		.frm              # 数据存放于内存,故只有表结构
	(4) BLACKHOLE >>>1
		.frm              # 不存储数据,故只有表结构
3.查看存储数据特性,这里先各自插入一条记录
insert into test_engine_1 values(1);
insert into test_engine_2 values(2);
insert into test_engine_3 values(3);
insert into test_engine_4 values(4);

select * from test_engine_3;  # 关闭服务后查询结果空,数据丢失
select * from test_engine_4;  # 查询结果空,数据丢失
  • 创建表的完整语法

# 格式
create table 表名(
	字段名1 字段类型(宽度) 约束条件,
	字段名2 字段类型(宽度) 约束条件,
	字段名3 字段类型(宽度) 约束条件
);
  • MySQL基本数据类型

1、整型
整数类型         范围(若有符号则减少一个二进制位即可)
tinyint			0 ~ 255
smallint         -2^15 ~ 2^15-1
int              -2^31 ~ 2^31-1
bigint           -2^63 ~ 2^63-1
# 整数类型默认自带符号,可用unsigned约束条件取消
create table test_int(id tinyint);
insert into test_int values(-100),(252);
2、浮点型
不同类型的浮点型存储小数的大小范围及精度都不同
float             # 总共255位   小数占30位
double            # 总共255位   小数占30位
decimal           # 总共65位    小数占30位
精度比较:float < double < decimal
3、字符型

字符型分为char和varchar。

char(n)
最多可以存储n个字符,超出就报错,未超出也按照四个字符存储
varchar(n)
最多可以存储n个字符,超出就报错,未超出按实际字符数存储

由于5.6有优化机制,超出范围不会报错,故这里需要开启严格模式,5.7及之后版本默认开启严格模式。

查看严格模式:show variables like '%mode%';
设置严格模式:
set global sql_mode='strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH';
# 之后退出客户端重新进入即可
char_length():获取括号内字符串长度
4、时间类型
常用时间类型
date	# 年月日
time	# 时分秒
datetime	# 年月日时分秒
Year	# 年
5、枚举与集合类型
enum 枚举:多选一
set 集合:多选多
枚举类型只能插入提前定义好的一个值,否则报错
集合类型只能插入提前定义好的一个或多个值,否则报错
  • 字段的约束条件

'''
	宽度不限制数字类型的存储长度,只用来表示其展示长度。
	故定义数字时无需手动添加宽度。
'''
1.按照字段顺序依次传入(类似于位置参数,一个都不能少)
insert into t1 values()
2.按照指定的字段传入(类似于关键字参数,可以少)
insert into t1(id,name) values()
# 约束条件
无符号  : unsigned
0填充   : zerofill
不能为空: not null # 使用频率高
默认值  : default
唯一    : unique
多列唯一: unique(字段1,字段2) # 限制字段1和2的组合唯一
上一篇:git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法


下一篇:测试相关、sdk卡读取