编程语言
首页 > 编程语言> > 5.4python笔记

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