首页 > 编程语言 >python学习Day45

python学习Day45

时间:2022-08-15 22:14:55浏览次数:38  
标签:python create 学习 int 字段 MySQL table Day45 id

Day 45

今日内容概要

  • 字符编码与配置文件
  • 数据库存储引擎
  • 创建表的完整语法
  • MySQL字段类型—整型
  • MySQL字段类型—浮点型
  • MySQL字段类型—字符型
  • 数字的含义
  • MySQL字段类型—枚举与集合
  • MySQL字段类型—日期类型
  • MySQL字段约束条件

今日内容详细

1.字符编码与配置文件
\s  #查看数据库基本信息(用户、字符编码)

由于刚下载的5.6版本的字符编码不统一,所以需要统一改为utf8:

1.MySQL文件中 my-default.ini #windows下MySQL默认配置文件
	再复制一份该文件,重命名为my.ini
2.清空里面内容 添加字符编码相关配置(百度查看)
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8  
   #如果配置文件涉及到mysqld相关的配置修改,那必须重启服务端才能生效
   #搜索【服务】,找到MySQL重新启动即可
   #需注意修改编码前的所有数据编码未修改

"""
偷懒操作:每次登录还要输root 密码 太麻烦,所以可以在配置文件中的[mysql]下写好用户名和密码,这样以后登录的时候直接打mysql就可以登录
    [mysql]
    default-character-set=utf8 
    user='root'
    password='123'
"""
2.数据库存储引擎
存储引擎可以理解为就是针对相同的数据采用不同的存取策略

show engines;  # 查看所有的存储引擎

需要掌握的存储引擎:
1.MyISAM
	MySQL5.5及之前版本默认的存储引擎
	存取数据的速度快 但是功能较少 安全性较低
2.InnoDB(*必须记住)
	MySQL5.5之后版本默认的存储引擎
 	存取数据的速度没有MyISAM快 但是支持事务、行锁、外键等诸多功能 
	安全性较高
3.Memory
	基于内存的存储引擎 存取数据极快 但是断电立刻丢失
4.BlackHole
	黑洞 任何写进去的数据都会立刻丢失 类似于垃圾站
    
    
ps:MySQL中默认是大小写不敏感的(忽略大小写)
# 不同存储引擎之间底层文件的区别
create table t1(id int) engine=innodb;
create table t2(id int) engine=myisam;
create table t3(id int) engine=memory;
create table t4(id int) engine=blackhole;
#ps:windows cmd终端鼠标右键的意思就是粘贴
  
data目录下该库生成了以下文件:
    InnoDB
        .frm	表结构
        .ibd	表数据、表索引(加快数据查询)
    MyISAM
        .frm	表结构
        .MYD	表数据
        .MYI	表索引(加快数据查询)
    Memory
        .frm	表结构
    BlackHole
        .frm    表结构
    
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);#重启数据库Memory中的数据丢失
insert into t4 values(1); #无法把数据存入Blackhole中
3.创建表的完整语法
create table 表名(
	字段名1 字段类型(数字) 约束条件,
	字段名2 字段类型(数字) 约束条件,
	字段名3 字段类型(数字) 约束条件
)engine=存储引擎;


1.字段名和字段类型是必须的('至少写一个')
2.数字跟约束条件是可选的(可有可无)
3.约束条件可以写多个 '空格隔开'即可
4.最后一个字段的'结尾千万不能加逗号'
4.MySQL字段类型—整型
								有负号				没有负号
tinyint			1bytes			-128~127           0~255
smallint		2bytes							
int			    4bytes		   
bigint			8bytes

1.验证整型是否自带负号
	create table t6(id tinyint);
 	insert into t6 values(-129),(256);
 	ps:发现自动填写为两个边界值 数据失真 没有实际意义
#上述所有的整型类型默认都会带有负号,少一位
    
2.自定义移除负号
	'''unsigned 约束条件之一 意思是不需要负号'''
	create table t7(id tinyint unsigned);
	insert into t7 values(-129),(256);
 
"""
插入的数据值超出了数据类型的范围 不应该让其插入并自动修改 没有意义
数据库应该直接报错(这个特性其实是有的 只是被我们改了>>>:配置文件)

方式1:命令临时修改
	set session sql_mode='strict_trans_tables'  当前客户端操作界面有效
	set global sql_mode='STRICT_TRANS_TABLES'  服务端不重启永久有效
方式2:配置文件永久修改
	[mysqld]
	sql_mode='STRICT_TRANS_TABLES'
"""
5.MySQL字段类型—浮点型
    float
    double
    decimal
三者都可以存储浮点型数据 但是各自的精确度不一致

使用方式
	float(255,30)  # 第一个数表示总共多少位 第二个数表示小数占多少位
 	double(255,30)
 	decimal(65,30)
 
验证精确度问题
	create table t8(id float(255,30));
 	create table t9(id double(255,30));
 	create table t10(id decimal(65,30));
 	insert into t8 values(1.11111111111111111111111111111);
	insert into t9 values(1.11111111111111111111111111111);
 	insert into t10 values(1.11111111111111111111111111111);

float < double < decimal
"""
一般情况下float足够使用了
如果想追求非常完美的精确度 可以使用字符串来代替
"""
6.MySQL字段类型—字符型
1)char 定长
	char(4)  
		最大只能存储四个字符 如果超过范围则直接报错
		如果不超出范围 则用空格填充至四个字符
        
2)varchar 变长
	varchar(4)
		最大只能存储四个字符 如果超过范围则直接报错
		如果不超出范围 则有几位就存几位

验证两者的区别	
	create table t11(id int, name char(4));
 	create table t12(id int, name varchar(4));
    
1.经过验证 超出范围两者都会报错
	注意sql_mode='strict_trans_tables'
2.验证定长和变长特性
	char_length()  # 统计字段数据的长度
"""
默认情况下char在存储的时候针对没有满足固定位数的字符会自动填充空格
然后在读取的时候又会自动将填充的空格移除 如果想取消该机制 需要sql_mode
	set global sql_mode='strict_trans_tables,pad_char_to_full_length';
上述命令是替换 不是新增 所以之前的配置也要写上
"""
3.char VS varchar哪个好?
	char
    	整存整取 速度快
  		浪费存储空间
  	varchar
		节省存储空间
		存取数据的速度慢于char
 	"""
 	char(4)
 		a   son jacktom lili
 	varchar(4)
 		1bytes+a1bytes+son1bytes+jack1bytes+tom1bytes+lili
 		存取数据都需要操作报头(耗时)
 	
 	存储人的姓名>>>:varchar
 	"""
	两者使用频率都很高根据实际应用决定 现在默认很多时候是varchar
7.数字的含义
数字大部分情况下都是用来限制字段的存储长度 但是整型除外!!!
	不是用来限制存储的长度 而是最少展示的长度

create table t13(id int(3)); 
create table t14(id int(3) zerofill);#zerofill约束条件,不足的用0填充

总结
	以后涉及到整型字段的定义 类型后面不需要加括号写数字 除非有业务需求必须固定位数(快递单号等)
    eg:
    	00000000013
    	00123123031
8.MySQL字段类型—枚举与集合
1)枚举 enum
	多选一
    	eg:性别(男 女 其他)

       create table t15(
          id int,
          name varchar(32),
          gender enum('male','female','others')#限制只能录这三个其中一个
       );
2)集合 set
	多选多(包含多选一)
    	eg:爱好(唱 跳 rap)
            
        create table t16(
            id int,
            name varchar(32),
            hobbies set('read','run','music','rap')#限制可以录单个或多个
        );
9.MySQL字段类型—日期类型
date		 年月日
datetime	 年月日时分秒
time		 时分秒
year		 年份

create table t17(
	id int,
	name varchar(32),
 	birth date,
  	reg_time datetime,
 	study_time time,
 	join_time year
);
insert into t17 values(1,'jason','2022-11-11','2000-11-11 11:11:11','11:11:11','1995');
10.MySQL字段约束条件
"""
insert into 表名 vlaues()  # 默认按照创建表的字段顺序添加
insert into 表名(字段) vlaues()  # 可以自定义字段顺序
"""
1.unsigned	无负号
	id int unsigned
2.zerofill	超出范围用0填充
	id int zerofill
3.not null	非空(该字段必须给一个值)
	name varchar(32) not null
4.default 	默认值
	name varchar(32) default 'jason'
5.unique	唯一值
	id int unique     单列唯一
 	
 	host varchar(32)
 	port int		
	unique(host,port) 联合唯一(host和port合在一起必须唯一)

作业

1.整理今日内容及博客
2.练习SQL语句
	课上所有的SQL全部手敲至少三遍
3.自行查阅MySQL还有哪些字段类型

标签:python,create,学习,int,字段,MySQL,table,Day45,id
From: https://www.cnblogs.com/Oreoxx/p/16589816.html

相关文章

  • 抖音学习
    书单号制作教程1、如何截图-放大2、书单素材-星空壁纸(950228)3、通过搜狗输入法完成文字的输入()4、特效制作--特效(纹理、投影) 贴纸(素描画书、素描画笔)5、画中......
  • 2022-08-15 第八组 卢睿 学习心得
    目录Mysql数据库数据库Mysql基本操作表SQL语言SQL分类DCL(数据库控制语言)创建用户给用户授权撤销授权查看权限删除用户DDL(数据定义语言)创建表数据类型整型浮点型字符串类型......
  • 2022-08-15 第五组 赖哲栋 学习笔记
    Mysql数据库数据库【暗战数据结构来组织、存储和管理数据的仓库】。是一个长期存储在计算机内的,有组织的、可共享的、统一管理的大量数据的集合程序员的工作就是对数据......
  • FFT学习笔记
    -1.前置知识基础的复数知识。0.什么是多项式乘法众所周知,多项式本质是一种特殊的函数,可以表示为自变量的若干次幂之和,即\[F(x)=\sum_{i=0}c_i\cdotx^i\]其中\(c_i......
  • 长春大学 第二组刘禹彤 学习笔记
    打卡32天###学习内容Mysql数据库数据库数据库【按照数据结构来组织,存储和管理数据的仓库】,是一个长期存储在计算机内的,有组织的,可共享的,统一管理大量的数据的集合数......
  • 2022-8-15MySQL的学习
    MySQL数据库数据库数据库【按照数据结构来组织来存储和管理数据的仓库】。是一个长期存储在计算机内的有组织的可共享的,统一管理的大量数据的集合。数据对于公司来......
  • python爬取ajax
    importrequestsurl='https://api.bilibili.com/x/v2/reply/main?csrf=056718067a9e03b351569ee0294e4a1e&mode=3&next=2&oid=813963991&plat=1&type=1'header={......
  • 2022-8-15 第一组 (≥▽≤) 学习笔记
    目录1.MySQL数据库1.1数据库1.2MySQL1.3基本操作1.4表2.SQL语言2.1SQL语句的分类2.1.1DCL(数据控制语言)给用户授权撤销授权查看指定用户授权删除用户2.1.2DDL(数据......
  • python教程:一个 list 使用 for 遍历,边循环边删除的问题
    今天由于要对一个list数据类型写一个循环删除的程序(这是小编第一次对于list操作),但发现一个奇异问题,来,我们来看看代码跟效果:#初始化一个list列表,为了下边的方便比较......
  • Python3 virtual environment 在 vscode 的实践
    1、虚拟环境实际上就是将python解释器+项目中可能用的的modules,统一放在虚拟环境对应的目录2、activate虚拟环境,只是保证相关module下载到对应文件夹中,而不是说pyth......