DDL 数据操作语言
表的创建和数据类型
-
建表
create table 表名( 字段名1 数据类型, 字段名1 数据类型, ... 字段名1 数据类型 );
表名建议以t_开始或以tbl_开始
-
MySQL中的数据类型
数据类型 描述 varchar 可变字符串,最长255,能够动态分配空间 char 定长字符串(速度更快,可能造成空间浪费) int 整型,最长11 big int 长整型 float 单精度浮点型 double 双精度浮点型 date 短日期 datetime 长日期 clob Character Large Object,字符大对象,超过255,最多存储4G的字符串 blob Binary Large Object,专门用来存储图片、声音、视频等流媒体数据,需要使用IO流 使用方法:
类型(建议长度)
-
创建一个学生表
create table t_student( number int(3), name varchar(255), sex char(1) default 'm', // 指定默认值 age int(3), email varchar(255) );
删除表
drop table t_student; // 当这张表不存在的时候会报错 drop table t_student if exists t_student; // 存在时删除
insert更新语句
使用insert
插入新值
-
语法
insert into 表名(字段名1,字段名2,...) values(值1,值2,...) # or insert into 表名 values(值1,值2,...) // 需要填写完整
如果没有填写具体值,则字段对应值为null
-
格式化数字:
format(数字, 格式)
-
日期转换(通常使用在
insert
语句中):str_to_date
将字符串varchar类型转换成data类型date_format
将date类型转换成具有一定格式的varchar字符串类型注意:数据库中所有标识符全部小写,单词之间使用下划线进行连接
create table t_user( id int, name varchar(32), birth date // 生日也可以使用date日期类型 );
错误:insert into t_user(id,name,birth) values(1, ‘zhangsan’, ‘01-10-1990’); // 1990年10月1日,注意yy-mm-dd顺序
使用
str_to_date('字符串日期', '日期格式')
,使用%Y年, %m月, %d日, %h时, %i分, %s秒
# 需要函数 insert into t_user(id,name,birth) values(1, 'zhangsan', str_to_date('01-10-1990','%d-%m-%Y')); // 1990年10月1日 # 可以不需要函数 insert into t_user(id,name,birth) values(1, 'zhangsan', str_to_date('1990-10-01')); // 1990年10月1日
日期类型转换成字符串
date_format(日期类型数据, '日期格式')
select id,name,date_format(birth, '%m/%d/%Y') as birth from t_user; +------+----------+------------+ | id | name | birth | +------+----------+------------+ | 1 | zhangsan | 10/01/1990 | | 2 | lisi | 10/01/1990 | +------+----------+------------+
数据类型区别
-
date
是短日期,包括年月日信息 %Y-%m-%deg:‘1990-10-01’
-
datetime
是长信息,包括年月日时分秒信息 %Y-%m-%d %h:%i:%seg:‘2020-03-18 15:49:50’
常用:MySQL中获得当前时间,格式为
datetime
,使用now()
插入insert into t_user(id,name,birth,create_time) values(2,'lisi','1991-10-01',now());
-
-
insert
插入多条记录语法:
insert into t_user(字段名1,字段名2) values(),(),(),();
insert into t_user(id,name,birth,create_time) values (1,'zs','1980-10-11',now()), (2,'lisi','1981-10-11',now()), (3,'wangwu','1982-10-11',now());
update修改语句
语法
update 表名 set 字段名1=值1,字段名2=值2... where 条件;
不加 where
将会更新所有数据(每一行的对应字段)
delete删除语句
语法
delete from 表名 where 条件;
不加 where
将会删除该表的所有数据
快速创建表
将一个查询结果当做一张表新建,完成表的快速复制
create table emp2 as select * from emp;
快速删除表中的数据
# 这种删除方式较慢
delete from dept_bak; // 删除dept_bak这张表
delete
语句删除(属于DML语句)
表中的数据被删除了,在硬盘上的真实存储空间不会释放
缺点:效率较低;优点:可以回滚 rollback
truncate table dept_bak;
truncate
语句删除(属于DDL语句)
缺点:无法回滚;优点:效率高,快速;
对表结构的修改
比较少用,一般而言开发过程中不会轻易修改表的结构
使用alter
,属于DDL语句