mysql数据库表类型设置_mysql数据库表的类型介绍

目录

前言

之前我们讲了下载安装数据库,还有如何卸载(虽然直接重装系统就好)

那么现在让我们来讲讲

"""

1、数据库与表的剩余操作

编码配置、引擎介绍

2、数据库字段的操作

3、数据库的数据类型

4、数据库字段的约束条件

"""

数据库的配置

通过配置文件统一配置的目的是统一管理

服务端(mysqld)

客户端(client)

那么如果我们配置了mysqld(服务端)的编码为utf8,那么再创建的数据库,默认编码都采用utf8

配置流程

在mysql安装目录下,创建文件----->my.ini

ps : mac下配置文件名叫my.cnf

设置配置文件内容并保存

[mysqld] #服务器配置

port=3306 #可以修改数据库默认端口

character-set-server=utf8 #编码格式

collation-server=utf8_general_ci

[client] #mysql再见的客户端叫[mysql],配置[client]即配置了[mysql],也配置了其他存在方式的客户端,比如Navicat可视化客户端

default-character-set=utf8

重启数据库服务

数据库修改信息

修改字符编码

alter database 数据库名 charset=编码格式;

用户操作(**********)

为特定的数据库分配该数据库的操作权限的用户

grant 权限们 on 数据库.表 to 用户名@'主机名' identified by '密码';

all:所有权限

oldboy.*:表示oldboy数据库下所有表

oldboy@'localhost':本机可以通过oldboy用户登录

identified by 'Oldboy123':密码为Oldboy123

grant all on oldboy.* to oldboy@'localhost' identified by 'Oldboy123';

撤销权限

revoke 权限1,权限2,...on 数据库名.表名 from 用户名@'主机名';

删除用户

drop user 用户名@'主机名';

数据库表的引擎:驱动数据的方式-优化

前言:引擎是建表时候的规定,提供给表使用的,不是数据库。用于优化数据库模式

展示引擎语句

show engines;

# innodb(默认): 支持事务, 行级锁, 外键

create table t11(id int)engine=innodb;

# myisam: 查询效率要优于innodb, 当不需要支持事务, 行级锁, 外键, 可以通过设置myisam来优化数据库

create table t12(id int)engine=myisam;

# blackhole:黑洞,存进去的数据都会消失(可以理解不存数据)

create table t13(id int)engine=blackhole;

# memory:表结构是存储在硬盘上的,但是表数据全部存储在内存中

create table t14(id int)engine=memory;

数据库模式

前言:mysql 5.7以后默认为安全模式

5.6版本

非安全模式:sql_model=no_engine_substitution

安全模式:sql_model=strict_trans_tables

# 查看当前数据库模式:

show variables like "%sql_mode%"; # %匹配0~n个任意字符 => 模糊查询

# 临时设置为安全模式,服务重启后会被重置

set global sql_mode="strict_trans_tables"; # 在root用户登录状态下

# 在设置后,quit断开数据库连接后(服务器不重启)就会进入安全模式

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

create table t1(name char(2));

insert into t1 values ("ab") # 正常

insert into t1 values ("guapi") # 错误 Data too long for column 'name' at row 1

mysql支持的数据类型

数据类型

数据类型表

类型

大小

范围(有符号)

范围(无符号)unsigned约束

用途

TINYINT

1字节

(-128,127)

(0,255)

小整数值

SMALLINT

2字节

(-32768,32767)

(0,65535)

大整数值

MEDIUMINT

3字节

(-8388608,8388607)

(0,16777215)

大整数值

INT或INTEGER

4字节

(-2147483648,2147483 647)

(0,4294967295)

大整数值

BIGINT

8字节

(-9233372036854775808,9223372036854 775807)

(0,18446744073709551 615)

极大整数值

FLOAT

4字节float(255,30)

(-3.402823466E+38,-1.175494351E-38),0,(1.175 494351E-38,3.402823466351E+38)

0,(1.175494351E-38,3.402823466E+38)

单精度浮点数值

DOUBLE

8字节double(255,30)

(-1.7976931348623157E+308,-2.225073858 5072014 E-308),0,(2.2250738585072014E-308,1.7976931348623157E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精准浮点数值

DECIMAL

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2double(65,30)

依赖于M和D的值

依赖于M和D的值

x小数值

有符合的8位前面第一位是表示符号的,后边只能显示7位

整数 int: create table 表 (id1 int(4),id2 int(11));

int默认是有符号的

int 默认11位 整数

它能表示的数字的范围不被宽度约束#它只能约束数字的显示宽度

整数 int: create table 表 (id1 int unsigned,id2 int); #unsigned 指定取除int符号

小数 float: create table 表 (f1 float(5,2),d1 double(5,2)); #float单精度浮点数值 #double双精度浮点数值 (5,2)整数,小数范围限制

小数 float: create table 表 (f1 float,d1 double); 默认值

小数 float: create table 表(d1 decimal,d2 decimal(25,20));#decimal 小数值 默认与指定(25,20)

字符串类型

字符串类型表

类型

大小

用途

CHAR

0-255字节

定长字符串

VARCHAR

0-65535 字节

变长字符串

TINYBLOB

0-255字节

不超过 255 个字符的二进制字符串

TINYTEXT

0-255字节

短文本字符串

BLOB

0-65 535字节

二进制形式的长文本数据

TEXT

0-65 535字节

长文本数据

MEDIUMBLOB

0-16 777 215字节

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215字节

中等长度文本数据

LONGBLOB

0-4 294 967 295字节

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295字节

极大文本数据

定长单位 char

char:不可变,定长高效

边长单位 varchar

varchar:变长省空间

时间类型

日期类型表

类型

大小 (字节)

范围

格式

用途

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD

年月日

TIME

3

'-838:59:59'/'838:59:59'

HH:MM:SS

时分秒

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

年月日时分秒

TIMESTAMP

4

1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMSS

混合日期和时间值,时间戳

日期类型

year:年: yyyy(1901/2155)

date:年-月-日 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 ??)

不赋值会有当前系统时间

now()函数现在时间

ENUM | SET类型

类型表

类型

大小

用途

ENUM

对1-255个成员的枚举需要1个字节存储; 对于255-65535个成员,需要2个字节存储; 最多允许65535个成员。

单选:选择性别

SET

1-8个成员的集合,占1个字节 9-16个成员的集合,占2个字节 17-24个成员的集合,占3个字节 25-32个成员的集合,

占4个字节 33-64个成员的集合,占8个字节

多选:兴趣爱好

create table 表(name char(12),gender ENUM('male','female'),hobby set('抽烟','喝酒','烫头','洗脚'));

insert into t12 values('gandan','不详','抽烟,喝酒,洗脚,洗脚,按摩');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值