本文已参与「新人创作礼」活动,一起开启掘金创作之路。
(二) 操作表的DDL
表是一种数据库对象,表由若干个字段(列)组成。是我们在操作数据库时使用最为频繁的数据库对象。
1. 创建表
注意:在创建表之前,一定要先使用数据库(也就是说,表一定要创建在某个数据库中)
语法
CREATE TABLE 表名 (字段名1 数据类型,字段名2 数据类型,…,字段名n 数据类型)
建议写成如下格式:
CREATE TABLE 表名 (
字段名1 数据类型,
字段名2 数据类型,
...,
字段名n 数据类型
)
示例
#创建student表包含id,name,age,sex字段
CREATE TABLE student (
id INT,
name VARCHAR(20),
birthday date
)
2. 数据类型
(1)数值类型
整数类型
在建表时默认都是有符号的。 如要使用无符号的,在建表语句中指定。例如:id int unsigned
近似数类型
在MySQL中,可以通过浮点数和定点数来表示近似值。
浮点数
MySQL中的浮点数包括float和double两种,定义格式为float(M,D)、double(M,D)。
M-表示所存储的值共有M位(M的取值范围是0~255)
D-表示小数点后有D位(D的取值范围是0~30)
例如:float(7,4)存储的数据范围时-999.9999~999.9999。
定点数
decimal是MySQL的定点数。相较与浮点数定点数表示的近似值更加精确。定义格式为decimal(M,D)
M-表示所存储的值共有M位(M的默认取值是10,取值范围是1~65)
D-表示小数点后有D位(D的默认取值是0,取值范围是0~30)
(2)字符串类型
MySQL提供了多种针对字符串的存储类型。如下表所示
char和varchar char和varchar两种类型相似,都是MySQL数据库中用来存储较短字符串格式的类型。但这两种类型的主要区别在于存储方式不同,char类型的长度是固定的,而varchar类型的长度是可变的。例如,存储字符串”abc”,char(5)表示存储的字符将占5个字节(包括2个空字符),而varchar(5)只占用3个字节的长度,5只是最大值,当存储的字符小于5个时,按实际长度存储。同时在检索时,char类型会删除尾部的空格,而varchar类型会保留尾部的空格。因为长度的问题,所以导致两种数据类型的数据寻址速度不同,如果字符在10个字节以内,推荐使用char。
(3)日期和时间类型
对于这些数据类型的选择,有如下使用准则:
1、如果要表示年月日,通常使用date。
2、如果要表示年月日时分秒,通常使用datetime。
3、如果要表示时分秒,通常使用time。
4、如果要表示年,通常使用year。
如果要表示当前系统的时间,通常使用timestamp。
timestamp和datetime
虽然timestamp类型和datetime类型一样可以表示日期时间,但两者存在差别。
1、timestamp类型存储的时间与MySQL数据库系统安装时所选的时区有关,在不同时区下查看的同一批数据将会得出不同的结果。
查看时区的SQL语句:
show variables like ‘time_zone’
默认与主机一致,显示结果为SYSTEM。
修改时区的SQL语句:
set time_zone=’+9:00’
#(设置为东9区)
2、两者的取值范围不同
datetime的取值范围是1000-01-01 00:00:00到9999-12-31 23:59:59
timestamp的取值范围是1970-01-01 00:00:01.000000到2038-01-19 03:14:07.999999'。
最常用类型总结:整数 int 、 浮点数 double 、字符串 varchar、日期 date。
3. 创建表示例
需求:创建employee表,包含字段,编号(id int)、姓名(emp_name varchar)、性别(gender enum(‘M’,’F’))、入职日期(hire_date date)、薪资(salary double)、简历(resume text)
create table employee(
id int,
emp_name varchar(100),
gender enum(‘M’,’F’),
hire_date date,
salary double,
resume text
)
4. 查看表
(1)查看所有表
show tables
(2)查看表结构
语法
DESC 表名
或
describe 表名
示例
DESC emp
(3)查看创建表的SQL语句
语法
SHOW CREATE TABLE 表名
示例
show create table emp
5. 复制表结构
语法
CREATE TABLE 新表名 LIKE 旧表名
示例
create table emp1 like emp
6. 修改表
(1)添加新列
语法
ALTER TABLE 表名 ADD 列名 类型
示例
alter table student add remark varchar(200)
(2)修改列的类型
语法
ALTER TABLE 表名 MODIFY 列名 新的类型
示例
alter table student modify remark varchar(100)
(3)修改列名
语法
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型
示例
alter table student change remark intor varchar(100)
(4)删除列
语法
ALTER TABLE 表名 DROP 列名
示例
ALTER TABLE student DROP intor
(5)修改表名
语法
RENAME TABLE 表名 TO 新表名
示例
rename table student to student1
(6)修改字符集
语法
ALTER TABLE 表名 character set 字符集
示例
alter table student1 character set utf8
7. 删除表
语法
DROP TABLE 表名
示例
drop table student1;