#昨日内容回顾
- 作业讲解
- 常用模块
random 随机验证码
hashlib 用户信息加密、文件内容一致性比对
json 序列化与反序列化
- 软件开发架构
c\s架构 b\s架构
服务端所必备的三个条件
1.固定的IP和PORT
2. 24小时不间断提供服务
3.支持高并发(同一时间能为多个客户提供服务)
- 数据库简介
1.本质:一款c\s架构的软件
2.SQL语句
3.数据库的分类
关系型数据库
非关系型数据库
4.MySQL下载与安装
(1)不同版本,SQL语句都相同
(2)下载对应版本压缩包并解压
(3)配置环境变量 bin文件夹
mysql.exe 客户端
mysqld.exe 服务端
(4)制作系统服务
管理员身份打开cmd窗口输入
mysqld --install
启动服务
net start mysql
打开cmd窗口输入mysql游客模式登陆
mysql
关闭服务
net stop mysql
卸载服务
mysqld --remove
今日内容
MySQL重要概念
数据库 文件夹
数据表 文件夹里面的文件
数据(记录) 文件夹里面的文件里面的一行行数据
用户登录
1.游客模式
mysql即可,但是权限很少
2.用户名密码方式
mysql -u用户名 -p 密码
#1.以管理员身份初次登陆的时候 没有密码
1.输入管理员身份登陆
mysql -uroot -p
2.提示输入密码直接回车即可
3.基本SQL语句
SQL语句是以分号作为结束符(登陆到服务端之后)
(1)查看所有的数据库名称
show databases;
(2)如果输入的SQL语句有误
可以直接输分号回车,报错之后重新输入即可
或者使用\c直接取消之前的命令
(3)修改密码
mysqladmin -uroot -p原密码 password 新密码
该语句应该直接在终端窗口下运行,需要再次输入原密码校验
mysqladmin -uroot -p password 123
需要再次输入原密码校验
忘记密码破解登陆
1.卸载重新安装
注意保存好数据文件,之后卸载重新安装并在data文件夹下粘贴之前靠拷贝的数据即可
2.先以不校验用户身份的模式启动服务端(仅限于本机修改密码)
之后修改密码再以正常娇艳用户身份的方式启动即可
(1).停止正常的服务端
net stop mysql
(2).以跳过授权表的形式启动服务端
mysqld --skip--grant-tables
(3).修改特定用户的密码(重置密码)
update mysql.user set password=password(666);(所有用户密码均改为666)
update mysql.user set password=password(666) where user="root" and host="localhost"
(4).退出客户端并停止服务端然后以正常的方式启动服务端
net stop mysql
net start mysql
(5).输入密码登陆即可
配置文件
MySQL目录结构
bin文件夹 存放启动文件
data文件夹 存放所有数据
readme文件 类似于说明书
my-default.ini mysql的默认的配置文件
my-default.ini文件不要做修改,如果需要修改配置则拷贝一份并进行更名,如my.ini
1.\s查看基本信息
如果编码有好几种,则可能会出现乱码
需要统一编码(utf8)
2.在自己的配置文件中指定编码(固定代码)
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci[client]
3.修改配置文件之后需要重启服务端才能生效
#扩展补充
如果觉得每次登陆时输入用户名和密码过于繁琐
可以在配置文件中输入用户名密码(额外添加两行数据)
基本SQL语句
1.针对库的增删改查
(1).查看所有的数据库
show databases;
show create database 数据库名字;#针对性查看
(2).新增数据库
create database 数据库名字;
(3).修改数据库(编码)
alter database 数据库名字 charset="gbk";
(4).删数据库(千万不要删除自带的数据库)
drop database 数据库名字;
2.针对表的增删改查
#由于表是存放于文件中,需要在操作之前明确库
(1).查看当前在哪个库
select database();
(2).切换到指定的库下
use 数据库名字;
#尽量不要使用mysql自带的数据库
(3).先创建库
create db1;
(4).切换到db1下;
use db1
3.针对数据的增删改查
(1).查看当前库下所有的表名称
show tables;
show create table #查看具体的表结构信息
desc 表名;#查看具体的表字段信息
(2).创建表
create table 表名(id int,name, char);
(3).修改表
alter table 表名 modify name varchar(16);#字段类型
(4).删除表
drop table 表名;
3.针对数据的增删改查
先明确库和表
(1).查看表里面所有的数据
select * from 表名; #*号表示所有字段数据
select * from 库名.表名;
当表子段特别多展示时会出现混乱,可以采用分行处理
(2)分行处理
select * from mysql.user\G;
也可以自己制定字段
(3).添加表字段
insert into 表名 values(字段对应的数据1,字段对应的数据2)
insert into 表名 values(……),(……),()
(4.修改数据
#将用户名jason修改为jasonNB
update 表名 set name='jasonNB' where id=1;
(5).删除数据
delete
存储引擎
不同的存储引擎在存储数据的时候采取的策略和内部原理互不相同
# 查看所有的存储引擎
show engines;
#需要了解四个
MyISAM
MySQL5.5及之前版本所默认的存储引擎
优点是存取数据速度非常快;缺点是安全性不高并且功能很少
InnoDB
MySQL5.6及之后版本所默认的存储引擎
优点是功能很多并且数据安全性更高
缺点是较于MyISM存取速度稍慢
BlackHole
往里面写入的任何数据都会消失,类似于垃圾箱
memory
数据基于内存存取
优点是速度极快
缺点时数据断电立刻丢失
#在创建表的时候可以自己指定存储引擎
不同存储引擎产生的文件个数也不同
innodb >>> .frm 存储表结构
.MYD 存储表数据及索引(类似于书的目录)
myisam >>> .frm 存储表结构
.MYD 存储表数据
.MYI 单独存储索引()
基本数据类型
1.数字类型
(1).整数类型 #整数类型都是自带符号的
tinyint
smallint
int
bigint
#不同int类型能够存储数字范围不同,
验证整数类型是否自带符号
create table t5(id tinyint);
insert into t5 values(-129),(256);
#-128 127 超出范围只能存最大极限
(2)浮点类型
float(255,30) 总共255位,小数占30位
double(255,30) 总共255位,小数占30位
decimal(65,30) 总共65位,小数占30位
验证三种类型的区别
create table t6(id float(255,30));
create table t7(id double(255,30));
create table t8(id decimal(65,30));
insert into t6 values(1.111111111111111111111111111111);
insert into t7 values(1.111111111111111111111111111111);
insert into t8 values(1.111111111111111111111111111111);
#三者精确度不一样,float<double<decimal
#补充:有时候为了避免数字精确度问题,很多看似需要使用数字类型存储的数据其实内部都是存的字符串
2.字符类型
(1).char(4) 只能存储4个字符,超过了报错,不超过自动空格填充至四位存储
(2).varchar(4) 只能存储4个字符,超过了报错,不超过有几个存几个
验证括号内数字的限制作用
create table t9(name char(4));
create table t10(name varchar(4));
insert into t9 values('jason'),('tom'),('tony');
insert into t10 values('jason'),('tom'),('tony');
"""
严格模式
5.6及之前的版本数据就算不符合字段限制也不会报错,这个现象是不好的
5.7及之后的版本数据不符合会直接报错
#查看严格模式
show variables like '%mode%'
#修改严格模式
set global sql_mode="STRICT_TRANS_TABLES";
#退出客户端重新进去即可
"""
char_length() 统计字段存储的数据长度
#char内部自动填充空格,但是在读取数据的时候又会自动移除填充的空格
#如果需要查看内部原理,还需要再添一个严格模式
"""
数字类型括号里面的数字并不是用来限制存储长度,而是控制展示长度
#结论:在定义数字类型的字段时候不需要考虑括号里面的数字写多少,只需要写数字类型的名称即可 int
"""
今日内容
1.整理今日内容
动手敲代码
2.修改管理员密码并且将密码写到配置文件并启动
密码
字符编码
3.在自己的电脑上验证四个存储引擎的特点
4.创建一张用户表
需要涵盖上课讲的所有字段类型
并尝试着录入几条数据