- A+
所属分类:.NET技术
字符编码与配置文件
# 由于5.6版本编码不统一 会造成乱码 我们需要把它统一修改成》:utf8 1.MySQL里的my-default.ini是 windows下MySQL默认的配置文件 2.拷贝文件并重新命名为my.ini 3.添加字符编码相关的配置 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8 ps:由于配置文件涉及到了mysql的配置修改 需要重启服务端才可以生效
相关配置:
直接mysql登录:
查看修改之后的配置:
存储引擎
# 存储引擎就是针对相同的数据采取不同的策略 1.MYISAM : MySQL5.5之前版本默认的存储引擎 特点是:存取数据的速度快 但是功能较少 安全性较低 2:INNODB: MySQL5.5之后版本默认的存储引擎 特点是:存取数据的速度没有myisam快,但是支持事务,行锁,外键等诸多功能 安全性较高 3:memory: 基于内存的存储引擎,存取数据极快,但是断电立刻丢失数据 4:blackhole: 黑洞,任何写进去的数据都会立刻丢失 类似于垃圾站 ps:MySQL对于大小写不敏感 可以任意写
引擎区别
# 先创建表 分别用不同的引擎 create table t1(id int) engine=myisam create table t2(id int) engine=innodb create table t3(id int) engine=memory create table t4(id int) engine=blackhole insert into t1 values(1); insert into t2 values(2); insert into t3 values(3); insert into t4 values(4); ------------ myisam .frm 表结构 .MYD 表数据 .MYI 表索引(加快数据查询) innodb .frm 表结构 .ibd 表数据,表索引(加快数据查询) memory .frm 表结构 (重新启动MySQLt3的数据就没有了) blackhole .frm 表结构
创建表的完整语法
create table 表名( 字段名1 字段类型(数字) 约束条件, 字段名2 字段类型(数字) 约束条件, 字段名3 字段类型(数字) 约束条件 )engine=存储引擎 1.字段名和字段类型是必须的(至少写一个) 2.数字约束条件是可选的 3.约束条件可以写多个 空格隔开即可 4.最后一个字段的结尾千万不能加逗号
数字的含义
char(4) 括号里的数字是用来限制数据的长度的 int(4)整型后面的数字是用来展示数据的长度的 create table s1(id int(3) zerofill); insert into s1 values(1),(12); 总结:涉及到整型字段的定义 类型后面不需要加括号加数字 除非有固定业务需求
字段类型
整型
1.tinyint 1bytes 2.smallint 2bytes 3.int 4bytes 4.bigint 8bytes 1.验证整型是否自带负号 create table a1(id tinyint); inster into a1 values(-129),(256); 上述所有的整型类型默认都会自带负号 2.自定义移除符号 create table a2(id tinyint unsigned) insert into a2 values(-129),(256); usigned 是约束条件之一 意思是不需要负号 ps:由于给MySQL配置了属性sql_mode=STRICT_TRANS_TABLES 以上方法超出范围都无法执行
浮点型
1.float 2.double 3.decimal # 三者都可以存储浮点型数据 但是各自的精确度不一致 float(300,90) # 第一个数表示总共有多少位数 第二位数表示小数占多少位 double(300,90) decimal(300,90) 验证精确度问题 create table a3(id float(255,30)); create table a4(id double(255,30)); create table a5(id decimal(255,30)); insert into a3 values(1.11111111111); insert into a4 values(1.11111111111); insert into a5 values(1.11111111111); 总结:float<double<decimal 一般使用float 就可以了 ,如果想要输入什么得到什么,可以使用字符串
验证结果:
字符类型
char 定长 char(4): 最大只能存储四个字符 如果超出范围直接报错 如果不超出范围 则用空格填充至四个字符 varchar 可变长字符串 varchar(4):最大只能存储四个字符 如果超出范围直接报错 如果不超出范围 则有几位就存几位 验证两者的区别; create table d1(id int,name char(4)); create table d2(id int,name varchar(4)); 结果如下图: 1.超出范围都会报错! 2.验证定长和变长特性 char_length() # 统计字段数据的长度 # 默认情况下char在存储的时候会自动将没有满足固定位数的空格填充,在读取的时候又会将空格移除 如果想取消该机制 需要sql_mode set global sql_mode='strict_trans_tables,pad_char_to_full_length'; 这个命令是替换不是新增 char 优点是整存整取 速度快 , 缺点是浪费存储空间 varchar 节省存储空间 存取速度要慢于char 总结: 知道具体数据长度的时候用char、不知道具体数据长度的时候用varchar 两者使用频率都很高 现在默认是varchar
枚举与集合
枚举用于多选一: create table z1(id int,name varchar(32),gender enum('male','female')); insert into z1 values(1,'summer','female') # gender参数只能选择括号内的一个 ,选择其他的会报错 集合用于多选多(包含多选一) create table z2(id int,name varchar(32),hobby set('read','rap','dance','run')); insert into z2 values(1,'summer','read,dance,run')
日期类型
date 年月日 datetime 年月日时分秒 time 时分秒 year 年份 create table w1(id int,name varchar(32),birth date,join_time year); insert into w1 values(1,'summer','2004-6-19','2022');
字段约束条件
1.unsigend 无负号 id int unsigend 2.zerofill 零填充 id int zerofill 3.not null 非空 name varchar(32) not null 4.default 默认值 name varchar(32) default 'summer' 5.unique 唯一值 id int unique 单列唯一 port int unique(host,port)