DDL & DML
写在最前,本篇文章大部分来源于动力节点MySQL入门基础的提炼,并附带自己的理解。主要是为了复习此前学了又忘的数据库。如果同时还能对其他人有所裨益,那就更好不过了。如果有谬误的地方,还请不吝指出。
DDL
表的创建
语法格式:create table 表名(字段名 数据类型, 字段2 数据类型);
在类型后面跟 default
, 可以指定默认值
mysql常见数据类型*
varchar: 可变长度字符串,虽然可以给定值,但会根据字符串的实际长度动态分配空间,速度较慢。255
char: 定长字符串,不管实际长度,分配固定长度空间。使用不恰当,导致空间浪费。255
如何选择?对于已知长度的字段,采用char,否则采用varchar
int 等同于java int 11位
bigint等同于java long
float double
date 短日期类型
datetime 长日期类型
clob 字符大对象,最大4g 超255字符 Character large object
blob binary large object 二进制大对象, 存储图片、声音、视频等。插入数据时,需要使用IO流。
快速创建表
原理:将查询结果当做一张表新建
create table [name1] as select * from [表名];
将as后面的语句当做一个独立的查询结果新建一张表。
删除表:
drop table 表名;
不存在会报错
drop table if exists 表名 ;
存在才会删除
对表结构的增删改
即添加一个字段,删除一个字段,修改一个字段
实际开发,很少 -->成本较高,对后端处理代码会进行大量修改。
DML
insert
语法格式:
insert into 表名(字段名, 字段名2,字段名3) values(值1,值2,值3);
注意:
- 字段名必须和值一一对应
- 如果缺少字段,则默认为null(除非创建表时default指定了默认值);
- insert一旦执行成功,一定会多一条记录
- 一旦省略所有字段/值,相当于全都选上。
插入日期
str_to_date
:将字符串类型转为date类型,第一个参数为字符串,第二个参数为格式,如果字符串格式恰好为%Y-%m-%d
,可以不用这个函数
data_format
:将date类型转成有一定格式的varchar类型,第一个参数为date类型的变量,第二个参数为格式。
如果不使用这个函数则会进行自动转换。
日期格式:
%Y
年
%m
月
%d
日
%h
时
%i
分
%s
秒
如何插入当前时间?
now()函数,带有时分秒信息
date和datetime的区别
date:短日期,只包括年月日信息
datatime:长日期:包括年月日时分秒信息, 默认格式 %Y-%m-%d %h:%i:%s
插入多条记录
在values的括号中可以使用多个括号,以插入多条记录。
将查询结果插入表中
insert into [表名] select xxx from xxx where xxx;
update
格式:
** update ** 表名 ** set ** 字段名1=值1, 字段名2=值2 ** where ** 条件;
注意:没有条件限制会导致所有数据全部更新
delete
格式:
delete from 表名 where 条件;
注意:如果没有条件,会导致整张表数据全部删除。
快速删除表中数据
普通delete语句速度较慢
delete:表中数据被删除了,但是数据在硬盘上的真实存储空间不会被释放。DML
优点:效率较低
缺点:支持回滚
truncate语句删除数据:DDL
效率较高,物理删除
不支持回滚
格式: truncate table [表名];