day02 MySQL基本操作
2024-10-10 16:12:53
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
最新文章
- Android okHttp网络请求之缓存控制Cache-Control
- uva 6757 Cup of Cowards(中途相遇法,貌似)
- 二:【nopcommerce系列】Nop的文件结构,引用关系。如何编译打包部署等
- ViewPager onPageChangeListener总结(转)
- (基础篇) php中0与空 Null false的区别
- 论文阅读之:PRIORITIZED EXPERIENCE REPLAY
- Uva 11609 Teams (组合数学)
- css之定位(position)
- Android Camera2采集摄像头原始数据并手动预览
- 手写数字识别 ----Softmax回归模型官方案例注释(基于Tensorflow,Python)
- Linux命令:logout
- python 关于文件的操作
- (转)本地搭建环境wamp下提示不支持GD库的解决方法
- 第一章 进入java的世界
- java web 打印(lodop)案例
- hdu 2199 Can you solve this equation? 二分
- linux和windows共享文件,通过samba
- ubuntu 添加应用到Dash启动器
- .NET的URL重写
- Selenium2+python自动化75-非input文件上传(SendKeys)【转载】
热门文章
- Python super(Todo,self).__init__() TypeError: super() argument 1 must be type, not classobj
- 印象最深的一个bug——排查修复问题事件BEX引发的谷歌浏览器闪退崩溃异常
- Java实体映射工具MapStruct使用详解
- Awesome metaverse projects (元宇宙精选资源汇总)
- 线程私有数据TSD——一键多值技术,线程同步中的互斥锁和条件变量
- 【java+selenium3】多窗口window切换及句柄handle获取(四)
- Java学到什么程度能找到一份还不错的工作
- Centos6.8 yum报错及修复YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid
- SpringBoot中使用@ConfigurationProperties提示:Configuration Annotation Processor not found in classpath
- css 跑马灯加载特效