数据定义语言(主要操作表的数据结构,而非数据)
Create创建 drop删除 alter修改
对表结构进行操作。
- 新建表:
Create table (if not exists)表名(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型
);
注意:表名一般以t_或者tbl_开始,可读性更强
表名和字段名都属于标识符。
快速创建表:
mysql> create table emp2 as select * from emp;
原理:
将一个查询结果当做一张表新建!! ! ! !
这个可以完成表的快速复制!! !!
表创建出来,同时表中的数据也存在了! ! !
使用时要保证字段数量相同!
- 数据类型
常见数据类型:
Varchar 可变长度字符串(StringBuffer/StringBuilder)
根据实际数据长度动态分配空间,最长255位
优点:节省空间
缺点:动态分配空间,速度慢
int 整数型(java中的int),最长11位
bigint 长整型(java中的long)
float 浮点型(java中的float double)
char 定长字符串(String)
定长字符串,最长255
不管实际的数据长度是多少
分配固定长度的空间去存储数据
使用不恰当的时候,可能会导致空间的浪费
优点:不需要动态分配空间,速度快
缺点:使用不当可能会导致空间的浪费。
date 日期类型 (对应Java中的java.sql.Date类型)
Datetime 长日期类型
BLOB 二进制大对象(存储图片、视频等流媒体信息)
Binary Large OBject (对应java中的Object)
往BLOB类型的字段上插入数据的时候,例如插入一个图片、视频等,
你需要使用IO流才行。
CLOB 字符大对象(存储较大文本,比如,可以存储4G的字符串。)
超过255个字符
Character Large OBject(对应java中的Object)
......
char和varchar怎么选择?
在实际的开发中,当某个字段中的数据长度不发生改变的时候,是定长的,例如:性别、生日等都是采用char。
当一个字段的数据长度不确定,例如:简介、姓名等都是采用varchar。
Create table t_movie
(
No bigint(50) comment ‘编号’, //属于建议长度
Name varchar(255) comment ‘电影名’,
History clob comment ‘故事情节’,
Playdate date()comment ‘上映时间’,
Time double comment ‘时长’,
Image blob comment ‘海报’,
Type char(50) comment ‘电影类型’,
)Comment ‘电影’;
- 删除表
Drop table (if exist) 表名;
改:对表属性、表字段进行修改,关键字alter
- 修改表结构
表结构的修改,又可分为增删改
(1) add 增加(增加一个字段)
ALTER TABLE 表名ADD 字段 数据类型;
alter table t_user add phone char(11);
(2) drop 删除(删除一个字段)
alter table 表名 drop 字段;
(3) change 修改列的信息结构
ALTER TABLE 表名 CHANGE字段名 字段类型 ....;
mysql> alter table t_user modify name char(11);
mysql> alter table t_user change name ename varchar(20);
(4) modify 修改列的信息结构
经研究modify用法与change类似。
(5) rename (修改表名)
alter table 原表名 rename 现表名;
其等价于
rename table 原表名to 现表名;
mysql> alter table t_user rename user;
mysql> rename table t_user to user;
- 查:查看表结构
(1) 查看表的字段信息
show COLUMNS FROM 表名;
其等价于
describe 表名; (简写为 desc 表名;)
mysql> show columns from user;
mysql> desc user;
(2) 查看表的创建过程
show create table 表名; (该语句返回该表创建时使用的sql语句)
mysql> show create table user;