第五周总结

python对象

面向对象:一切皆对象

对象:数据与功能的结合体
类:多个对象相同数据与功能的结合体
在程序中需要先定义类 之后才能产生对象

定义类:

class Student:
    # 相同的数据
    school = '清华大学'
    # 相同的功能
    def choose_course(self):
        print('选课')

产生对象:类名加括号(实例化)

obj1 = Student()  # 每次都会产生一个新的对象
obj2 = Student()
obj3 = Student()

访问数据和功能

 查看内部具有的属性和方法

print(Student.__dict__)
print(obj1.__dict__)

调用属性和方法(句点符)

print(obj1.school)print(obj1.choose_course())

独有的数据

 类的部分:

# 定义类
class Student:
    school = '男德学院'
    # 让对象具有独有的数据
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
    # 绑定给对象的方法(绑定方法):对象来调用自动将对象当作参数传入
    def choose_course(self):
        print('%s正在选课' % self.name)

对象的部分:

# 产生对象:类名加括号(实例化)
obj1 = Student('jason', 18, 'male')  # 每次都会产生一个新的对象
obj2 = Student('kevin', 28, 'male')
obj3 = Student('tony', 38, 'female')

对象在调用类里面定义的方法的时候
会自动将对象本身当成第一个位置参数传入
形参self指代的就是一个个对象

obj1.choose_course()
obj2.choose_course()
obj3.choose_course()
print(obj1.name)
obj1.name = 'jasonNB'
print(obj1.name)
obj1.xxx = 'ooo'
print(obj1.xxx)

核心补充

1.父类:多个类相同的数据和功能的结合体
2.继承:一个类可以继承多个父类并拥有多个父类里面所有的东西
3.对象查找数据和方法的顺序
(从近到远)

异常捕获

异常的分类
  1.语法错误
    不被允许的 出现了应该立刻修改
  2.逻辑错误
    可以允许发生的(bug)

语法结构

try:
    被检测的代码
except 错误类型 as 变量名:
    分支代码(变量名指代的就是错误的具体信息)

错误类型:万能异常Exception/BaseException

1.异常在程序中尽量少用
2.try检测的代码要尽可能的少

其他关键字:

else
    try被检测的代码没有异常的情况下会走
finally
    无论是否有异常最终都会执行

MySQL安装

数据库简介

数据库存储数据的演变过程

1.文件:就是各种格式不同的文件

2.单机游戏:按照设计好的格式放在固定的文件夹里

3.网络游戏:能够实现数据互通,和备份提高安全性

软件开发架构

1.c/s架构

  c:client 客户端
  s:server 服务端

2.b/s架构

  b:broswer 浏览器
  s:server 服务器(端)

b/s架构本质也是c/s架构

数据库概念

数据库其实就是一款c/s架构的软件
数据库操作数据可以简单的理解为就是基于网络远程的操作文件

客户端:
  基于网络通信(可以是互联网 也可以是局域网 甚至是单机)
服务端:
  基于网络通信(可以是互联网 也可以是局域网 甚至是单机)

数据库的分类(非常重要)

  1.关系型数据库
    具有固定的表结构 并且表与表之间可以建立外键关系
      1.MySQL数据库
        开源免费的 也是目前市面上使用最多的一款数据库
      2.MariaDB数据库
        跟MySQL是同一个人开发的 相当于是MySQL的备用也有很多其他功能
      3.Oracle数据库
        安全性极高但是需要收费并且维护费用也很高
        只有大型互联网企业才会使用 尤其是银行
      4.PostgreSQL数据库
        可扩展性非常强 可以基于现有的功能额外开发(改装)
      5.sql server数据库
        老牌的数据库软件
      6.sqlite数据库
        小型数据库 一般只用于本地小数据量测试
      。。。

  2.非关系型数据库
    没有固定的表结构 数据存储格式采用的是K:V键值对的形式
      1.redis数据库
        是目前市面上最火的一款非关系型数据库软件
      2.mongoDB数据库
        在爬虫和大数据库领域使用广泛
      3.memcache数据库
        基本都redis淘汰了

SQL语句与NoSQL语句

SQL语句就是用来操作关系型数据库的语言

NoSQL语句就是用来操作非关系型数据库的语言

(以后需要操作数据库 统一使用SQL语句)

重要概念

针对关系型数据库
  库 >>> 文件夹
  表 >>> 文件夹里面的文件
  数据 >>> 文件夹里面的文件里面的一行行记录
(数据库就是一款远程操作文件的软件)

MySQL数据库

MySQL5.5  基本不用
MySQL5.6 使用较广泛
MySQL5.7 逐步过渡
MySQL8.0 最新版

下载流程

官网
downloads
MySQL Community Downloads
MySQL Community Server
Archives
下拉框选择版本5.6即可下载对应的压缩包(一般都是64位)
下载完毕之后解压至容易找到的路径下(最好不要是C盘)

文件目录介绍

bin文件夹
  存储的是启动程序文件
    mysql.exe 客户端
    mysqld.exe 服务端
data文件夹
  存储的是数据相关的文件
my-default.ini
  数据库的默认配置文件
README
  类似于产品说明书

移除环境

1.以管理员身份打开cmd窗口
2.将MySQL服务关闭
  net stop mysql
3.移除系统mysql服务端
  mysqld --remove
4.删除MySQL相关环境变量
5.删除MySQL相关文件夹

基本使用

1.要想使用MySQL必须先启动服务端
2.客户端登录服务端
  mysql

(游客模式登录 功能及权限都很少)
3.退出游客账户采用管理员账户登录
  exit\quit
(进入公司之后每个人都会有自己的账户密码和权限)
管理员用户名:root 初始没有密码
完整命令
  mysql -h 127.0.0.1 -P 3306 -uroot -p
本地操作可以简化
  mysql -uroot -p

注意:一定要先移动到mysql所在文件夹(bin),然后输入mysql -uroot -p

系统服务制作

系统自动启动服务端

1.如何查看计算机内部所有的系统服务
  方式1:鼠标移动到底部任务栏右键选择任务管理器查看服务即可
  方式2:windows + r 并输入services.msc回车即可

2.将MySQL服务添加到系统服务中
  一定要以管理员身份打开cmd
  mysqld --install

3.添加完成后第一次需要手动启动
  方式1:找到服务鼠标右键点击启动即可
  方式2:net start mysql

(过程中出现报错不要慌 百度搜索基本都可以搞定)

基本SQL语句

补充

在MySQL中SQL语句的结束符是分号(;)

修改密码与破解密码

修改密码方式1:

  set password=password('密码');

  (该命令修改的是当前登录用户的密码)

  (一定要加分号!)

修改密码方式2:

  mysqladmin -u用户名 -p原密码 password新密码

  (在不登录的情况下修改)

 忘记密码如何解决?(仅限本地)

  1.先停止MySQL服务(管理员身份)

    net stop mysql

  2.以取消效验授权表的形式启动服务端

    mysqld --skip-grant-tables

  (也可以直接在my.ini文件的mysqld下面添加skip-grant-tables)

  3.管理员身份直接登陆

    mysql -uroot -p

  4.修改修改指定用户的密码(去存储用户数据表中修改密码数据)

    update mysql.user set password=password(想要的密码) where user="root" and host="localhost";

(据说新版本第一个password要换成authentication_string)

    (修改对应用户的密码)

  5.停止服务并正常启动

    ctrl+c或者再以net stop mysql命令停止

    net start mysql

  (或者直接打开服务窗口,右键MySQL重启)

输入flush privileges;  可以刷新数据库

 字符编码与配置文件

查看当前MySQL服务端基本信息

  \s

  (如果发现MySQL内部字符编码不统一,需要统一避免乱码)

配置文件

  MySQL默认配置文件my-defalut.ini

  (一些配置文件后缀名:ini,xml...)

  MySQL默认的配置文件需要去修改,如果想修改配置,可以拷贝一份再做修改

    拷贝后重命名为my.ini

    在该文件内拷贝几行固定配置

      [mysqld]

      character-set-server=utf8

      collation-server=utf8_general_ci

      [client]

      default-character-set=utf8

      [mysql]

      default-character-set=utf8

    修改完配置文件一定要重启服务端

 基本SQL语句

针对库(databases)

  1.查show

    show databases;  查看所有的数据库名称

    show create database db1;  查看指定的数据库(了解)

  2.增create

    create database db1;  创建数据库db1

  3.改alter

    alter database db1 charset='gbk';  修改数据库编码

  4.删drop

    drop database db1;  删除指定的数据库

1.如何查看当前在哪个库下?

  select database();

2.切换数据库

  use db1;

针对表(tables)

1.查show

  show tables;  查看某个库下所有的表名

  show create table t1;  查看指定的标信息(了解)

  desc t1  查看表结构(很常用),全称是describe t1;

2.增create

   create table t1(id int,name char);  创建表(必须有字段名和类型)

3.改alter

  alter table t1 modify name varchar(16);  修改字段类型

4.删drop

  drop table t1;  删除指定的表

针对记录

(必须现有库和表,最好使用自己创建的,默认自带的不要操作)

1.查select

  select * from t1;  查看t1表中所有的数据

  select id,name form t1;  查看指定字段对应的数据

2.增insert

  insert into t1 values(1,'jason');  插入数据

  insert into t1 values(2,'kevin'),(3,'tony');  插入多条数据

3.改update

  update t1 set name='jasonNB' where id=1;  将id是1的数据的name字段改为jasonNB

4.删delete

  delete from t1 where id=3;  删除符合条件的数据

  delete from t1;  删除表中所有的记录

MySQL基本数据类型

存储引擎

存储引擎

  MySQL内部针对数据的存储有很多种不同的方式

    简单的理解:我们把这些不同的存储方式叫做不同的存储引擎

如何查看各类存储引擎

  show engines;

主要存储引擎

  InnoDB

    MySQL5.5之后的版本默认的存储引擎

      支持事务、行锁、外键>>>数据更安全

        事务:保证多个数据的操作要么全部完成要么全部失败

        行锁:多一行行数据加锁,同一时间只能有一个人操作

        外键:建立表关系

  MySAM

    MySQL5.5之前的版本默认的存储引擎

      不支持事务,外键等功能>>>安全性较于InnoDB低

      但是存取数据的速度比InnoDB快

  memory

    数据直接存储在内存,速度快但是断电立刻丢失

  blackhole

    写入其中的数据都会丢失

存储引擎表文件

不同的存储引擎生成的文件数目也不同

  1.InnoDB有两个文件

    .frm  表结构

    .idb  表数据、索引(书的目录)

  2.MyISAM有三个文件

    .frm  表结构

    .MYD  表数据

    .MYI  表索引

  3.memory有一个文件

    .frm  表结构

  4.blackhole有一个文件

    .frm  表结构

创建表的完整语法

create table 表名(

  字段名 字段类型(宽度) 约束条件,

  字段名 字段类型(宽度) 约束类型,

  字段名 字段类型(宽度) 约束条件

 );

1.字段名和字段类型是必填的,宽度和约束条件是可选的

2.约束条件可选,并且一个字段可支持多个约束条件

3.最后结尾的字段语句不能有逗号

字段类型

 整型

  tinyint

  smallint

  int

  bigint

(不同整型类型能够存储的数字范围不同)

(默认都是自带正负号)

unsigned约束条件可以让数值无符号,从而增加存储范围

 浮点型

  float

  double

  decimal

(不同的浮点型存储小数的范围和精确度不一样)

float(255,30)  总共255位小数位占30位

double(255,30)  总共255位小数位占30位

decimal(65,30)  总共65位小数位占30位

精确度:float<double<decimal

精确度问题在很多场景下都会发生,有时候我们会采取不同的类型来存储

  eg:

    比如手机号全部是数字存储的时候应该使用整型,但是有时候我们使用字符类型

字符类型

char

varchar

(上述两个数据类型在存储数据上有本质的区别)

char(4)

  最多可以存储4个字符,超过了报错,没超过按照4个字符存储(默认空格填充)

varchar(4)

  最多可以存储4个字符,错过了报错,没有超过按照实际有几个字符存几个

5.6版本超出了范围不会报错,因为没有看起严格模式(5.7及之后版本默认开启)

思考题:char和varchar哪个更好

char

  好处:整存整取,速度快

  坏处:浪费存储空间

varchar

  好处:节省存储空间

  坏处:存取速度较于char慢

    (存取数据都需要计算,消耗时间:

      因为每个数据的字符数不是固定的

      存取数据时会自动在每个数据前面加上1bytes用来表示这个数据的字节数

      因此存取时每个数值都会花费1bytes的时间和存储空间)

结论:设定的总字节数大于数据字节数的时候varchar可以节约存储空间

    但如果设定的总字节数和数据字节数差不多的时候char更好

 严格模式

查看严格模式

  show variables like '%mode%';

修改严格模式

  set global sql_mode='strict_trans_tables';

  需要退出客户端重新进入即可

时间类型

date  年月日

time  时分秒

Datetime  年月日时分秒

Year  年

 

针对时间数据很多时候都是自动获取(了解)

insert into student values(1,'jaosn','2022','2022-05-09','11:11:00','2022-11-11 11:11:11');

枚举与集合类型

(插入数据的时候只能够插入提前规定好的内容)

enum  枚举类型

  多选一

set  集合类型

  多选多(包含多选一)

 

宽度说明

 int(4)  char(4)

针对数字类型,宽度并不是用来限制存储长度而是用来表示展示长度

(平时在定义数字的是无需手动添加宽度)

约束条件

 插入数据的两种方式

  1.insert into t1 values()  按照字段顺序依次传入(一个都不能少)

  2.insert into t1(id,name) values()  按照指定的字段传入(可以少)

unsigned  无符号

zerofill  用0填充

not null  不能为空,使用频率很高

default  默认值

unique  唯一

  1.单列唯一

(一列内不能输入重复的内容,不然会报错)

  2.多列唯一

(一行内多个内容的组合不能重复,不然会报错,但单独列是可以重复的)

 

posted @ 2021-09-05 20:53  雾雨黑白  阅读(37)  评论(0编辑  收藏  举报