初识MYSQL:简介、下载与安装、相关配置、基本SQL语句、创建表的完整语法、MySQL基本数据类型


一、 数据库前戏

# 存储数据
1.文件
	文件地址与数据格式随意
2.软件开发目录规范
	规定数据存储位置
    单机游戏
3.联网游戏
	数据共享

二、 数据库分类

数据库本质就是一款cs架构软件

数据库相关软件:
​    关系型数据库:
        固定表结构并且表与表之间可以建关系
        常见软件:MySQL、PostgreSQL、sqlite,db2,oracle,access,sql server
​	
    非关系型数据库:
	    没有固定表结构并且存储数据以kv键值对形式
        常见软件:mongodb,redis,memcache

"""
常见软件最好能记住默认端口号
	MySQL	3306
	redis	6379
	mongodb 27017
	django	8000
	flask	5000
	tomcat	8080
	...
"""

三、 MySQL简介

"""
本质也是一款基于网络通信的应用程序
也就是说 如果你比较牛逼 你完全可以开发一个自己的数据库软件
"""
任何基于网络通信的软件底层肯定都是socket

	-服务端
​		-基于socket通信
​		-本地文件操作
​		-解析指令(SQL语句)-客户端
​		-基于socket通信
​		-发送指令
​		-解析指令(SQL语句)

SQL语句的由来
"""
MySQL不单单支持MySQL客户端操作,也支持其他编程语言来操作
	python、java、php、c++、go语法都不一样 那MySQL如何做到兼容的呢
	两种解决语言障碍的思路
		1.自己精通多国语言 轻松自如的切换
		2.采用统一的语言(SQL语句)
"""

四、 重要概念介绍

"""
库			>>>			 文件夹
表			>>>			 文件夹里面的文件
记录	 		>>>			文件内一行行的数据

表头						表格的第一行数据
字段						字段名+字段类型
"""

五、 下载与安装

1.版本问题
	5.6
    5.7
    8.0
    # IT领域不会轻易采取最新版本软件
2.下载
	官网下载压缩包
    解压到固定地址
    简单启动
    	mysql.exe	客户端
        mysqld.exe	 服务端
  1. 点击downloads
    在这里插入图片描述
  2. 点击MySQL Community(GPL) Downloads
    在这里插入图片描述
  3. 点击Mysql Community Server
    在这里插入图片描述
  4. 点击Archives
    在这里插入图片描述
  5. 选择需要的版本,按自己的操作系统选择下载(推荐5.6、5.7版本,一般系统都是64位,所有下载64位的)
    在这里插入图片描述

六、 系统服务

1.解压
	如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.6.47-winx64
	
2.环境变量添加
	【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,C:\mysql-5.6.47-winx64\bin】 如下图:
	
3.系统服务制作(全部在管理员身份下操作)
	# 查看系统服务
    	1.右键选择任务管理器
    	2.Windows+R输入services.msc
    1.将Mysql添加到系统服务中
		# 添加到系统服务
   	 		mysqld --install
    	# 取消系统服务(一定要先停止服务)
    		mysqld --remove
    2.第一次制作之后默认是未启动状态,需要我们启动一次
    	1.右键启动
        2.命令启动服务
	    	net start mysql
    	3.命令停止服务
	    	net stop mysql

在这里插入图片描述
在这里插入图片描述

七、 用户登录

1. 在没有做任何配置的情况下输入mysql
	其实是以游客模式在访问
    拥有的操作权限很少
 
2. MySQL其实也需要做用户管理
	mysql -u用户名 -p密码  # 管理员初次登录无需密码	

在这里插入图片描述

八、 密码相关

1. 修改管理员密码
	mysqladmin -u用户名 -p原密码 password 新密码

2. 忘记密码
	1.停止MySQL服务
    	net stop mysql
	2.跳过授权表重新启动MySQL(如下图)
		mysqld --skip-grant-tables
    3.新建cmd 
    
    4.无密码登录
    	mysql -uroot -p
    5.修改用户密码
    	update mysql.user set password=password(123) where user="root" and host="localhost";  # 修改对应用户的密码
	6.退出客户端并以正常的重新启动服务端

在这里插入图片描述
在这里插入图片描述

九、 配置文件

1. MySQL默认配置文件my-default.ini不能修改
   拷贝并重命名my.ini

    
# \s查看基本信息

my.ini文件内容
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8


2. 修改完配置文件一定要重启服务端才能生效
		net stop mysql
    	net start mysql

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十、 系统数据库

  • information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
  • performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象
  • mysql: 授权库,主要存储系统用户的权限信息
  • test: MySQL数据库系统自动创建的测试数据库

十一、 基本SQL语句

1、 库操作

##########################库###############################

use 数据库名称;  # 切换数据库(文件夹)
select database();  # 查看当前所在的库
# 查
show databases;   #查看整体
show create database 数据库名称;  #查看指定数据库
# 增
create database 数据库名称 charset='utf8';
# 改
alter database 数据库名称 charset='gbk';
# 删
drop database 数据库名称;

2、 表操作

##########################表###############################
# 查
show tables;
show create table t1;		# 查看表的详细信息
describe t1; == desc t1;  # 查看表结构
# 增
create table t1(id int,name char(4));  # 创建出来的可能是多个文件,解耦管理
# 改
alter table t1 modify name char(16);
alter table t1 rename userinfo;
# 删
drop table t1;

3、 记录操作

##########################记录###############################
# 查
select id,name from db1.t1;  # db1可不指定,默认当前库下
select * from t1;
# 增
insert into db1.t1 values (1,'tom');  # 单
insert into db1.t1 values (2,'tom'),(3,'tony'),(4,'jason');  # 多
# 改
update db1.t1 set name='DSB' where id > 1;
update db1.t1 set name='DSB' where id = 2 or id = 3;
# 删
delete from db1.t1 where id >3;
delete from db1.t1 where name='jason'; 
delete from db1.t1;  # 将t1表所有的数据都删除

4、 添加数据的两种方式

insert into t1 values(...);  # 按照字段顺序一一传值

insert into t1(name) values(...);  # 指名道姓的传值

5、 注意事项!!!

1.SQL语句是以分号作为结束
 
2.取消SQL命令
	\c

3.选择服务端的命令
	mysql -h 127.0.0.1 -P 3306 -uroot -p

4.客户端退出,退出命令加不加分号都可以执行
	quit
	exit

5、删库跑路😏😏😏
	rm-rf/*

十二、 存储引擎

存储数据的方式不一样

# 查看所有的存储引擎
show engines;

# 需要知道的有四个
MyISAM
	MySQL5.5及之前版本默认的存储引擎
    存取数据的速度都非常快 但是功能较少安全性较低
InnoDB
	MySQL5.6及之后版本默认的存储引擎
    存取数据速度没有MyISAM快 但是功能更多 安全性更高
    	事务 行锁 外键
BlackHole
	往里面写入的任何数据都会直接消失
Memory
	内存存储数据
  
# 存储数据的特点
create table t1(id int) engine=InnoDB;
create table t2(id int) engine=MyISAM;
create table t3(id int) engine=BlackHole;
create table t4(id int) engine=Memory;
    
# 文件个数不一致
InnoDB
	.frm	表结构
    .ibd	表数据和索引(类似于书的目录)
MyISAM
	.frm	表结构
    .MYD	表数据
    .MYI	索引(类似于书的目录)
BlackHole
	.frm	表结构
Memory
	.frm	表结构
    
# 验证
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);
"""乐观锁与悲观锁"""

在这里插入图片描述

十三、 创建表的完整语法

create table 表名(
	字段名1 字段类型(宽度) 约束条件,
    字段名2 字段类型(宽度) 约束条件,
    字段名3 字段类型(宽度) 约束条件
)

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

2.约束条件可以有多个
	字段名1 字段类型(宽度) 约束条件1 约束条件2 约束条件3
	
3.最后一个字段结尾不能加逗号
"""

十四、 MySQL基本数据类型

1、整型

tinyint    smallint    int    bigint

1.不同的类型能够存储的数字范围不一样

2.验证是否自带符号
   	create table t5(id tinyint);
    insert into t5 values(-129),(256);
结论:所有的整型都是自带符号

3.如果不想让整型有符号(unsigned)
   	create table t6(id tinyint unsigned);
   	insert into t6 values(-129),(256);



特例:
'''
针对整型字段 括号里面的数字不是用来限制存储长度而是用来控制展示长度
	id int(8)
	如果数字没有超出8位,那么默认用空格填充至8位
	如果数字超过了8位,那么有几位存几位(但还是要遵循最大范围)
	
ps:如果不理解 直接记结论
	定义整型字段无需自己写括号和数字	
'''


4.0填充至8位(zerofill)
	create table t12(id int(4) zerofill);
	insert into t12 values(1),(11111111);

在这里插入图片描述

2.浮点型

float(255,30)
    总共255位小数占30位
    
double(255,30)
    总共255位小数占30位
    
decimal(65,30)
   	总共65位小数占30位
   	
create table t7(id float(255,30));
create table t8(id double(255,30));
create table t9(id decimal(65,30));
insert into t7 values(1.111111111111111111111111111111);
insert into t8 values(1.111111111111111111111111111111);
insert into t9 values(1.111111111111111111111111111111);
"""
精确度不一样
	float < double < decimal
		
在实际开发中 很多时候看似需要用数字存储的数据
其实我们可能都是使用的字符串存储
"""

在这里插入图片描述

3.字符类型

1、 字符类型对比

char(4)
	定长
   	最大存储四个字符 超出了直接报错 不超过空格填充至四位
   	
varchar(4)
	变长
   	最大存储四个字符 超出了直接报错 不超过有几位存几位
   	
create table t10(id int,name char(4));
create table t11(id int,name varchar(4));
insert into t10 values(1,'jason');
insert into t11 values(1,'jason');


char(5)
	优点:整存整取 速度快
    缺点:浪费硬盘空间
    
    jason kevin tony egon jack tom
    存按照五个字符存,取按照5个字符取
    
varchar(5)
	优点:节省硬盘空间 精准
    缺点:速度没有char快
   
	1bytes+jason 1bytes+kevin 1bytes+tony 1bytes+egon 1bytes+jack 1bytes+tom 
	存的时候需要制作报头
	取的时候也需要先读取报头,之后才能读取真实数据
	
# 到底用char还是varchar?
	各有优缺点 具体结合实际情况


 # 由于我们修改了配置并且没有指定sql_mode
   	"""
   	1.拷贝sql_mode到自己的配置文件
   	2.修改
   	"""

2、 严格模式

针对不同版本有不同的效果
	5.6版本默认没有开启严格模式,如果超出规定范围就会自动截取
	5.7及以上版本默认开启严格模式,如果超出规定范围就会报错
	
# 查看sql_mode
show variables like '%mode%';

# 修改
set global sql_mode='strict_trans_tables';

# 退出客户端重新进入即可

# 验证是否自动填充
set global sql_mode='strict_trans_tables,pad_char_to_full_length';

4.日期类型

datetime		年月日 时分秒
time			时分秒
date			年月日
year			年

create table t13(
   	id int,
    name varchar(32),
    reg_time datetime,
    study_time time,
    birth date,
    r_time year
);
insert into t13 values(1,'jason','2000-11-11 11:11:11','11:11:11','2000-01-21','1995');

5.枚举与集合

枚举		多选一
   	create table t14(
       	id int,
        name char(16),
        gender enum('male','female','others')
    );
    
集合		多选多(多选一)
   	create table t15(
       	id int,
        name char(32),
        hobby set('read','study','music','tea')
    );
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值