Mysql DDL

用户管理

数据库操作

系统数据库

  • information_schema:主要存储数据库中的一些系统对象信息,例如用户表、列、权限、字符集和分区等信息
  • performance_schema:主要存储数据库性能参数
  • mysq:主要存储系统的用户权限信息
  • test:测试数据库

数据库操作

  • 创建数据库
    mysql
    Create database database_name

    数据库长度小于128。
  • 查看数据库
   show databases;
  • 选择数据库
   use database_name;
  • 删除数据库

   drop database database_name;


Create Table table_name(
col_name col_type 
,...
)
;


describe table_name;

show create table table_name;

drop table table_name;

alter table old_table_name rename [to] new_table_name;

alter table table_name add col_name col_type [first | after col_name1 | ]  ;
alter table table_name drop col_name;
alter table table_name modify col_name attributes;
alter table table_name change old_col_name new_col_name col_type;
alter table table_name change col_name1 col_type1  after | before col_name2;

--完整性约束
NOT NULL
DEFAULT                  DEFAULT value
UNIQUE KEY (UK)
PRIMARY KEY (PK)
AUTO_INCREAMENT
FOREIGN KEY (FK)

Alter table tabname add primary key(col);
Alter table tabname drop primary key(col)

索引

create table xxx(
,
INDEX| KEY [indexname] ( col_name ...)
)

create index index_name 
on table_name ( col_name ,...)
alter table table_name 
add index | key  [index_name] ( col_name ,....)

drop  index index_name on table_name

视图

触发器

数据库类型

数值类型

整数类型

类型 存储 最小值 最大值
tinyint 1
smallint 2
mediumint 3 -8388608 8388607
int 4
bigint 8

定点数

decimal与numeric在mysql中是相同类型
格式:decimal(M,D)
我们看到其中有两个参数,即DECIMAL(M,D),其中M表示十进制数字总的个数,D表示小数点后面数字的位数,上例中的取值范围为-999.99~999.99。

如果存储时,整数部分超出了范围(如上面的例子中,添加数值为1000.01),MySql就会报错,不允许存这样的值。

如果存储时,小数点部分若超出范围,就分以下情况:

若四舍五入后,整数部分没有超出范围,则只警告,但能成功操作并四舍五入删除多余的小数位后保存。如999.994实际被保存为999.99。
若四舍五入后,整数部分超出范围,则MySql报错,并拒绝处理。如999.995和-999.995都会报错。

M的默认取值为10,D默认取值为0。如果创建表时,某字段定义为decimal类型不带任何参数,等同于decimal(10,0)。带一个参数时,D取默认值。

M的取值范围为1~65,取0时会被设为默认值,超出范围会报错。
D的取值范围为0~30,而且必须<=M,超出范围会报错。

浮点数

类型 存储 最小值 最大值
float 4
double 8

浮点数是用来表示实数的一种方法,它用 M(尾数) * B( 基数)的E(指数)次方来表示实数,相对于定点数来说,在长度一定的情况下,具有表示数据范围大的特点。但同时也存在误差问题。
如果希望保证值比较准确,推荐使用定点数数据类型。
MySql中的浮点类型有float,double和real。他们定义方式为:FLOAT(M,D) 、 REAL(M,D) 、 DOUBLE PRECISION(M,D)。
REAL就是DOUBLE ,如果SQL服务器模式包括REAL_AS_FLOAT选项,REAL是FLOAT的同义词而不是DOUBLE的同义词。
“(M,D)”表示该值一共显示M位整数,其中D位位于小数点后面。例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。
FLOAT和DOUBLE中的M和D的取值默认都为0,即除了最大最小值,不限制位数。允许的值理论上是-1.7976931348623157E+308~-2.2250738585072014E-308、0和2.2250738585072014E-308~1.7976931348623157E+308。M、D范围如下(MySql5.7实测,与IEEE标准计算的实际是不同的,下面介绍):
M取值范围为0~255。FLOAT只保证6位有效数字的准确性,所以FLOAT(M,D)中,M<=6时,数字通常是准确的。如果M和D都有明确定义,其超出范围后的处理同decimal。
D取值范围为0~30,同时必须<=M。double只保证16位有效数字的准确性,所以DOUBLE(M,D)中,M<=16时,数字通常是准确的。如果M和D都有明确定义,其超出范围后的处理同decimal。
FLOAT和DOUBLE中,若M的定义分别超出7和17,则多出的有效数字部分,取值是不定的,通常数值上会发生错误。因为浮点数是不准确的,所以我们要避免使用“=”来判断两个数是否相等。
MySql中的浮点数遵循IEEE 754标准。
内存中,FLOAT占4-byte(1位符号位 8位表示指数 23位表示尾数),DOUBLE占8-byte(1位符号位 11位表示指数 52位表示尾数)。IEEE754标准还对尾数的格式做了规范:d.dddddd…,小数点左面只有1位且不能为零,计算机内部是二进制,因此,尾数小数点左面部分总是1。显然,这个1可以省去,以提高尾数的精度。由上可知,单精度浮点数的尾数是用24bit表示的,双精度浮点数的尾数是用53bit表示的。所以就能算出取值范围和准确的有效位数了,但MySql中其实略有不同。

bit

BIT数据类型可用来保存位字段值。BIT(M)类型允许存储M位值。M范围为1~64,默认为1。
BIT其实就是存入二进制的值,类似010110。
如果存入一个BIT类型的值,位数少于M值,则左补0.
如果存入一个BIT类型的值,位数多于M值,MySQL的操作取决于此时有效的SQL模式:
如果模式未设置,MySQL将值裁剪到范围的相应端点,并保存裁减好的值。
如果模式设置为traditional(“严格模式”),超出范围的值将被拒绝并提示错误,并且根据SQL标准插入会失败。

b=b’001000’;

字符串类型

类型 存储 最小值 最大值
char(M) M 默认255
varchar(M) 0-M

日期时间类型

ENUM

SET

猜你喜欢

转载自blog.csdn.net/demon7552003/article/details/78368856
今日推荐