5.4python笔记
作者:互联网
MySQL字符编码配置及字段
字符编码与配置文件
#查看MySQL默认字符编码
如果是5.x系列,显示的编码又多种>>>:latin1、gbk
如果是8.x系列,显示的统一是>>>:utf8mb4(utf8优化版本,支持存储表情)
统一字符编码
# MySQL安装列表中找到配置文件
my-default.ini # 配置文件
# 更改配置文件
步骤1:拷贝一份该配置文件并修改名称为my.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:保存并重启服务端即可生效
net stop mysql # 关闭服务端
net start mysql # 打开服务端
存储引擎
可以理解为处理数据的不同方式,不同的存储引擎存储的特点各不相同;
#查看存储引擎
show engines;
#需要了解的引擎
MyISAM:
5.1之前版本MySQL默认的存储引擎;
特点:存取数据速度快,但功能很少,安全性较低;
InnoDB:
5.1之后版本MySQL”默认“的存储引擎;
特点:有诸多功能,安全性较高,但存取速度没有MyISAM快;
BlackHole:
任何写入的数据都会立刻消失(类似于垃圾回收站);
Memory:
以内存作为数据存储地,速度快但是断电立刻丢失;
创建表的完整语法
create table 表名(
字段名1 字段类型(数字) 约束条件,
字段名2 字段类型(数字) 约束条件,
字段名3 字段类型(数字) 约束条件
);
'''
1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件可以写多个 空格隔开即可
字段名1 字段类型(数字) 约束条件1 约束条件2 约束条件3
4.最后一行字段结尾不能加逗号
极其容易被忽略!!!
'''
字段类型之整型:
tinyint 1bytes 小整数值
smallint 2bytes 大整数值
int 4bytes 大整数值
bigint 8bytes 极大整数值
浮点型
float 4个字节 单精度浮点数值
double 8个字节 双精度浮点数值
decimal 对DECIMAL(M,D),如果M>D,为M+2字节否则为D+2字节 精确小数值
上述浮点型从上往下精确度越来越高
float(255,30) 总共255位 小数位占30位
double(255,30) 总共255位 小数位占30位
decimal(65,30) 总共65位 小数位占30位
对于声明语法 DECIMAL(M,D) ,自变量的值范围如下:
M是最大位数(精度),范围是1到65。可不指定,默认值是10。
D是小数点右边的位数(小数位)。范围是0到30,并且不能大于M,可不指定,默认值是0。
例如字段 salary DECIMAL(5,2),能够存储具有五位数字和两位小数的任何值,因此可以存储在salary列中
的值的范围是从-999.99到999.99。
字符类型
char 和 varchar 是最常用到的。char 类型是定长的,MySQL 总是根据定义的字符串长度分配足够的空间
当保存 char 值时,在它们的右边填充空格以达到指定的长度,当检索到 char 值时,尾部的空格被删除掉。varchar 类型用于存储可变长字符串,存储时,如果字符没有达到定义的位数,也不会在后面补空格。如果字符超出了定义的位数,会报错。
char(M) 与 varchar(M) 中的的 M 表示保存的最大字符数,单个字母、数字、中文等都是占用一个字符。
# 工作中使用char还是varchar?
char
整存整取,速度快;但会造成一定的资源浪费;
varchar
节省存储空间;取数据速度没有char块且不知道数据的精确长度
'''
varchar在存数据的时候会生成一个1bytes的报头 记录数据长度
varchar在取数据的时候先会读取1bytes的报头 从中获取真实数据长度
1bytesjason1bytes+kevin1bytes+tony
'''
使用场景>>>:
针对统一中国人的姓名,应该采取那个类型?
>>> varchar
规模较小,数据量相对固定的字典?
>>> char
字段类型括号内数字的含义
(1)字段类型括号内的数字大部分情况下是用来限制存储的长度;
(2)但是在整型中并不是用来限制长度,而是用来控制展示长度;
# 验证int类型括号内数字的作用
create table t12(id int(3));
insert into t12 values(1111); # 不会报错
select * from t12; # id 1111
create table t13(id int(3) zerofill); # 使用约束条件zerofill>>>:数据不够用0填充
insert into t13 values(1),(1111);
select * from t13; # id 001 1111
字段类型之枚举与集合
#枚举:
多选一
作用:给某字段设置指定选项,针对某字段只能添加指定的选项
create table t14(gender enum('male','female','others'));
insert into t14 values('jason'); # 报错,Data truncated for column 'gender' at row 1
#集合:
多选多(也可多选一)
作用:给某字段设置多个可选选项,同时可以选取多个或一个
create table t15(name varchar(32),
hobby set('篮球','足球','排球'));
insert into t15 values('jason','篮球,排球'); # 给某字段添加多个值
日期类型
date 年月日
datetime 年月日时分秒
time 时分秒
year 年
# 创建带日期字段的表
create table t16(
id int,
name varchar(32),
reg_time datetime,
birth date,
study_time time,
join_time year
);
# 针对时间数据一般都是通过代码自动获取并添加,我们可以手动模拟
insert into t16 values(1,'jason','2000-11-11','2002-01-21','11:11:11','2015');
# 1 | jason | 2000-11-11 00:00:00 | 2002-01-21 | 11:11:11 | 2015
约束条件
#无需正负号
unsigned
#零填充
zerofill
#非空
not null
#默认值
default
create table t19(id int,name varchar(32) default '1111');
插入数据时该字段给了值,就用输入的值,没给值则使用默认值。
#唯一值
unique
create table t1(
id int unique,
);
该字段的值是唯一的,不可重复。
'''多列唯一:多个字段下对应的数据组合到一起的结果不能重复 是唯一的'''
create table t1(
id int,
name varchar(32),
unique(id,name)
);
id和name组合在一起的值唯一。
(1,'张三')(1,'李四') (2,'张三')可以
#主键
primary key(非空且唯一)
create table t1(
id int primary key,
name varchar(32)
);
将id字段设置为主键,那么id不能为空且值不能重复。
#自增:
auto_increment 自动增加
专门配合主键一起使用 用户以后在添加数据的时候就不需要自己记忆主键值
create table t1(
id int primary key auto_increment,
name varchar(32)
);
之后我们添加数据就不需要写id的值,它会自动增长。
标签:11,varchar,python,create,笔记,int,table,5.4,id 来源: https://www.cnblogs.com/zq0408/p/16325413.html