MySQL学习-数据类型与创建表

139 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情

前言

上篇我们学习了MySQL数据库的概念,命名规则以及如何创建数据库。有兴趣的小伙伴可以阅读(# MySQL学习-数据库的概念,命名规则以及创建数据库)。
下面学习MySQL的常见数据类型与如何创建表。

MySQL中的数据类型

类型类型举例
整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT
浮点类型FLOAT、DOUBLE
定点数类型DECIMAL
位类型BIT
日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP
文本字符串类型CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
枚举类型ENUM
集合类型SET
二进制字符串类型BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
JSON类型JSON对象、JSON数组
空间数据类型单值:GEOMETRY、POINT、LINESTRING、POLYGON
集合:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION

常见的几类类型

数据类型描述
INT从-2^31到2^31-1的整型数据,存储大小为4个字节
CHAR(size)定长字符数据,若未指定,默认为1个字符,最大长度255
VARCHAR(size)可变长字符数据,根据字符串实际长度保存,必须指定长度
FLOAT(M,D)单精度,占用4个字节,M=整数位+小数位,D=小数位。D<=M<=255,0<=D<=30,默认M+D<=6
DOUBLE(M,D)双精度,占用8个字节,D<=M<=255,0<=D<=30,默认M+D<=15
DECIMAL(M,D)高精度小数,占用M+2个字节,D<=M<=65,0<=D<=30,最大取值范围与DOUBLE相同
DATE日期型数据,格式'YYYY-MM-DD'
BLOB二进制形式的长文本数据,最大可达4G
TEXT长文本数据,最大可达4G

创建表

方式一

CREATE TABLE IF NOT EXISTS myemp1(
id INT,
name VARCHAR(15),
hire_date DATE
);

这里创建表,其中包含3个字段。

创建完表,查看表结构:

DESC myemp1;

查看创建表的语句结构

SHOW CREATE TABLE myemp1;

如果创建表时没有指明使用的字符集,则默认使用表所在的数据库的字符集。

方式二

基于现有的表创建新的表。

CREATE TABLE myemp2 AS SELECT employee_id, name, salary FROM employees;

查看表数据

SELECT * FROM myemp2;

可以看到myemp2表中还有数据,所有使用AS方式创建的表,同时会导入数据。

说明:

  1. 查询语句中字段的别名,可以作为新创建表中的字段的名称。
  2. 此时的查询语句可以结构比较丰富,使用前面学习过的各种SELECT。

CREATE TABLE myemp3
AS
SELECT e.employee_id emp_id, name, d.department_name dname
FROM employees e JOIN departments d
ON e.department_id = d.department_id;

练习一

创建一个表employees_copy,实现对employees表的复制,包括表数据。

CREATE TABLE employees_copy
AS
SELECT *
FROM employees;

练习二

创建一个表employees_blank,实现对employees表的复制,不包括表数据。
不包括表数据,可以通过过滤条件过滤,使得查出的结果是空。

CREATE TABLE employees_copy
AS
SELECT *
FROM employees
WHERE 1 = 2;

这里使用1 = 2过滤,条件肯定为FALSE,所有查不出结果。

今天先学习到这里,明天继续。