1. 基本的SQL语句
1. 库的增删改查
增:
create database 数据库名字;
create databaes aaa;
create database aaa charset=‘utf-8’; # 修改字符编码
查:
show databases; # 查看所以数据库
shou create database aaa; 查看指定的库
改:
alter database aaa charset=‘gbk’ 修改字符编码
删除:
drop database aaa;
2. 表的增删改查
前提:先选择数据库
1. 如何查看当前所在的库
select databases();
2. 选择数据库或者切换都某个库
use aaa;
3. 查看数据表
show tables; # 查看所有的表
show create table t1; # 查看表的结构
4. 创建数据表
create table t1 (id int, name varchar(32));
5. 修改
modify 只能修改数据类型
change
aiter table t1 modify name varchar(32);
alter table t1 change name name1 varchar(64); 把name 改成name 1
6. 删除
drop table t1:
3. 记录的增删改查
1. 查看
select * from t1;
2. 插入数据
insert into t1 (id, name) values (1, ‘jason'); # 单条数据
insert into t1 (id, name) values (2, tom),(3,tank); # 批量插入
3. 修改数据
updata t1 set name = ’AAA‘ where id=1; # 把这图表id为1的改成 AAA
4. 删除数据
delete from t1 where id=1; # 删除这个表id为1 的数据
delete from t1; # 把这个表清空
truncate t1; # 也是把这个表清空 比上面找回数据容易一些
4. 存储引擎
存储数据的方式
存储引擎决定存储数据的方式不同
MySQL提供了多种数据引擎
查看所有的存储引擎
show engines;
1. MyISAM
是mysql5.5及之前的版本默认的存储引擎
存储的速度快,相对于InnoDB
'''不支持事务,支持表锁'''
2. InnoDB
是mysql5.6之后的版本默认的存储引擎
存储速度慢,相对于MyISAM
''' 支持事务,行锁,外键'''
3. MEMORY
数据存储在内存中,一旦断电,数据立马丢失,或者数据重启也丢失
验证
create table t2 (id int) engine=MyISAM;
create table t3 (id int) engine=InnoDB;
create table t4 (id int) engine=MEMORY;
insert into t2(id) values(1);
insert into t3(id) values(2);
insert into t4(id) values(3);
'''各个存储引擎的存储文件'''
MyISAM的存储文件个数:
1. .frm # 存储数据的表结构
2. .MYI # 存索引 >>> 类似于书的目录
3. .MYD # 存储表数据
InnoDB的存储文件个数:
1. .frm # 存储表结构
2. .ibd # 存储数据和索引的
Memory的存储文件个数:
1. .frm # 存储表结构的
5. 数据类型
1. 整型
tinyint, smallint, int, bigint
区别是:存储数据的范围不一样
验证:默认情况带不带符号
create table t5 (id tinyint);
create table t5 (id int);
insert into t5 (id) values (-129), (128);
'''结论:默认带符号'''
整型的存储大小取决于类型,而不取决于括号里面的数字,而字符串的话是取决于括号里面的数字
varchar(32)
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.11111111111111111111111);
insert into t7 values (1.11111111111111111111111);
insert into t8 values (1.11111111111111111111111);
区别:
精度不一样
decimal > double > float
3. 字符串
char(4) # 字符串
# 字符串类型,存储的范围是4个字符,超过了直接报错,不超过按照4个字符存
varchar(4)
# 字符串类型,存储的范围是4个字符,超过了直接报错,不超过有几个存几个
create table t9 (id int, name char(4));
create table t10 (id int, name varchar(4));
# 插入数据
insert into t9 (id, name) values(1, 'kevin');
insert into t10 (id, name) values(1, 'kevin');
4. 日期
datetime date time year
年月日,时分秒 年月日 时分秒 年份
create table t11 (id int,
reg_time datetime,
reg1_time date,
reg2_time time,
reg3_time year
);
# 插入数据
insert into t11 values(1, '2022-1-1 11:11:11', '2022-01-02', '11:11:11', '2022');
5. 枚举和集合
枚举:多个里面选一个
create table t1 (id int, gender enum(’男‘, ’女‘, ’other‘));
insert into t1 values(1, ’男‘)
集合; 多个里面选多个
create table t1 (id int, hobby set(’music‘, ’read‘, ’xijiao‘));
insert into t1 values(1, ’music‘);
6. 严格模式
查看mysql的sql_mode
show variables like '%mode%';
设置严格模式
1. 直接使用命令修改
set global sql_mode='STRICT_TRANS_TABLES';
set global sql_mode='STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY';
2. 配置文件修改
7. 创建表的完整结构
create table 表名 (
字段名1 数据类型 约束条件 约束条件 约束条件,
字段名2 数据类型 约束条件 约束条件 约束条件,
字段名3 数据类型 约束条件 约束条件 约束条件,
字段名4 数据类型 约束条件 约束条件 约束条件
);
'''
注意事项:
1. 字段名和数据类型是必填项
2. 约束条件是可选的
3. 在最后一个字段的后面不能加逗号
''’