4/4课后总结
针对记录的SQL语句
# 首先得有库和表,才有记录
# 记录就是表里面的一行一行的数据
库>>>表>>>记录
1. 增加记录
insert into t1 values(1,'zhansgan',18); # 括号里面填对应的数据,注意格式
insert into t2 values(1,'zhangsan',18),(2,'lisi',18),(3,'laoba',18); # 增加多行数据
insert into t1(id,name) values(1,'mazi'); # 指定增加数据的话在表名后面加括号
2. 查看
select *from t1;
3. 改
update t1 set name = 'gouzi' where id = 1; # 修改id是1的人的姓名
# 注意:修改记录的时候一定要有where条件
update t1 set name = 'shagou'; # 这个是修改全表的名字了
4. 删除
delete from t1 where name = 'lisi'; # 删除叫李四的人
delete from t1; # 删除全表
配置文件
"""
复制my-default.ini文件
改名为my.ini文件
修改配置文件
重启服务端
"""
存储引擎(面试用)
"""
存储引擎其实就是数据库中存储数据的方式
可以用 show engines;查看全部的存储引擎
在Mysql中存在9种数据引擎,我们只需要掌握其中两种
"""
1. MyISAM
# MySQL5.5及之前的版本默认的存储引擎,它相对InnoDB的存取速度更快了,但是,相对InnoDB数据不够安全。不支持事物,行锁,外键,支持表锁
2. InnoDB
# MySQL5.6及之后的版本默认的存储引擎,它相对MyISAM的存取速度更慢了,但是,相对MyISAM数据更安全。支持事物,行锁,外键,不支持表锁
3. MEMORY
# 数据存放在内存中,一旦断电,数据立马丢失,重启服务端数据就没了,不能长期保存数据
create table t1(id int) engine = MyISAM;
create table t2(id int) engine = InnoDB;
create table t3(id int) engine = MEMORY;
'''
不同的存储引擎的区别:
1. MyISAM引擎产生3个文件
.frm >>> 表结构
.MYD >>> 存数据
.MYI >>> 存索引 >>> 目录
2. InnoDB 产生2个文件
.frm >>> 表结构
.ibd >>> 表结构+数据
3. MEMORY产生1个文件
.frm >>> 表结构
'''
MySQL的基本数据类型
1. 整型
# 根据存储数据大小范围分为:tinyint<smallint<int<bigint
tinyint 一个字节>>>11111111>>>0~255>>>-128~127
smallint:2个字节 ---->16位 ------> 0-32 768
int:4个字节
bigint:8个字节
create table t1(id tinyint);
create table t1(id smallint);
create table t1(id int);
create table t1(id bigint);
# 整型默认情况下都带符号
2. 浮点型
# 小数,根据精确度分为float double decimal
float(255,30);
double(255,30);
decimal(65,30); # 括号内分别是总共位数和小数位数
create table t1(id float(255,30));
create table t1(id double(255,30));
create table t1(id decimal(65,30));
3. 字符串
1. char(4) # 定长,最多4位,超过报错,不够空格填充
2. varchar(4) # 不定长,有几位存几位
create table t1(name char(4));
create table t1(name varchar(4));
# 在MySQL5.6之前不会报错,需要设置参数才会报错
show variables like '%mode%'; # 模糊查询
"""
上述的修改方式有两种:
1.配置文件修改---->一定要重启服务端
2. 临时修改
set global sql_mode='STRICT_TRANS_TABLES';
退出客户端,从新进
"""
# 研究定长和可变长
select char_length(name) from t2; # 普通模式不行,需要先设置好模式
set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';
4. 日期
date(显示年月日) datetime(年月日时分秒) time(时分秒) year(年)
create table t13 (reg_time date,
login_time datetime,
logout_time time,
birth_day year
);
insert into t13 values(1, '2023-04-04','2023-04-04 11:11:11', '11:11:11', 1995); # 用的最多的就是datetime
5. 枚举与集合
枚举:多选一 enum()
create table t4 (
gender enum('male','female','other')
);
insert into t4 values('male');
# insert into t4 values('xxxx'); 如果是不存在的会报错
集合:多选多 set()
create table t5 (
hobby set('read','music','tangtou','xijio','anmo')
);
insert into t5 values('read,anmo');
# insert into t5 values('read,anmo, xxxx'); 如果有不存在的就会报错
整型中括号内的数字作用
字符串中括号中得数字代表的就是:限制存储的长度
create table t1(id int(4) zero fill);
insert into t1 values(99); # 0099
"""整型中括号内的数字代表的不是长度,代表的是展示的位数"""
创建表的完整语法
CREATE TABLE `t15` (
`id` int(11) DEFAULT NULL,
`hobby` set('read','music','tangtou','xijio','anmo')
)
CREATE TABLE `t15` (
字段1 字段类型1 约束条件1 约束条件1 约束条件1,
字段2 字段类型2 约束条件1 约束条件1 约束条件1,
字段3 字段类型3 约束条件1 约束条件1 约束条件1,
字段4 字段类型4 约束条件1 约束条件1 约束条件1
);
"""
1. 字段和字段类型是必须要写的
2. 约束条件是可选的,并且,约束条件可以有多个,空格隔开
3. 最后一条数据的逗号不能加
"""
约束条件
在数据类型的基础上在添加额外的条件
id int unsigned
unsigned
zerofill
not null
default
unique
primary key # 主键