MySQL数据库学习笔记(3)- DDL之数据表的创建、删除及修改

1. MySQL的存储引擎

存储引擎 就是如何存储数据、如何更新数据、如何查询数据、如何为存储的数据建立索引等一系列技术的实现方法。
使用如下语句查询MySQL的存储引擎

SHOW ENGINES;

下面是关于MySQL存储引擎的简单介绍:

存储引擎描述
MyISAM拥有较快的插入、查询速度,但不持支事务
InnoDB支持ACID事务,支持行级锁,支持外键;MySQL5.5版本后默认的存储引擎
MRG_MYISAM将一组结构相同的MyISAM表聚合成一个整体,再进行增删改查操作
Memory所有数据存储在内存中,响应快;MySQL重启时数据会全部丢失
Archive归档,且有压缩机制,适用于历史数据归档
CSV逻辑上由逗号分隔数据,会为每张表创建一个.csv文件

2. MySQL的数据类型

MySQL的数据类型大致可以分为3类,数值、日期/时间和字符串(字符)和二进制数据类型。

(1) 数值类型
数据类型所占字节数说明
TINYINT1小整数值
SMALLINT2大整数值
MEDIUMINT3大整数值
INT(或INTEGER)4大整数值
BIGINT8大整数值
FLOAT4单精度浮点数
DOUBLE8双精度浮点数
DECIMALMax(D+, M+)含小数值,例如金额,一般使用DECIMAL(8, 2)
注意 :所有的整数数据类型都可以有符号和无符号。有符号可以存储正数和负数, 无符号则只能存储正数,默认情况下为有符号,如果想设置为无符号的,可以使用关键字 UNSIGNED
(2) 日期和时间类型
数据类型所占字节数说明
DATA3格式为YYYY-MM-DD
TIME3格式为HH:MM:SS
YEAR1用两位数字表示,范围为70(1970年)~69(2069年),用四位表示,范围时1991年~2155年
DATATIME8格式为YYYY-MM-DD HH:MM:SS
TIMESTAMP8格式为YYYYMMDDHHMMSS
(3) 字符串类型

MySQL中有两种字符串类型,分别为 定长串变长串
定长串 是指接受固定长度的字符串,其长度在创建表时指定。
变长串 是指存储长度可变的文本,有些变长串指定了最大的定长,有些没有指定,不管是哪种。只有指定的数据得到保存。

MySQL处理定长列远比处理变长列快得多!

数据类型所占字节数说明
CHAR0~255定长串,它的长度必须在创建时被指定,否则会被假定为CHAR(1)
VARCHAR0~255长度可变,最多存储255个字节。如果创建时指定VARCHAR(n),则可存储0~n个字符的变长串 (n < 255)
TEXT0~64K最大长度为64K的变长文本
LONGTEXT0~4G与TEXT相同,但最大长度为4G
MEDIUMTEXT0~16K与TEXT相同,但最大长度为16K
注意: 不管使用何种形式的字符串数据类型,字符串都必须括在引号内(通常单引号更好)。
(4) 二进制数据类型

二进制数据可以以二进制的形式存储任何数据,包括图像、多媒体、Word等等。

数据类型所占字节数说明
BLOB0~64KBlob最大长度为64K
MEDIUMBLOL0~16M Blob最大长度为16M
LONGBLOB0~4GBlob最大长度为4G
TINYBLOB0~255Blob最大长度为255字节

3. MySQL数据表的创建、删除和修改

(1) 创建数据表

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name [(create_definition,…)] [table_options][select_statement]

  • TEMPORARY :表示创建临时表,会话结束后自动消失。
  • IF NOT EXISTS : 建表前判断是否存在,只有不存在时才创建。
  • create_definition :定义表中各列的属性。
  • table_options :表的配置选项,如表的默认存储引擎、字符集等
  • select_statement :通过select 语句建表

比如创建一个学生表,表中有学生的学号、姓名、性别、住址和电话
则可以使用下边的SQL语句创建这个学生表:

CREATE TABLE IF NOT EXISTS my_student (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(20),
        sex TINYINT,
        address VARCHAR(40),
        phone CHAR(11));

这里 NOT NULL 表示该字段不能为空, AUTO_INCREMENT 表示自动增长, PRIMARY KEY 表明该字段为主键。 也可以使用关键字 DEFAULT 指定默认值。

(2) 查看当前数据库的所有表
SHOW TABLES;
(3) 显示某个表中的数据结构
DESC my_student;

下图就是刚才所创建的表中的结构:

(4) 修改表中字段的属性
ALTER TABLE 表名 ADD 字段名称 数据类型;      # 添加字段(列)
ALTER TABLE 表名 MODIFY 字段名称 数据类型;   # 修改字段(列)
ALTER TABLE 表名 DROP COLUMN 字段名称;	   # 删除字段(列)

比如这里我想执行下面的操作

  1. 删除列电话号码
  2. 添加一组为班级的列
  3. 修改性别字段,将tinyint改为char(1)类型

可以执行如下SQL语句:

ALTER TABLE my_student DROP COLUMN phone; 	# 删除字段
ALTER TABLE my_student ADD classNumber VARCHAR(10);	# 添加字段
ALTER TABLE my_student MODIFY sex char(1);	# 修改字段
(5) 删除数据表
DROP TABLE 表名;
不会飞的纸飞机
扫一扫二维码,了解我的更多动态。

下一篇文章:MySQL数据库学习笔记(4)- DML之数据的插入、修改和删除