南京做网站的有哪些,wordpress去掉图片,秦皇岛市海港区建设局网站,东莞外贸推广文章目录 MySQL数据库一、字符编码与配置文件二、存储引擎1.如何查看存储引擎2.重要的存储引擎MyISAMInnoDBMEMORYBlackHole演示 三、创建表的完善语法四、字段类型之整型整型分类及存储范围 五、字段类型之浮点型六、字段类型之字符类型1.研究两者区别2.严格模式3.研究定长、不… 文章目录 MySQL数据库一、字符编码与配置文件二、存储引擎1.如何查看存储引擎2.重要的存储引擎MyISAMInnoDBMEMORYBlackHole演示 三、创建表的完善语法四、字段类型之整型整型分类及存储范围 五、字段类型之浮点型六、字段类型之字符类型1.研究两者区别2.严格模式3.研究定长、不定长、是否补充空格4.char VS varchar 七、数字的含义八、字段类型之枚举与集合九、字段类型之日期类型 MySQL数据库
一、字符编码与配置文件 \s 查看数据库基本信息show engines 查看所有的存储引擎char_length() 统计字段数据长度以下是WIN版本我们MySQL刚安装完 发现创建表记录的时候写入字符串Varchar 查看结果乱码解决方法如下拷贝my-default.ini # windows下MySQL默认的配置文件拷贝上述文件并且重命名my.ini #(随机取名 看见一大堆英文不要慌)由于5.6版本编码不统一 会造成乱码 我们需要统一修改: Utf8[mysqld] # Mysqld 服务端 character-set-serverutf8 # 编码改成utf8 也可以utf8mb4(mb4表示可以显示表情包)collation-serverutf8_general_ci[client] # 客户端编码改成utf8default-character-setutf8[mysql] # mysql客户端端编码改成utf8default-character-setutf8userroot # 为了每次登录不需要输入密码passoword123 # 直接写入配置文件 输入mysql即可直接使用注意如果配置文件涉及到mysqld相关的配置修改 那么需要重启服务端才可以生效以下是MAC版本我们MySQL刚安装完 默认是全部都有加载好的 不需要去配置文件如果需要配置的话 只需要在 /etc/ 文件夹里面 创建一个文件后缀名cnf 内容跟以上win一样(注意该文件权限不能太高 写完之后改成只读 文本里面不要有空格 重启mysql即可)二、存储引擎 存储引擎我们可以理解成针对相同的数据采用不同的存取策略(show engines;) 1.如何查看存储引擎 使用show engines;命令即可查看 2.重要的存储引擎
MyISAM 它是MySQL5.5版本及之前的版本默认的存储引擎它的存取数据的速度很快但是功能较少(不支持事务支持表锁)数据安全性较低 InnoDB 它是MySQL5.6及之后的版本默认的存储引擎存取数的速度没有MyISAM快但是支持事务、行锁、外键等诸多功能并且安全性较高 MEMORY 它是基于内存存储的存取数据极快但是有着断电数据丢失、重启服务端数据就丢失的特性(基于内存的都是如此) BlackHole 黑洞任何写进去的数据都会立刻删除类似于垃圾站 演示 ps:MySQL中默认是大小写不敏感的(忽略大小写)格式create table t1(id int)engineMyISAM;create table t2(id int)engineInnoDB;create table t3(id int)engineMEMORY;create table t4(id int)engineBlackHole;ps:windows cmd终端鼠标右键的意思就是粘贴对于不同的存储引擎硬盘中保存的文件个数也是不一样的另外不同版本的数据库里面的文件后缀也不一样向5.6版本的存储表结构文件后缀则是.frm(以下以8.0的版本为准)MyISAM3个文件.sdi 存储表结构.MYD 存储的是表数据.MYI 存索引(当成是字典的目录加快查询速度)InnoDB1个文件在8.0版本中InnoDB不显示表结构文件,在5.6版本中显示#.frm 存储表结构 (5.6版本中的显示).ibd 存储数据和索引MEMORY1个文件.sdi 存储表结构(断电或重启丢失数据)BlackHole1个文件.sdi 存储表结构(放进去的数据立马丢失)三、创建表的完善语法 create table 库名.表名(字段名 字段类型(数字) 约束条件)engine存储引擎;id int 0~255 default MyISAM1.字段名和字段类型是必须的(至少写一个)2.数字跟约束条件是可选(可有可无) # not_null default3.约束条件可以写多个 空格隔开即可4.最后一个字段的结尾千万不能加逗号四、字段类型之整型
整型分类及存储范围 验证整型默认情况下是否携带正负号create table ts1(id tinyint);insert into ts1 values(-129),(256)发现自动填写两个边界值数据失真没有实际意义上述所有的整型类型默认都会带有负号自定义移除负号unsigned 约束条件之一 意思是不需要负号create table ts1(id tinyint unsigned);insert into ts1 values(-129)(256);五、字段类型之浮点型 以下三者都可以存储浮点型数据但是各自的精确度不一致float double decimal folat(255,30) # 总位数255位小数点后占60位double(255,30) # 总位数255位小数点后占60位decimal(65,30) # 总位数65位小数点后占30位create table ts4(id float(255,30));create table ts5(id double(255,30));create table ts6(id decimal(65,30));insert into ts4 values(1.11111111111111);insert into ts5 values(1.11111111111111);insert into ts6 values(1.11111111111111);三者的精确度不一样decimal double float(精确到7位了)六、字段类型之字符类型
1.研究两者区别 char 定长字符串中括号中得数字代表的就是字符串所存储的范围大小char(4)最大只能存储四个字符如果超出范围则直接报错如果不超出范围则用空格填充至四个字符varchar 变长varchar(4)最大只能存储四个字符如果超过范围则直接报错如果不超出范围则有几位数就存几位验证两者的区别create table ts7(id int ,name char(4));create table ts8(id int, name varchar(4));结果验证 超出范围两者都会报错注意sql_modestrict_trans_tables;如果你想超出范围之后直接报错需要设置严格模式2.严格模式 插入的数据值超出了数据类型的范围不应该让其插入并自动修改没有意义数据库应该直接报错(这个特性其实是有的只是被我们改掉了:配置文件)方式1命令临时修改set session sql_modestrict_trans_tables;在当前客户端操作界面有效set global sql_modestrict_trans_tables;在当前服务端有效(服务端不重启永久有效)方式2配置文件永久修改[mysqld]sql_modeSTRICT_TRANS_TABLES不区分大小写3.研究定长、不定长、是否补充空格 验证定长和变长特性cahr_length() # 统计字段数据的长度create table ts7(id int ,name char(4));create table ts8(id int, name varchar(4));insert into ts7 values(1,an);insert into ts8 values(2,an);验证是否补充了空格# ps:char_length()获取字段存储的数据长度select char_length(name) from ts7;select char_length(name) from ts8;默认情况下MySQL针对char的存储会自动填充空格和删除空格然后再读取的时候优惠自动将填充的空格移除如果想取消该机制需要设置严格模式。就可以看到填充了空格set global sql_modestrict_trans_tables,pad_char_to_full_length; 不区分大小写上述目录是替换不是新增所以之前的配置也要写上4.char VS varchar char 优势整存整取 速度快劣势浪费存储空间varchar优势节省存储空间劣势存取数据的速度相较char慢char与varchar的使用需要结合具体应用场景七、数字的含义 数字大部分情况下都是用来限制字段的存储长度 但是整型除外不是用来限制存储的长度 而是展示的长度create table t13(id int(3)); create table t14(id int(3) zerofill); # zerofill 表示如果数据没有填写超过三位则以0补充支三位总结以后涉及到整型字段的定义 类型后面不需要加括号写数字 除非有业务需求必须固定位数八、字段类型之枚举与集合 枚举多选一eg:性别(男 女 其他)create table ts9(id int,name varchar(32),gender enum(male,female,others));只能选择里面的内容如果没有的则报错insert into ts9 values(1,jack,boy);insert into ts9 values(1,jack,male);集合多选多(包含多选一)eg爱好(看小说音乐篮球)create table ts10(id int,name varchar(32),hobby set(read,music,basketabll));只能选择里面的内容如果没有的则报错insert into ts10 values(1,jack,jump);insert into ts10 values(1,jack,music);insert into ts10 values(2,tom,read,music);九、字段类型之日期类型 datetime date time year年月日时分秒 年月日 时分秒 年create table ts11(id int,reg_time date,reg1_time datetime,reg2_time time,reg3_time year);insert into ts11 values(1,2023-10-1,2023-11-11 11:11:11,11:11:11,2023);ps:以后涉及到日期相关字段一般都是系统自动回去无需我们可以操作