阶段学习总结之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的组合唯一