关于记录的SQL语句
什么是记录?表中的一行行数据就是记录
select * from 表名; #查看所有记录
insert into 表名 values(数据1,数据2,数据3); #单条增加,全字段增加
insert into 表名 values(数据1,数据2,数据3),(数据1,数据2,数据3),(数据1,数据2,数据3);
#批量增加,全字段增加
update 表名 set 表头=修改后的数据 where 表头=修改前的数据;
update 表名 set 表头=修改后的数据 where 表头=修改前的数据 and 表头=修改前的数据;
update 表名 set 表头=修改后的数据 where 表头=修改前的数据 or 表头=修改前的数据;
delete from 表名 where 表头=数据;
配置文件的介绍
mysql的配置文件是:my-default.ini
(修改配置文件后要重启服务端才生效)
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8 #字符编码
[mysql]
default-character-set=utf8
存储引擎的使用
什么是存储引擎?存储引擎就是存储数据的方式。
MySQL支持 九 种存储引擎方式
查看存储引擎:show engines;
MyISAM:它是MySQL5.5版本及之前的版本默认的存储引擎、它的读取速度很快相比较与InnoDB,但是相对于InnoDB存储引擎它的数据安全性较低。不支持事务、支持的是表锁。
InnoDB:它是MySQL5.6及之后的版本默认的存储引擎、它的读取速度相对慢一些,但是数据的安全性较高一些。支持事务、行锁、外键
MEMORY:它是基于内存存储的,意味着断电数据丢失、重启服务端数据就丢失。
例:create table 表名 (id int, name varchar(64)) engine=MyISAM;
对于不同的存储引擎,硬盘中保存的文件个数也是不一样的
MyISAM:3个文件
.frm 存储表结构
.MYD 存储的是表数据
.MYI 存索引(当成是字典的目录,加快查询速度)
InnoDB:2个文件
.frm 存储表结构
.ibd 存储数据和索引
MEMORY:1个文件
.frm 存储表结构
数据类型
整型
MySQL中,整型有五种:
迷你整型:tinyint,使用1个字节存储整数,最多存储256个整数(-128~127)。
短整型:smallint,使用2个字节存储整数。
中整型:mediumint,使用3个字节存储整数。
标准整型:int,使用4个字节存储整数。
大整型:bigint,使用8个字节存储。
强调:
(1)如果你不知道用哪一种,或者懒得计算,那就用标准整型 int吧,这个用的最多。
(2)整型在 MySQL 中默认是有符号的,即有正负;无符号需要使用 unsigned 修饰整型,代表正整数。create table t6 (id tinyint unsigned);
浮点型
float 浮点类型用于表示单精度浮点数值,double浮点类型用于表示双精度浮点数值
double 和 float 彼此的区别:
- 在内存中占有的字节数不同, 单精度内存占4个字节, 双精度内存占8个字节
- 有效数字位数不同(尾数) 单精度小数点后有效位数7位, 双精度小数点后有效位数16位
- 数值取值范围不同 根据IEEE标准来计算!
- 在程序中处理速度不同,一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快
decimal依赖于M和D的值,所以decimal使用更少的空间decimal依赖于M和D的值,所以decimal使用更少的空间
float(M,D) unsigned 中的M代表可以使用的数字位数,D则代表小数点后的小数位数, unsigned 代表不允许使用负数!
double(M,D) unsigned 中的M代表可以使用的数字位数,D则代表小数点后的小数位数
通常大家都选decimal。
字符串
char(4): 定长类型,超出4位,就报错,不够4位,使用空格填充
varchar(4): 可变长类型,超出4位,报错,不够4位的,有几位存几位
如果你想超出范围之后,直接报错,需要设置严格模式!
查看模式:show variables like '%mode%' # sql_mode
两种修改方式
1. 命令行模式:临时修改
set global sql_mode='STRICT_TRANS_TABLES';
2. 配置文件修改:永久修改
默认情况下,没有对char类型填充空格,如果想看填充了空格,需要设置严格模式
1. 命令行模式:临时修改
set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH'; # 不区分大小写
2. 配置文件修改:永久修改
查看数据长度:select char_length(字段名) from 表名;
日期
date年月日
datetime年月日时分秒
time时分秒
year年
create table 表名 (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);
枚举
多选一
enum
create table 表名 (id int, hobby enum('read', 'music', 'tangtou', 'xijio'));
nsert into 表名 values(1, 'read');
多选多:包含多选一
set
create table 表名 (id int, hobby set('read', 'music', 'tangtou', 'xijio'));
insert into 表名 values(2, 'read,music1');