Configuration database and data types

Configuration database

1) 在mysql安装目录下,创建配置文件:my.ini
2) 设置配置文件内容并保存
[mysqld]   # 服务器的配置
port=3306
character-set-server=utf8
collation-server=utf8_general_ci

[client]   # 客户端的配置
default-character-set=utf8

3) 重启数据库服务

Engine database table

Engine: driven data ---> database optimization

Premise: Engine is built form prescribed, provided to the table to use, not to database

# 展示所有引擎
mysql> show engines;

# innodb(默认):支持事务,行级锁,外键
mysql> create table t1(id int) engine=innodb;

# myisam:查询效率要优于innodb,当不需要支持事务,行级锁,外键,可以通过设置myisam来优化数据库
mysql> create table t2(id int) engine=myisam;

# blackhole:黑洞,存进去的数据都会消失(可以理解为不存数据)
mysql> create table t3(id int) engine=blackhole;

# memory:表结构是存储在硬盘上的,但是表数据全部存储在内存中
mysql> create table t4(id int) engine=memory;

Database schema

# mysql 5.7版本往后默认都是安全模式

# mysql 5.6版本
sql_mode=no_engine_substiution   # 非安全性,默认
sql_mode=strict_trans_tables   # 安全性

# 查看当前数据库模式:
show variables like "%sql_mode%s";   # %匹配0~n个任意字符 ---> 模糊查询

# root用户登录状态下,设置为临时安全模式,设置后,quit断开数据库连接,重新连接后进入安全模式,服务重启后会重置
mysql> set global sql_mode="strict_trans_tables";

# 安全模式下,非安全模式下sql执行的警告语句,都会抛异常

mysql data types supported

Integer

'''
类型
tinyint: 1字节,取值范围 -128~127
smallint: 2字节,取值范围 -32768~32767
mediumint: 3字节
int: 4字节,取值范围 -2147483648~2147483647
bigint: 8字节
'''

'''
约束
unsigned: 无符号
zerofill: 0填充
'''

Float

'''
类型
float(M, D): 4字节,3.4E-38~3.4E+38
double(M, D): 8字节,1.7E-308~1.7E+308
decimal(M, D): 所在字节M,D大值基础上+2,其实就是M值+2就是decimal字段所占字节字数
'''

'''
宽度
(M, D) ==> M为位数,D为小数位,M要大于等于D
float(255, 30): 精度最低,最常用
double(255, 30): 精度高,占位多
decimal(255, 30): 字符串存,全精度
'''

String

Database Optimization: char efficiency is higher than varchar

'''
类型
char: 定长,永远采用设置的长度存储数据
varchar: 不定长,在设置的长度范围内,变长的存储数据
'''

'''
宽度
char(4): 存"a" "ab" "abc" "abcd" 都采用4个长度,"abcde"只能存储前4位
varchar(4): 存"a" "ab" "abc" "abcd" 分别采用1,2,3,4个长度,"abcde"只能存储前4位

char按定长存储,如果数据长度变化大,会占更多空间,但是存取数据按固定定长存取,效率高
varchar存储数据时,会先计算要存储数据的长度,动态的变长存储数据,一般会省空间,但是因为要计算数据的长度,效率会低
'''

time

'''
类型
year: yyyy(1901~2155)
data: yyyy-MM-dd(1000-01-01~9999-12-31)
time: HH:mm:ss
datetime: yyyy-MM-dd HH:mm:ss(1000-01-01 00:00:00~9999-12-31 23:59:59)
timestamp: yyyy-MM-dd HH:mm:ss(1970-01-01 00:00:00~2038-01-19 11:14:07)
'''

Enumeration and collection

'''
枚举和集合:为某一个字段提供选项
枚举:只能单选(1个)
集合:可以多选(0~n个)
'''

constraint

'''
primary key:主键,唯一标识,表都会拥有,不设置为默认找第一个 不空,唯一字段,未标识则创建隐藏字段
foreign key:外键
unique:唯一性数据,该条字段的值需要保证唯一,不能重复

auto_increment:自增,只能加给key的int类型字段,作为辅助修饰,一个表中只能设置一个自增字段

not null:不为空,不能设置为null,必须要对其赋值
default:默认值,对有默认值以外的字段赋值时,有默认值的字段会被赋默认值

unsigned:无符号,存储的数字从0开始
zerofill:0填充,存整数时,数据长度小于取值范围长度,会在数字左方用0填充
'''

Guess you like

Origin www.cnblogs.com/yunluo/p/11752970.html