DDL&DML
DDL(create,drop,alter)
DDL,Data Definition Language 数据定义语言,用来定义数据库对象(数据库,表,字段)
1.建表
语法格式:
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型
);
2.数据类型
- varchar(最长255)
- 可变长度的字符串,比较智能,节省空间
- 会根据实际的数据长度动态分配空间
- 优点:节省空间
- 缺点:需要动态分配空间,速度慢
- 姓名可以选varchar
- char(最长255)
- 定长字符串
- 不管实际的数据长度是多少,分配固定长度的空间去存储数据
- 使用不恰当的时候,可能会导致空间的浪费
- 优点:不需要动态分配空间,速度快
- 缺点:使用不当可能会导致空间的浪费
- 性别可以选char
- int(最长11)
- 数字中的整型。等同于java的int
- bigint
- 数字中的长整型。等同于java中的long
- float
- 单精度浮点型数据
- double
- 双精度浮点型数据
- date
- 短日期类型
- datetime
- 长日期类型
- clob
- 字符大对象
- 最多可以存储4G的字符串
- 比如:存储一篇文章,存储一个说明
- 超过255个字符的都要采用CLOB字符大对象来存储
- Character Large Object : CLOB
- blob
- 二进制大对象
- Binary Large Object
- 专门用来存储图片、声音、视频等流媒体数据。
- 往BLOB类型的字段上插入数据的时候,例如插入一个图片、视频等,需要使用IO流才行
3.删除表
drop table t_student ; //当这表不存在的时候会报错!
drop table if exists t_student; //如果这张表存在的话,删除
4.快速复制表
create table emp2 as select * from emp;
原理:将一个查询结果当做一张表新建
DML(insert,update,delete)
DML,Data Manipulation Language,数据操作语言,用来对数据库表中的数据进行增删改
1.插入数据insert
语法格式:
insert into 表名(字段名1,字段名2,字段名3…)values(值1,值2,值3);
注意:字段名和值要一一对应。(数量要对应,数据类型要对应)
2.插入日期
- 格式化数字:format(数字,‘格式’)
select ename,format(sal,'$999,999') as sal from emp;
-
str_to_date: 将字符串varchar类型转换成date类型
语法格式:
str_to_date(‘字符串日期’,‘日期格式’)
insert into t_user(id,name,birth) values(1,'zhangsan',str_to_date('01-10-1990','%d-%m-%Y'));
注意:如果提供的日期字符串是这个格式,str_to_date函数就不需要了。
%Y-%m-%d
insert into t_user(id,name,birth) values(1,‘zhangsan’,‘1990-10-01’);
- date_format: 将date类型转换成具有一定格式的varchar字符串类型,通常用在查询日期方面,设置展示的日期格式
select id,name,date_format(birth,'%Y/%m/%d') as birth from t_user;
注意:默认的日期格式化,‘%Y-%m-%d’
-
mysql的日期格式:
- %Y 年
- %m 月
- %d 日
- %h 时
- %i 分
- %s 秒
-
java中的日期格式
- yyyy-MM-dd HH:mm:ss SSS
3.date和datetime两个类别的区别?
date是短日期:只包括年月日信息
datetime是长日期:包括年月日时分秒信息
mysql短日期默认格式:%Y-%m-%d
mysql长日期默认格式:%Y-%m-%d %h:%i:%s
在mysql中怎么获取系统当前时间?
now( ) 函数,并且获取的时间带有:时分秒信息,是datetime类型的
4.修改update
语法格式:
update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3…where 条件;
注意:没有条件限制会导致所有数据全部更新
5.删除数据delete
语法格式:
delete from 表名 where 条件
注意:没有条件,整张表的数据会全部删除
delete语句删除数据的原理?
表中的数据被删除了,但是这个数据在硬盘上的真实存储空间·不会被释放。
这种删除的缺点是:删除效率比较低
这种删除的优点是:支持回滚,后悔了可以再恢复数据
truncate语句删除数据的原理?(DDL操作,用于删除大表,删除后不可恢复)
这种删除效率比较高,表被一次截断,物理删除。
这种删除缺点:不支持回滚
这种删除优点:快速
truncate table dept_bak;