mysql中表的基本操作

时间:2022-09-16 19:46:40

数据类型(列类型)

所谓数据类型:对数据进行统一分类,从系统的角度出发是为能够使用
统一的方式进行管理,更好的利用有限空间。

SQL中将数据类型分为了三大类:数值类型,字符串,和时间日期类型。

mysql中表的基本操作

数值型

数值型数据都是数值
系统将数值型分成整数型和小数型。

存放整形数据:在SQL中为了更多的要考虑如何节省磁盘空间,所以
将整数细化成5类。

mysql中表的基本操作

常用的是tinyint和int;
创建一张整形表
mysql中表的基本操作

只能插入整数,只能插入范围内整数。

mysql中表的基本操作

SQL中数值类型默认都是有符号的。
有时候需要使用无符号数据,需要给数据类型限定:int unsigned

mysql中表的基本操作

小数型:带有小数点的数值类型。
SQL中:将小数分成两种:浮点型和顶点型。
浮点型:小数点浮动,精度有限,而且会丢失精度。
定点型:小数点固定,精度固定,不会丢失精度。

浮点型:
浮点型数据是一种精度型数据:因为超出指定范围后,会丢失精度。
浮点型:分为两种精度
float:单精度,占用4字节存储数据,精度范围7位左右
double:双精度,占用8字节存储数据,精度范围15位左右

float取值范围 -3.402823466E+38 ~ 3.402823466E +38
double取值范围 -1.7976931348623157E +308~ 1.7976931348623157E
创建浮点数表:浮点数的使用方法,直接float表示没有小数部分,
float(M,D):M代表总长度。D代表小数部分。

mysql中表的基本操作

插入数据
mysql中表的基本操作

浮点数的插入:整数部分不能超出长度,小数可以超出长度(系统会自动四舍五入)。

定点型

定点型:绝对保证整数部分不会被四舍五入(不会丢失精度),小数部分可能会丢失。

DECIMAL:变长,大致每9个数字,采用四字节存储,整数和小数分开计算。
DECIMAL(M,D)M最大是65,D最大是30,默认是(10,2);
mysql中表的基本操作

时间日期类型

datetime 时间日期格式 ‘yyyy -mm- dd HH:ii : ss’表示范围从1000到9999
date :日期 ‘yyy-mm-dd’
time :时间段 指定某个区间之间 -时间 - +时间
timestamp: 时间戳 ,从1970年开始的 yyyy-mm-dd HH:ii:ss格式和datetime 完全一致

列类型 “零”值
DATETIME ‘0000-00-00 00:00:00’
DATE ‘0000-00-00
TIMESTAMP 00000000000000
TIME ‘00:00:00’
YEAR 0000

创建日期表

mysql中表的基本操作

插入数据
mysql中表的基本操作

timestamp字段:只要当前所在记录被更新,
该字段一定会自动更新成当前时间。
mysql中表的基本操作

字符串类型
在SQL中,将字符串分成了char,varchar,test,blob等;

定长字符串
char,表在定义结构的时候,就已经确定了最终数据的存储长度
char(L):L代表length,可以存储的长度,单位为字符,最大长度可以为255;
char(4):在utf8环境下,需要4*3=12个字节;

变长字符串
变长字符串:varchar,再分配空间的时候,按照最大的空间分配,
但实际最终用了多少,是根据具体的数据来确定。

varchar(L):L表示字符长度,理论上长度65536个字符,但是假设分配的长度
是100,实际存放的是5个,那么怎么取得5个字符,它会多出一个表示实际上
存储多少个字符的长度成员。
但是实际上,文本长度超过255,既不用定长也不用变长,使用text。
定长与变长长度存储实际空间(UTF8)
mysql中表的基本操作

如何选择定长或者变长字符串?
定长的磁盘空间比较浪费,但是效率高;
变长的磁盘空间比较节省,但是效率低;

如果数据确定长度都一样,就使用定长,比如身份证,手机号;
如果数据长度有变化,就使用变长,比如名字,地址,但是你
要保证最长的可以存进去。

文本字符串
如果数据量非常大,通常超过255,就会使用文本字符串
文本字符串根据存储的数据格式进行分类,text和blob。
text:存储文字。
blob:存储二进制。

列属性

列属性:真正约束字段的是数据类型,但是数据类型约束很单一,
需要有一些额外的约束,更好的保证数据的合法性。
列属性有很多:NULL/not null,default,primary key,unique,auto_increment,comment

空属性

两个值:null(默认的)和not null(不为空)
数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证
字段不为空,因为数据为空没办法参与运算。

mysql中表的基本操作

创建一个表,班级表(名字,教室),如果一个班级没有教室,
到哪上课?如果一个班级没有名字??
mysql中表的基本操作

列描述
列描述:commment,没有实际含义,专门用来描述字段,会根据
表创建语句保存,用来给程序员或DBA 来进行了解。

mysql中表的基本操作

默认值 default

默认值:某一种数据会经常性的出现某个值,可以在一开始就指定好,
在需要真实数据的时候,用户可以选择性的使用默认值。
mysql中表的基本操作

默认值的生效:数据在插入的时候不给该字段赋值,就使用默认值。
mysql中表的基本操作

主键

主键:primary key 用某个字段来唯一表示所有记录时,设置主键。用来唯一约束
该字段里边的数据,不能重复不能为空。
一张表中最多只能有一个主键。
增加主键
1.创建表的时候直接在字段上指定主键。
mysql中表的基本操作

2.在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建,
如果有多个字段作为主键,可以使用复合主键。

mysql中表的基本操作

3.当表创建好以后,可以再次追加主键。

alter table 表名 add primary key(字段列表)

mysql中表的基本操作

主键约束:主键对应的字段中不能重复,一旦重复,操作失败。
mysql中表的基本操作

删除主键

alter table 表名 drop primary key;
mysql中表的基本操作

自增长

自增长:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段
中已经有的最大值+1,操作,得到一个新的不同的值,通常和主键搭配使用,
作为逻辑主键。
自增长的特点是:auto_increment
1.任何一个字段,要做自增长,前提本身是一个索引(key 一栏有值)
2.自增长字段必须是整数
3.一张表最多只能有一个自增长

mysql中表的基本操作

唯一键
一张表中有往往很多字段需要唯一性,数据不能重复,但是一张表中
只能有一个主键:唯一键就可以解决表中有多个字段,需要唯一性
约束的问题。

唯一键的本质和主键差不多,唯一键允许为空,而且多个为空,空字段
不做唯一性比较。

增加唯一键。
mysql中表的基本操作

索引
索引:系统根据某种算法,将已有的数据(未来可能新增的数据),单独建立一个文件夹:
文件能够实现快速的匹配数据,并且能够快速的找到对应的记录。
索引的意义:
1. 提升查询数据的效率
2. 约束数据的有效性(唯一性等)

增加索引的前提条件:索引本身会产生索引文件(有时可能比数据还大),
非常耗费磁盘空间。

如果某个字段经常作为查询字段,这时可以为该字段建立索引。
如果某个字段需要进行数据的有效性约束,也需要使用索引(主键,唯一性).

mysql中提供了多种索引:
1. 主键索引 :primary key
2. 唯一索引: quique
3. 普通索引:index
4. 全文索引

创建索引

CREATE INDEX index_name
ON tbl_name(index_col_name,….);

mysql中表的基本操作

索引使用的原则
1. 在大表上建立索引才有意义
2. 在where子句或是连接条件上经常使用的列上建立索引
3. 索引的层次不要超过4层。

索引的缺点:
1. 建立索引,系统要占用大约为表的1.2倍的磁盘和内存空间来保存索引
2. 更新数据的时候,系统必须用额外的时间来对索引进行更新。