• 字符编码与配置文件

  • 数据库存储引擎

  • 创建表的完整语法

  • MySQL字段基本数据类型

  • MySQL字段常见约束条件

字符编码与配置文件

# 查看MySQL相关信息
	\s  
    当前用户、版本、编码、端口
    
MySQL5.6及之前的版本编码需要人为统一 之后的版本已经全部默认统一

# 如果想要永久修改编码配置 需要操作配置文件
默认的配置文件是my-default.ini

步骤1:拷贝一份 my-default.ini 配置文件,并修改名称为my.ini

步骤2:清空 my.ini 文件内的内容
    
步骤3:添加固定配置信息
    [mysqld]
        character-set-server=utf8mb4
        collation-server=utf8mb4_general_ci
    [client]
        default-character-set=utf8mb4
    [mysql]
        default-character-set=utf8mb4
        
步骤4:保存并重启服务端就可以了
    net stop mysql
    net start mysql

    
ps:
    1.utf8mb4能够存储表情 功能更强大
    2.utf8与utf-8是有区别的 MySQL中只有utf8
修改了配置文件中关于[mysqld]的配置 需要重启服务端
"""
利用配置文件我们可以偷懒
	将管理员登录的账号密码直接写在配置文件中 之后使用mysql登录即可
	[mysql]
		user='root'
		password=123
"""

image

数据库存储引擎

# 存储引擎含义
	数据库针对数据采取的多种存取方式
    
# 查看常见的存储引擎方式
	show engines;
    
# 需要了解的引擎
	MyISAM
    	MySQL5.5之前默认的存储引擎
        存取数据的速度快 但是功能较少 安全性低
        
	InnoDB
    	MySQL5.5之后默认的存储引擎
        支持事务、行锁、外键等操作 存取速度没有MyISAM快 但是安全性更高
        
	Memory
    	基于内存存取数据 仅用于临时表数据存取
        
	BlackHole
    	任何写进去的数据都会立刻消失
        
了解不同存储引擎底层文件个数
    create database db2;
    use db2;
    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;
    """
    1.innodb两个文件
        .frm	表结构
        .ibd	表数据(表索引)

    2.myisam三个文件
        .frm	表结构
        .MYD	表数据
        .MYI	表索引

    3.memory一个文件
        .frm	表结构

    4.balckhole一个文件
        .frm	表结构
    """
    insert into t1 values(1);
    insert into t2 values(1);
    insert into t3 values(1);
    insert into t4 values(1);

ps:MySQL默认忽略大小写

创建表的完整语法

create table 表名(
	字段名 字段类型(数字) 约束条件,
	字段名 字段类型(数字) 约束条件,
 	字段名 字段类型(数字) 约束条件
);
1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件也可以写多个 空格隔开即可
4.最后一行结尾不能加逗号
ps:编写SQL语句报错之后不要慌 仔细查看提示 会很快解决 
    	near ')' at line 7

字段类型之整型

tinyint		1bytes		正负号(占1bit)
smallint	2bytes		正负号(占1bit)
int		4bytes		正负号(占1bit)
bigint		8bytes		正负号(占1bit)

# 注意事项
1、需要考虑正负数的问题, 如果需要存储负数则需要占一个比特位
2、手机号如果使用整型存储, 需要使用bigint才可以
"""
 工作小技巧:
   有时候看似需要使用数字类型存储的数据其实可能使用的是字符串、
     应为字符串可以解决不同语言对数字不精确的缺陷
"""

验证整型默认是否携带正负号
	create table t5(id tinyint);
	insert into t5 values(-129),(128);
结果是-128和127 也就意味着默认自带正负号
	
我们也可以取消正负号
	create table t6(id tinyint unsigned);
 	insert into t6 values(-129),(128),(1000);

image

严格模式

当我们在使用数据库存储数据的时候 如果数据不符合规范 应该直接报错而不是擅自修改数据 这样会导致失真(没有实际意义)
	正常都应该报错 但是我们之前不小心改了配置文件
    
show variables like '%mode%';

1.临时修改
	set session sql_mode='strict_trans_tables';
    	在当前客户端有效
 	set global sql_mode='strict_trans_tables';
    	在当前服务端有效
        
2.永久修改
	直接修改配置文件

字段类型之浮点型

float(255,30) 
double
decimal
上述浮点型从上往下精确度越来越高
float(m, d)	    4字节,单精度浮点型,m总个数,d小数位
float(255,30)   总共255位 小数位占30位

double(m, d)	8字节,双精度浮点型,m总个数,d小数位
double(255,30)  总共255位 小数位占30位

decimal(m, d)	decimal是存储为字符串的浮点数
decimal(65,30)  总共65位 小数位占30位

# 实操
create table t7(id float(255,30));
create table t8(id double(255,30));
create table t9(id decimal(65,30));

insert into t7 values(1.111111111111111);
insert into t8 values(1.111111111111111);
insert into t9 values(1.111111111111111);

"""
 使用范围:
   正常业务精确度只要小数点三四位的样子的时候,使用float就可以
   如果是科研业务,精确度要求极高,那么就使用decimal
"""
三者的核心区别在于精确度不同
	float<	double  < decimal

image

字段类型之字符类型

# 定长
char

char(4)  最多存储四个字符 超出就报错 不够四个空格填充至四个

# 变长
varchar

varchar(4) 最多存储四个字符 超出就报错 不够则有几位存几位

create table t10(id int, name char(4));
create table t11(id int, name varchar(4));
insert into t10 values(1, 'jason');
insert into t11 values(1, 'jason');

"""
 获取字段数据的长度
 char_length() 
 这个方法无法直接获取到定长的真实长度,因为MySQL在存数据的时候会自动填充空格在取数据的时候又会自动移除空格

想要让MySQL在取数据的时候不自动移除空格
set global sql_mode='strict_trans_tables,pad_char_to_full_length';
"""

# 工作使用
char 
整存争取 速度快(就是会造成一定存储空间的浪费)
可能会造成黏包形式的现象
'''
 owenkevinmary tom
'''
varchar
 节省存储空间
 存取数据的速度没有char快
 '''
  varchar在存数据的时候会生成一个1bytes的报头 记录数据长度
  varchar在取数据的时候先会读取1bytes的报头 从中获取真实数据长度
 	  1bytes+owen1bytes+kevin1bytes+mary 1bytes+tom
  '''
"""
 两者都有使用场景
  针对统一中国人的姓名,应该采取 ————  varchar
  规模较小,数据量相对固定的字典 ———— char
  char与varchar的使用需要结合具体应用场景
  很多时候字段类型的选取和命名都会在邮件中标明
"""

数字的含义

字段类型括号内的数字大部分情况下是用来限制存储的长度
但在整型中并不是用来限制长度的,而是用来控制展示长度的

create table t12(id int(3)); # 不是用来限制长度
insert into t12 values(1111);

create table t13(id int(3) zerofill); # 而是用来控制展示的长度
insert into t13 values(1);  
insert into t13 values(1111); # 有几位展示几位
"""
  结论:
    涉及到整型字段 都无需自己定义长度 直接使用自带的
    针对其他类型的字段,则需要自己添加数字
"""

字段类型之枚举与集合

# 枚举
	多选一模式
    create table t15(
    id int,
    name varchar(32),
    gender enum('male','femle','others')
    );
    
    insert into t15 values(1,'tony','男'); # 报错
    insert into t15 values(2,'jason','male'); # 正确
'''
 插入数据的时候,正对gender只能填写提前定义好的数值
''' 

image

# 集合
	多选多(也可以多选一)
    create table t16(id int,name varchar(32);hobbies set('read','study','sleep'));
    
    insert into t16 values(1,'jason','read')
    insert into t16 values(2,'tony','study')
    insert into t16 values(3,'tom','read,study')

image

image

字段类型之日期类型

datetime		年月日时分秒
date			年月日
time			时分秒
year			年

create table t17(
	id int,
  	name varchar(32),
 	register_time datetime,
 	birthday date,
 	study_time time,
 	work_time year
);
insert into t17 values(1,'jason','2000-11-11 11:11:11','1998-01-21','11:11:11','2000');
ps:以后涉及到日期相关字段一般都是系统自动回去 无需我们可以操作

原文地址:http://www.cnblogs.com/super-xz/p/16920175.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性