数据类型与SQL语句

针对记录的SQL语句

记录:表中的一行一行的数据称之为是一条记录

需要先有库、在有表、最后操作记录

id name age gender

1 kevin 20 male

1、查看记录

sql 复制代码
select * from t1; # 查所有

2、增加数据

sql 复制代码
    insert into t1 values(1, 'kevin', 20); # 第一种方式,全字段增加, 单条增加
    insert into t1 values(2, 'kevin1', 20),(3, 'kevin2', 20),(4, 'kevin3', 20),(5, 'kevin4', 20),(6, 'kevin5', 20); # 第二种方式,全字段增加, 批量增加
    insert into t1(id, name) values(7, 'kevin7'); # 空的使用NULL填充

3、修改

sql 复制代码
update t1 set name='tank' where id=1;
update t1 set age=30 where name='tank';
update t1 set name='jerry',age=30 where id=3;
update t1 set name='oscar' where name='tank' and age=30;
update t1 set name='oscar' where name='kevin3' or name='kevin4';
update t1 set name='tony';

"""以后再自行更新和删除的sql语句的时候,一定要细心、好好看看你的条件是否正确"""

案例:

update t1 set age=age+40 where id=1;

update t1 set price=price+10;

"""一定要谨慎!!!!"""

4、删除

sql 复制代码
delete from t1 where id=1;
delete from t1 where id=2 or id=7;
delete from t1;  # 这是清空表

配置文件的使用

将默认编码修改为utf-8

步骤:

1.找到配置文件:my-default.ini

2.复制一份,命名为:my.ini

3.将以下内容写入文件:

mysqld

character-set-server=utf8

collation-server=utf8_general_ci

client

default-character-set=utf8

mysql

default-character-set=utf8

4.保存即可

存储引擎的使用

存储引擎就是存储数据的方式

MySQL支持多少种存储引擎方式

如何查看存储引擎:

sql 复制代码
show engines;

一共九种存储引擎,重点学习:MyISAM MEMORY InnoDB

MyISAM:

它是MySQL5.5版本及之前的版本默认的存储引擎、它的读取速度很快相比较与InnoDB,但是它的数据安全性较低,相对于InnoDB存储引擎

"""不支持事务、支持的是表锁"""

InnoDB:

它是MySQL5.6及之后的版本默认的存储引擎、它的读取速度相对慢一些,但是数据的安全性较高一些

"""它支持:事务、行锁、外键"""

MEMORY:

它是基于内存存储的,意味着断电数据丢失、重启服务端数据就丢失

sql 复制代码
# 演示
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;
python 复制代码
"""
对于不同的存储引擎,硬盘中保存的文件个数也是不一样的
MyISAM:3个文件
		.frm 存储表结构
		.MYD 存储的是表数据
		.MYI 存索引(当成是字典的目录,加快查询速度)
InnoDB:2个文件
		.frm 存储表结构
		.ibd 存储数据和索引
MEMORY:1个文件
		.frm 存储表结构
"""

数据类型(重要)

1、整型: 存储整数的类型

tinyint smallint int bigint

不同的数据类型区别就是所存储的范围不一样

sql 复制代码
    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

sql 复制代码
## 整型默认情况下带不带符号?
    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位

三者的精确度不一样:decimal >>> double >>> float(精确到7位)

以后到底是选哪个更好呢

decimal

3、字符串(重要)

char(4): 定长类型,超出4位,就报错,不够4位,使用空格填充 abc helloworld

varchar(4): 可变长类型,超出4位,报错,不够4位的,有几位存几位 abc a

sql 复制代码
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 复制代码
sql_mode
show variables like "%mode%";

设置严格模式

  1. 命令行模式:临时修改

set global sql_mode='STRICT_TRANS_TABLES'; # 不区分大小写

  1. 配置文件修改:永久修改

研究定长和不定长

sql 复制代码
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');

验证是否补充了空格

sql 复制代码
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'; # 不区分大小写

  1. 配置文件修改:永久修改

4、日期

date datetime time year

年月日 年月日 十分秒 十分秒 年

sql 复制代码
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、枚举

多选一

sql 复制代码
# enum
create table t15 (id int, hobby enum('read', 'music', 'tangtou', 'xijio'));
insert into t15 values(1, 'read');

多选多:包含多选一

sql 复制代码
# set
create table t16 (id int, hobby set('read', 'music', 'tangtou', 'xijio'));
insert into t16 values(2, 'read,music1');
相关推荐
butiehua020222 分钟前
MySQL 优化方案大全
数据库·mysql
斯内科23 分钟前
Python进阶(1):正则表达式
python·正则表达式
爱睡觉的咋23 分钟前
error: RPC failed; HTTP 408 curl 22 The requested URL returned error: 408
python·debug
独行soc25 分钟前
2025年常见渗透测试面试题- 应急响应(题目+回答)
java·前端·数据库·python·安全·面试·csrf
程序员总部1 小时前
Python中如何用正则表达式精准匹配IP地址?
python·tcp/ip·正则表达式
tt5555555555551 小时前
python文件打包无法导入ultralytics模块
开发语言·pytorch·笔记·python
进取星辰1 小时前
PyTorch 深度学习实战(36):混合精度训练与梯度缩放
pytorch·python·深度学习
qq_214782612 小时前
Python Orange:托拉拽玩转机器学习、数据挖掘!
开发语言·python·数据分析
何似在人间5752 小时前
Seata 支持哪些模式的分布式事务?
分布式·mysql·seata·分布式事务
DWQY2 小时前
pytorch查询字典、列表维度
人工智能·pytorch·python