day02 MySQL基本操作

昨日内容回顾

数据库演变史

1、纯文件阶段
2、目录规范
3、单机游戏
4、联网游戏
# 数据库就是一款帮助我们管理数据的程序

软件开发架构及数据库本质

cs架构与bs架构
其实数据本质就是一款cs架构的软件

数据库的分类

1、关系型数据库  # 需要有表结构的
MySQL、mariadb、oracle、db2、sql server 、sqlite、postgresql sql server:微软公司的产品,主要应用于大中型企业,如联想、方正等。
Oracle:主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用较高。甲骨文公司的。
MySQL:主要用于大型门户,例如搜狗、新浪等,它的主要优势是开放源代码,并且免费。 2、非关系型数据库 # 不需要表结构
redis、mongodb、memcache

数据库下载与安装

数据库版本问题:5.5之后的版本都可以
官网下载:https://www.mysql.com/

系统服务制作

1、加入环境变量
2、以管理员身份添加系统服务,并执行:
mysqld --install 3、第一次需要自己启动
net start mysql 4、其余操作:
停止服务:net stop mysql
移除服务:mysql --remove

基本操作命令

1、查找数据库
mysql> show databases; 2、连接数据库
用root用户登入:mysql -uroot -p密码 -hIP地址 -P端口 # 默认端口3306 3、取消命令
\c 4、退出命令
quit;
exit;

密码相关操作

修改密码两种方式:
1、在cmd命令窗口修改密码
C:\Users\Lenovo> mysqladmin -uroot -p password 111 2、在客户端修改
set password=PASSWORD('新密码')

配置文件

# 1.查看编码信息
\s
# 2.配置文件
mysql默认的配置文件 my-default.ini
拷贝my-default.ini文件并修改为my.ini
# 3.添加配置信息,复制到my.ini
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
# 4.重新服务端才能生效
net stop mysql
net start mysql
mysql> \s # 查看编码信息

主要概念

库		:文件夹
表 :文件夹里面的文件
记录 :文件夹里面的文件里面的一行行数据
数据 :事物的状态

今日内容

1、基本SQL语句
2、存储引擎
3、MySQL基本数据类型

基本SQL语句之库操作

1、增加
create database 数据库名称;
mysql> create database mqq; 2、查询
mysql> show databases; # 查所有
mysql> show create database mqq; # 指定数据库查询 3、修改
alter database 数据库名称 charset='编码'; # 修改编码
mysql> alter database mqq charset="gbk"; # 修改字符编码 4、删除
drop database 数据库名称; # 删除数据库

基本SQL语句之表操作

# 查看当前所在库名称
mysql> select database(); # 切换数据库
use 数据库名称; 1、增加
# 格式:create table 表名(字段名称 字段类型) # 创建表一定要给字段
mysql> create table m1(id int); 2、查询
mysql> show tables; # 查询当前库下面所有的表名称
mysql> show create table m1; # 指定查询
describe m1; 简写:desc 表名 # 查询表内容 3、修改
alter table 表名 rename 新表名;
mysql> alter table m1 rename m2; # 修改表名称
rename table m1 to m2; # 修改表名称 4、删除
drop table 表名;
drop table m2; # 删除表

基于SQL语句之记录操作

# 操作之前必须创建库和表

1、增加
# 格式:insert into 表名 values('按照字段顺序一一传值(逗号隔开)');
mysql> alter table m1 rename m2; # 插入单条记录
mysql> insert into m1 values(2,'dfdf'),(3,'hhh'); # 插入多条记录 2、查询
# 格式:
select * from 表名; # 查询所有字段数据
select 字段名1,字段名2 from 表名; # 也可以通过库名.表名跨库
'''如果字段过多导致展示错乱 还可以使用\G结尾分行展示''' select * from m1; # 查询所有字段数据
mysql> select * from mysql.user; # 通过库名.表名跨库查询
mysql> select * from mysql.user\G; # 通过\G格式化输出 3、修改
update 表名 set 字段名=新值 where 字段名=存在的值 # where筛选条件
mysql> update m1 set name='bai' where id=3; # 修改距离 4、删除
delete from 表名 where 字段名=存在的值 # where筛选条件
mysql> delete from m1 where id=3; # 删除数据

存储引擎

存储引擎:存储引擎就是处理数据底层逻辑 不同的引擎底层处理方式有所不同

1、查看存储引擎信息命令:
show engines; 2、需要掌握的引擎:
(1)MyISAM
是MySQL5.5版本之前默认的存储引擎
该引擎存取数据的速度都很快
但是安全性较低 不支持很多额外的功能 (2)InnoDB
是MySQL5.5版本之后默认的存储引擎
该引擎支持事务、行级锁、外键
存取数据的速度没有MyISAM快但是功能和安全性更高 (3)memory
数据全部存储在内存中 速度很快但是断电立刻丢失 (4)blackhole
黑洞 任何放入其中的数据都会消失(类似于垃圾处理站) 3、比较存储引擎之间的差异
'''创建表可以指定存储引擎
create table t1(id int) engine=存储引擎;
'''
create table t2(id int) engine=MyISAM;
create table t3(id int) engine=InnoDB;
create table t4(id int) engine=memory;
create table t5(id int) engine=blackhole; # 不同存储引擎文件后缀名
MyISAM
三个文件
.frm 表结构
.MYD 表数据
.MYI 表索引
InnoDB
两个文件
.frm 表结构
.ibd 数据与索引
memory
.frm 表结构
blackhole
.frm 表结构 # 插入数据演示
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1); # 重启会消失数据
insert into t5 values(1); # 放入黑洞会消失

创建表的完整语法

create table 表名(
字段名1 字段类型(数字) 约束条件,
字段名2 字段类型(数字) 约束条件,
字段名3 字段类型(数字) 约束条件
);
# 注意事项
1.字段名和字段类型是必须的 数字和约束条件是可选
2.约束条件可以有多个
3.最后一个字段结尾不能有逗号(不容易发现)

数据类型

数据类型之整型

# 整型
tinyint 1bytes
smallint 2bytes
int 4bytes
bigint 8bytes '''不同类型的int能够存储的数字范围不一样'''
# 验证不同类型的int是否会空出一个存储正负号
create table m3(id tinyint);
insert into m3 values(256),(-129); # 得出结论:tinyint默认就会空出一位存储正负号
# 结论:tinyint最大只能存储127字节,最小可以存储-128字节。
"""其实所有的int类型默认都是空出一位存储正负号""" # 约束条件:不加-符号
create table m4(id tinyint unsigned); # 约束条件
insert into m4 values(256),(-129);

数据类型之浮点型

# 浮点型
float(255,30)
总共255位小数位占30位
double(255,30)
总共255位小数位占30位
decimal(65,30)
总共65位小数占30位 例子:精确度不一样
create table m5(id float(255,30));
create table m6(id double(255,30));
create table m7(id decimal(65,30));
insert into m5 values(1.11111111111111111111111);
insert into m6 values(1.11111111111111111111111);
insert into m7 values(1.11111111111111111111111);
# 结论
'''三者精确度不同
decimal > double > float
具体使用结合实际情况
'''

数据类型之字符类型

char(4)  # 定长
最多存储四个字符 超出了则报错 没超出则用空格填充 varchar(4) # 变长
最多存储四个字符 超出了则报错 没超出有几个存几个 案例:
create table m8(id int,name char(4));
create table m9(id int,name varchar(4));
insert into m8 values(1,'mengqq');
insert into m9 values(1,'mengqq');

SQL_MODE

1、模糊查询
show variables like '%mode%'; 2、修改
set session
set global
直接修改配置文件 # 开启严格模式
mysql> set global sql_mode='STRICT_TRANS_TABLES'; # 修改之后退出从新进,生效

研究数字在数字类型与字符类型中的区别

# 验证数字在数字类型中是否是用来限制存储长度
create table m10(id int(3));
insert into m10 values(111111);
# 结论:数字在数字类型中并不是用来限制存储长度 而是用来控制展示长度 create table m11(id int(8) unsigned zerofill); # zerofill:零填充 当数字不够时,用零填充。
insert into m11 values(1111);
insert into m11 values(111111111);
结论:以后遇到数字类型不要指定数字 让他使用自带的即可
create table m12(id int); # int最多存10位。

char与varchar差异

# 1.验证char定长特性
create table m11(id int,name char(5)); # 不足用0填充
insert into m11 values(1,'tom'); create table m12(id int,name varchar(5)); # 有几位存几位
insert into m12 values(1,'tom'); 1、统计某个字段数据对应的长度:char_length
select char_length(name) from m11; 2、上述方法还是无法验证 需要先取消底层优化操作
set global sql_mode='strict_trans_tables,pad_char_to_full_length' 3、重新插入一条到m11表
insert into m11 values(2,b);
select char_length(name) from m11; # 查到是5
select char_length(name) from m12; # 查到是3 # 2.到底哪个好
char
优势:整存整取 速度快
劣势:浪费存储空间 varchar
优势:节省存储空间
劣势:存取数据的时候都需要先考虑报头 速度较于char慢
char(6) varchar(6)
1bytes+jason1bytes+tony1bytes+jack1bytes+kevin

最新文章

  1. Android okHttp网络请求之缓存控制Cache-Control
  2. uva 6757 Cup of Cowards(中途相遇法,貌似)
  3. 二:【nopcommerce系列】Nop的文件结构,引用关系。如何编译打包部署等
  4. ViewPager onPageChangeListener总结(转)
  5. (基础篇) php中0与空 Null false的区别
  6. 论文阅读之:PRIORITIZED EXPERIENCE REPLAY
  7. Uva 11609 Teams (组合数学)
  8. css之定位(position)
  9. Android Camera2采集摄像头原始数据并手动预览
  10. 手写数字识别 ----Softmax回归模型官方案例注释(基于Tensorflow,Python)
  11. Linux命令:logout
  12. python 关于文件的操作
  13. (转)本地搭建环境wamp下提示不支持GD库的解决方法
  14. 第一章 进入java的世界
  15. java web 打印(lodop)案例
  16. hdu 2199 Can you solve this equation? 二分
  17. linux和windows共享文件,通过samba
  18. ubuntu 添加应用到Dash启动器
  19. .NET的URL重写
  20. Selenium2+python自动化75-非input文件上传(SendKeys)【转载】

热门文章

  1. Python super(Todo,self).__init__() TypeError: super() argument 1 must be type, not classobj
  2. 印象最深的一个bug——排查修复问题事件BEX引发的谷歌浏览器闪退崩溃异常
  3. Java实体映射工具MapStruct使用详解
  4. Awesome metaverse projects (元宇宙精选资源汇总)
  5. 线程私有数据TSD——一键多值技术,线程同步中的互斥锁和条件变量
  6. 【java+selenium3】多窗口window切换及句柄handle获取(四)
  7. Java学到什么程度能找到一份还不错的工作
  8. Centos6.8 yum报错及修复YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid
  9. SpringBoot中使用@ConfigurationProperties提示:Configuration Annotation Processor not found in classpath
  10. css 跑马灯加载特效