文档章节

存储引擎,创建表的完整语法

o
 osc_wws45aot
发布于 2019/08/20 00:59
字数 1325
阅读 8
收藏 0

精选30+云产品,助力企业轻松上云!>>>

 

一.存储引擎
Innodb
目前5.1之后MySQL版本默认的存储引擎
支持事务(support transactions),行锁(row-level locking),外键(foreign key)
由于上面的支持 数据更安全

建表的时候innodb会产生两个文件
一个是表结构文件
一个是存储数据文件
MyIsam
5.1版本之前的MySQL的默认存储引擎
查询速度较于Innodb要快
建表的时候会产生三个文件
一个是表结构文件
一个是索引文件
索引你先把它理解成是书的目录,能够帮助你更快的查询数据
一个是存储数据文件
memory
将数据存放于内存中
建表的时候都仅仅只有一个表结构文件
blackhole
任何写入的数据都会消失
建表的时候都仅仅只有一个表结构文件

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+


二、创建表的完整语法
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
注意:
1.字段名和字段类型是必须的 中括号内的参数都是可选参数
2.同一张表中字段名不能重复
3.最后一个字段后面不能加逗号
create table t6(
id int,
name char,
);

宽度:
使用数据库的准则:能尽量让它少干活就尽量少干活

对存储数据的限制
char(1) 只能存一个字符
如果超了 mysql会自动帮你截取
1.插入的时候 mysql自动截取
2.会直接报错(mysql严格模式)


alter table t5 modify name char not null;
not null该字段不能插空

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;

insert into t1 values(1);
insert into t2 values(2);
insert into t3 values(3);
insert into t4 values(4);

select * from t1; #
select * from t2;
select * from t3; #关闭服务端数据就消失
select * from t4; #写什么,什么就消失

##建表
mysql> create table t5(id int,name char(2),password int,play char(6));
Query OK, 0 rows affected (0.31 sec)

mysql> desc t5;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | char(2) | YES | | NULL | |
| password | int(11) | YES | | NULL | |
| play | char(6) | YES | | NULL | |
+----------+---------+------+-----+---------+-------+

##在t5表中插入数据
mysql> insert into t5 values(4,'hang',12344213789456,'粉红色的健康很舒服');
Query OK, 1 row affected, 3 warnings (0.07 sec)

mysql> select * from t5;
+------+------+------------+--------------------+
| id | name | password | play |
+------+------+------------+--------------------+
| 1 | zg | 2147483647 | ballll |
| 1 | ha | 2147483647 | balsdf |
| 3 | zg | 2147483647 | ballll |
| 4 | ha | 2147483647 | 粉红色的健康 |
+------+------+------------+--------------------+
在id=4时,我们可以看到char括号内的数字限制了字符的个数,不管字母或汉字或其他字符一个就算成一个字符,在我自定表字段的时候设置name char(2),实际名字‘hang’是4个字符,被截取我们设定的字符个数;password

#字段可以插空
mysql> desc t5;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | char(2) | YES | | NULL | |
| password | int(11) | YES | | NULL | |
| play | char(6) | YES | | NULL | |
+----------+---------+------+-----+---------+-------+
mysql> insert into t5 value(5,'an',2344789456,'NULL');
Query OK, 1 row affected, 1 warning (0.05 sec)

mysql> select * from t5;
+------+------+------------+--------------------+
| id | name | password | play |
+------+------+------------+--------------------+
| 1 | zg | 2147483647 | ballll |
| 1 | ha | 2147483647 | balsdf |
| 3 | zg | 2147483647 | ballll |
| 4 | ha | 2147483647 | 粉红色的健康 |
| 5 | an | 2147483647 | NULL |
+------+------+------------+--------------------+

#更改表中的某个字段不能为空,设置完以后,
alter table t5 modify name char not null;
not null该字段不能插空如果再插入空,该字段会被插空的地方会被清空。

mysql> alter table t5 modify play char not null;
Query OK, 0 rows affected (0.12 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> update t5 set play=null where id=1;
Query OK, 2 rows affected, 2 warnings (0.06 sec)
Rows matched: 2 Changed: 2 Warnings: 2

mysql> select * from t5;
+------+------+------------+------+
| id | name | password | play |
+------+------+------------+------+
| 1 | z | 2147483647 | |
| 1 | h | 2147483647 | |
| 3 | z | 2147483647 | b |
| 4 | h | 2147483647 | 粉 |
| 5 | a | 2147483647 | N |
| 6 | z | 12345 | |
+------+------+------------+------+
6 rows in set (0.00 sec)



类型和中括号内的约束
类型约束的是数据的存储类型
而约束是基于类型之上的额外限制

#注意:
1. 在同一张表中,字段名不能相同
2. 宽度和约束条件可选,字段名和类型是必须的
3. 最后一个字段后不能加逗号!

# 补充:
# 1.宽度指的是对存储数据的限制
create table userinfo(name char);
insert into userinfo values('jason');
"""
1.没有安全模式的数据库版本,能够存放数据但是只会存进去一个j
2.最新数据库版本直接报错提示无法存储:Data too long for column 'name' at row 1
"""

# 2.约束条件初识>>> null 与 not null
#设置not null后,char默认只能只能接受1个字符,即,char(1),多余的字符会被清楚掉。
create table t1(id int,name char not null);
insert into t1 values(1,'j'); # 正常存储
insert into t1 values(2,null); # 报错

# 总结 类型与约束条件区别
# 类型:限制字段必须以什么样的数据类型存储
# 约束条件:约束条件是在类型之外添加一种额外的限制

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
MySQL数据类型

MySQL数据库的有多种存储引擎.也哭一理解为存储模式.常见的有InnoDB, MyISAM,memory和blackhole.四种引擎模式.创建语法create table 库名(字段名 约束条件)engine=引擎名;使用show engines;...

osc_ky6f5kf1
2019/08/19
2
0
129 MySQL表操作

[TOC] 一、表介绍 表就相当于时文件,表中的一条记录就相当于文件的一行内容,不同的是表中的一条记录有对应的标题,称之为表的字段 例子:有一个名为student的文件 id,name,age,sex , ...

osc_pr8bk98l
2019/09/22
2
0
MariaDB 表的基本操作

在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位,数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的、每一行代表一条唯一的记录,每一列代表记录中的...

osc_4ho6b6v0
2018/12/24
2
0
MySQL执行SQL的流程

1.一条SQL语句的执行流程 1.1通信协议 查看 MySQL 当前有多少个连接? 查询当前连接的状态? 状态 含义 Sleep 线程正在等待客户端,以向它发送一个新语句 Query 线程正在执行查询或往客户端发...

osc_mgt0rm0m
01/15
2
0
MySQL 数据类型

MySQL存储引擎 Innodb : 默认的存储引擎,查询速度相对myisam慢,但是更安全 特点是支持行锁,支持外键 myisam : 老版本的存储引擎 memory : 内存引擎,数据全部存在内存中,断电数据消失 blackh...

osc_ky6f5kf1
2019/08/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

平时使用的Lszrz到底是什么协议?说说Xmodem/Ymodem/Zmodem

XMODEM, YMODEM, and ZMODEM 由于平时使用rz/sz较多,r/s好理解,一个send一个receive。但是由不太清楚z是什么意思,故有此文。 sx/rx, sb/rb (b=batch)和sz/rz分别实现了xmodem,ymodem和z...

独钓渔
34分钟前
17
0
真正的强智能时代已经到来。道翰天琼认知智能机器人平台API大脑。

最近,我常说人工智能的寒冬快要来了,提醒业界要做好思想准备,但同时我也说:冬天来了,春天就不会远了…… 2019年6月我写了篇文章《深度学习的问题究竟在哪?》,说到深度学习的一个主要问...

jackli2020
43分钟前
24
0
什么是控制型人格,控制型人格的筛查测试

一、 什么是控制性人格 拥有控制型人格的人,他们会尽力的隐藏自己的意图,但是又会使用很微妙的方式来利用周围人的弱点,进而占取便宜时,使他们能够得到自己想要的东西。这类人的控制欲非常...

蛤蟆丸子
51分钟前
14
0
【Spring】Spring AOP 代理对象生成逻辑源码分析

1. spring aop案例(POJO注入) 1.0 被代理接口 TargetInterface /** * 被代理的接口 * @author Yang ZhiWei */public interface TargetInterface { void show(); String show......

ZeroneLove
今天
36
0
聊聊dubbo-go的gracefulShutdownFilter

序 本文主要研究一下dubbo-go的gracefulShutdownFilter gracefulShutdownFilter dubbo-go-v1.4.2/filter/filter_impl/graceful_shutdown_filter.go type gracefulShutdownFilter struct {......

go4it
今天
30
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部