MYSQL 5.6.40基本操作
基本语句
进入数据库(记得输入密码)
mysql -u root -p
查看所有库
show databases;
打开库
use 库名
创建库
create database 库名;
删除库
drop database 库名;
表
打开库
use 库名;
查看库里的表
show tables;
创建表
create table t1(id int, name varchar(30));
删除表
delete from 表名;
delete from 表名 where 限制条件#如id=2等;
delete from 表名 where 限制条件 or 限制条件
查看表里的数据
select * from 表名;
添加表里的数据
insert into 表名 values(1,'tany');
insert into 表名()values();
修改表里的数据
update 表名 set 要修改的内容(如name='tony')where 限制条件(如id=1等)
update 表名 set 要修改的内容(如name='tony')where 限制条件(如id=1等)and 限制条件
update 表名 set 要修改的内容(如name='tony')where 限制条件(如id=1等)or 限制条件
"""以后再自行更新和删除的sql语句的时候,一定要细心、好好看看你的条件是否正确"""
配置文件
如何使输入中文不出现乱码:
方法1:
修改配置文件
修改mysql中的my.ini文件,找到[mysql]和[mysqld]在其下方输入以下内容:(将文件 my-default.ini 复制一份,重命名为my.ini文件,)有的电脑需要权限
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
character-set-filesystem = utf8mb4
[client]
default-character-set=utf8mb4
保存文件,重启mysql,输入show variables like 'char%'查看当前字符集编码。
方法2:
零时修改(退出服务就失效,不建议):
set character_set_client=utf8mb4;
依次输入
set character_set_connectiont=utf8mb4;
set character_set_database=utf8mb4;
set character_set_results=utf8mb4;
set character_set_server=utf8mb4;
存储引擎的使用(理论,重要)
"""存储引擎就是存储数据的方式!"""
MySQL支持多少种存储引擎方式
1. 如何查看存储引擎
show engines;
"""一共九种存储引擎,重点学习:MyISAM MEMORY InnoDB"""
MyISAM:
它是MySQL5.5版本及之前的版本默认的存储引擎、它的读取速度很快相比较与InnoDB,但是它的数据安全性较低,相对于InnoDB存储引擎
"""不支持事务、支持的是表锁"""
InnoDB:
它是MySQL5.6及之后的版本默认的存储引擎、它的读取速度相对慢一些,但是数据的安全性较高一些
"""它支持:事务、行锁、外键"""
MEMORY:
它是基于内存存储的,意味着断电数据丢失、重启服务端数据就丢失
# 演示
create table t2 (id int, name varchar(64)) engine=MyISAM;
create table t3 (id int, name varchar(64)) engine=InnoDB;
create table t4 (id int, name varchar(64)) engine=MEMORY;
"""
对于不同的存储引擎,硬盘中保存的文件个数也是不一样的
MyISAM:3个文件
.frm 存储表结构
.MYD 存储的是表数据
.MYI 存索引(当成是字典的目录,加快查询速度)
InnoDB:2个文件
.frm 存储表结构
.ibd 存储数据和索引
MEMORY:1个文件
.frm 存储表结构
"""
数据类型(重要)
1. 整型: 存储整数的
tinyint smallint int bigint
# 不同的数据类型区别就是所存储的范围不一样
tinyint: 它是使用一个字节来保存数据,一个字节代表8位 11111111--->256种情况(0-255) (-128-127)
smallint:2个字节, 代表16位, 65536(0-65535) (-32768-32767)
mediumint: 3个字节
int: 4个字节,2**32=42....(-21...- 21...)
bigint:8个字节(最大的) 可以存手机号(11)
"""怎么选数据类型:看你这一列存什么数据"""
比如:age int
## 整型默认情况下带不带符号?
create table t5 (id tinyint);
insert into t5 values(256);
结论是:带符号的,所有的整型默认都是带符号的 减半
# 怎么样去掉符号
create table t6 (id tinyint unsigned);
2. 浮点型
float double decimal
float(255, 30) # 总位数是255位、小数点后60位
double(255, 30) # 总位数是255位、小数点后60位
decimal(65, 30) # 总位数是255位、小数点后60位
"""他们三个区别是什么呢?"""
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.11111111111111111111111111);
insert into t8 values (1.11111111111111111111111111);
insert into t9 values (1.11111111111111111111111111);
"""结论:三者的精确度不一样:decimal >>> double >>> float(精确到7位了)"""
# 以后到底是选哪个更好呢
"""就我多年的经验来看,大家都选decimal"""
price decimal(8,2) # 999.99 # price:1000
3. 字符串(重要)
char(4): 定长类型,超出4位,就报错,不够4位,使用空格填充 abc helloworld
varchar(4): 可变长类型,超出4位,报错,不够4位的,有几位存几位 abc a
create table t10 (id int, name char(4));
create table t11 (id int, name varchar(4));
insert into t10 values(1, 'jerry');
insert into t11 values(1, 'jerry');
"""如果你想超出范围之后,直接报错,需要设置严格模式!!!"""
sql_mode
show variables like "%mode%";
# 设置严格模式
1. 命令行模式:临时修改
set global sql_mode='STRICT_TRANS_TABLES'; # 不区分大小写
2. 配置文件修改:永久修改
## 研究定长和不定长
create table t12 (id int, name char(4));
create table t13 (id int, name varchar(4));
insert into t12 values(1, 'ke');
insert into t13 values(1, 'ke');
## 验证是否补充了空格
select char_length(name) from t12;
select char_length(name) from t13;
"""默认情况下,没有对char类型填充空格,如果想看填充了空格,需要设置严格模式"""
# 设置严格模式
1. 命令行模式:临时修改
set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH'; # 不区分大小写
2. 配置文件修改:永久修改
4. 日期
date datetime time year
年月日 年月日 十分秒 十分秒 年
create table t14 (
id int,
reg_time date,
reg1_time datetime,
reg2_time time,
reg3_time year
);
insert into t14 values(1, '2023-10-1', '2023-11-11 11:11:11', '11:11:11', 2023);
5. 枚举
# 多选一
enum
create table t15 (id int, hobby enum('read', 'music', 'tangtou', 'xijio'));
insert into t15 values(1, 'read');
# 多选多:包含多选一
set
create table t16 (id int, hobby set('read', 'music', 'tangtou', 'xijio'));
insert into t16 values(2, 'read,music1');