mysql基础表和修理表_MySQL表操作基础

存储引擎  engines

MySQL中数据以各种不同的技术存储在文件(或者内存)中,使用不同的存储引擎,数据存储的方式是不同的

show engines;  查看存储引擎

create table 表名(结构) engine = 引擎名;  指定存储引擎

show create table 表名;  查看建表语句

innodb

在数据库中以两个文件(表结构+数据)的方式存在,是MySQL5.6以上默认的存储方式

transaction  事务  保证数据安全、数据的完整性而设置的概念  事务里的命令要么一起成功,要么一起失败

row-level locking  行级锁  给行上锁

table-level locking  表级锁  给表上锁

foreign keys  外键约束  为了逻辑性,约束后有关联的两个表不可删改

树  tree  加速查询  树形结构(数据 + 树)+ 表结构

用于事务处理应用程序,支持外键和行级锁。如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,

数据操作除了插入和查询之外,还包括很多更新和删除操作,那么InnoDB存储引擎是比较合适的。

InnoDB除了有效的降低由删除和更新导致的锁定,还可以确保事务的完整提交和回滚,对于类似计费系统或者财务系统等对数据准确要求性比较高的系统都是合适的选择

myisam

在数据库中以三个文件(结构+数据+索引)的方式存在,是MySQL5.5以下默认的存储方式

table-level locking  表级锁

数  tree  加速查询  树形结构 + 数据 + 表结构

如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,

并且对事务的完整性、并发性要求不高,那么可以选择这个存储引擎。

memory

在数据库中以一个文件的方式存在,基于hash

MySQL中的常用数据类型

数值

MySQL支持所有标准SQL数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

类型

大小

范围(有符号)

范围(无符号)unsigned约束

用途

TINYINT

1字节

(-127,127)

(0,255)

小整数值

INT或INTEGER

4字节

(-231,231)

(0,232)

大整数值

FLOAT

4字节

单精度浮点数值

DOUBLE

8字节

双精度浮点数值

create table int_t(ti tinyint,tiun tinyint unsigned);  创建int_t表,表中字段tiun被约束无符号

float(5,2)  逗号前数字代表这个float一共有多少位,逗号后的数字代表小数点后有多少位

double精度比float高,但也并不准确

float和double都会在精确位四舍五入

时间

类型

用途

格式

举例

DATETIME

年月日时分秒

YYYY-MM-DD HH:MM:SS

打卡时间、日志

DATE

年月日

YYYY-MM-DD

生日

TIME

时分秒

HH:MM:SS

规定上班时间

YEAR

年份

YYYY

年份相关

TIMESTAMP

年月日时分秒(时间戳)

YYYYMMDD HHMMSS

时间戳由于表示范围的问题,现在使用的少了

insert into time_t(dt) values(now());  给表time_t里的dt字段添加现在的时间(now()是默认值 当前时间)

每次修改与timestamp一行的表中内容时,timestamp在那一行中的时间也更新

datetime可以表示的范围比timestamp更大,如果想让datetime拥有timestamp的特质,就通过 show create table 表名 查看时间戳的建表语言,并copy到datetime字建表段后

字符串

类型

范围

特点

CHAR

0-255个字符

定长存储,存储速度更快,占用更多空间,以空间换时间

VARCHAR

0-65535个字符

变长存储,存储速度相对慢,占用空间小,以时间换空间

char(12)  添加'alex'  添加时会自动变为 'alex        '  总12的长度 空间换时间

varchar(12)  添加'alex'  添加时会自动变为 'alex4'  总5的长度 时间换空间

enum和set

enum:单选,建表后只能在enum()里有限的条件中选一个字段

set:多选,建表后能在enum()里有限的条件中选多个字段

MySQL中的表的约束

所有的约束都是建表时堆在每个字段后

not null

非空约束  如果非空约束失败,可以通过设置严格模式使其生效

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

设置严格模式:

不支持对not null字段插入null值

不支持对自增长字段插入”值

不支持text字段有默认值

直接在mysql中生效(重启失效):

mysql>set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

配置文件添加(永久失效):

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

设置严格模式

default

设置默认值

unique

唯一约束,约束一列内容不能重复

unique(字段,字段,...)

联合唯一约束  被约束的字段同时重复才算重复

primary key

主键,一张表只能有一个主键  如果一张表中没有设置主键,那么第一个设置非空+唯一的字段会被设置为主键

primary(字段,字段,...) 或 字段已设置not null,然后unique(字段,字段,...)

联合主键

auto_increment

自动增长  被约束的字段可以不是主键,自带not null属性,只能操作数字,只能对unique字段设置,不受删除影响

foreign key

外键约束  约束的字段至少是unique,推荐约束主键   约束方法:foreign key(字段) references 约束表名(字段) on delete cascade(级联删除) on update cascade(级联更新)

表与表的关系

一对多

校区表(校区id,城市...)和班级表(班级id,课程...)

一个校区可以有多个班级(一对多),一个班级只能在一个校区

建立关系的方法

多 (foreign key) 关联 一 表

班级表创建foreign key关联校区表的校区id字段

多对多

学生表(学生id,姓名...)和班级表(班级id,课程...)

一个学生可以报多个班级(一对多) 一个班级可以有多个学生(一对多)

建立关系的方法

产生第三张表

一个字段外键关联一个表的主键,一个字段外键关联另一个表的主键

一对一

学生表(学生id,姓名...)和客户表(客户id,电话号...)

一个客户对应一个学生(一对一)

建立关系的方法

学生表的gid foreign key 关联客户表的主键id

且gid一定被设置为unique

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值