目录
1. DDL
DDL 为数据定义语言,对表进行增create, 删delete和改update
2. 表的增和删除,修改,(DDL语句)
2.1. 表的创建create(可自行定义默认值)
create table 表名(
字段名1 数据类型1 (default xx),
字段名2 数据类型2,
字段名3 数据类型3,
---
);
注意事项:
1) 表名建议以t_开头,见名知意;字段名也是见名知意
2.2. 表的删除drop
//方式一:不判断是否存在,直接删除(如果不存在会进行报错)
drop table t_time1;
//方式二:首先判断是否存在,再进行删除
drop table if exists t_time12;
2.3. 表的修改:alter(用的少)
3. mysql中的数据类型(常见十类)
- varchar(最长255)
1)可变长度的字符串,不需要先定义大小,比较智能,节省空间;但是需要动态分配空间,比较慢 - char(最长255)
1)定长字符串,,固定分配,分配速度比较快;但是不智能,浪费空间 - 整型:int(最长11),bigint
1)int 数字中的整数型,等同于java中的int;bigint:数字中的整数型,等同于java中的long - 浮点型:float和double
1) 数字中的单精度和多精度浮点型数据 - 日期类型:data和datatime
1) data:短日期,只包括年月日;datatime:长日期,包括年月日时分秒 - 字符大文本:clob
1) 存放大文本,最多可以存储4G大小的字符串.比如一篇文章存储。 - 二进制大对象:blob
- 专门用来存储图片,声音和视频等流媒体数据,需要使用IO流才能存取数据
4. 创建,插入,修改和删除(DML语句)
4.1. 创建
1)创建一章学生表,包含信息为姓名,学号,性别和身高
create table t_student (
name varchar(255),
number int(8),
sex char(2),
high float(5)
);
//显示创建的表结构:
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| name | varchar(255) | YES | | NULL | |
| number | int(8) | YES | | NULL | |
| sex | char(2) | YES | | NULL | |
| high | float | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
4.2. 插入insert
- 单行数据插入:
//插入全部的列元素
insert into t_student(name,number,sex,high) values('zhangsan',150,'M',173.5); //不能包括中文;
insert into t_student values('zhangsan',150,'M',173.5); //如果要添加全部,可以不写输入类型。
//插入部分的列元素
insert into t_student(name,sxe) values('lisi','F'); //只要一一对应即可。
- 多行数据插入:直接在values后面添加额外的括号即可,但是输入的类型要和前面的一致
//插入全部的列元素
insert into t_student(name,number,sex,high) values('zhangsan',150,'M',173.5),('hexi',170,'F',170); //不能包括中文;
- 插入短日期和长日期
(1):短日期,可以不用日期转变,默认为如下字符串即可‘2022-10-15’
(2):长日期,可以不用日期转变,默认为如下字符串即可‘2022-10-15 21:15:31’
create table t_time1( name varchar(255), stime date,ltime datetime);
insert into t_time1 values('zhangsan','2022-10-15','2022-12-10 23:15:10');
- 注意事项
(1):每执行成功一次insert操作,就会多出一条数据
(2):如果某些字段没有给出输入的值,则会默认为null
(3):在DDL建表的时候,也可以指定默认值,否则统一默认值为NULL。
(4):字段名省略和全部写上是一样的效果。
4.3. 修改update
案例:修改上面插入的名字为王五,时间为1997-02-01
- 修改全部内容(不加限制就会修改全部)
create table t_time1( name varchar(255), stime date,ltime datetime);
insert into t_time1 values('zhangsan','2022-10-15','2022-12-10 23:15:10');
insert into t_time1 values('heicha','2022-10-15','2022-12-10 23:15:10');
update t_time1 set name='wangwu', stime='1997-02-01';
- 修改局部内容(添加限制,修改局部)
update t_time1 set name='kaihui', stime='1997-02-01' where name='heicha';
4.4. 删除delete
- 没有条件,删除全部数据
delete from t_time1;
- 有条件,删除部分数据
delete from t_time1 where name='kaihui';
5. 特有功能
5. 1.快速删除表中的数据**(truncate)**
- truncate删除/和创建的书写格式一样,属于DDL语句
//1)删除表的全部数据,保存表的结构
truncate table dept_back;
- delete删除 ,属于DML语句
//1)删除表某一行数据
delete from dept_back;
- drop,truncate和delete的区别
1)drop:这个是表格定义语言DDL,删除的是表内的数据和表的结构
2)delete:表的管理语言,DML,只操作数据
(1):表中的数据被删除了,但是数据在硬盘中真实存储空间不会被释放!
(2):删除效率比较低,但是支持事务回滚操作,能够恢复数据。
(3):对自增的id 不会进行 重新计数。
3)truncate:表的定义语言,但是 不删除表的结构
(1):删除效率比较高,表被一次截断,物理删除,不支持回滚操作。
(2):属于表的定义语言,删除表的全部数据,但是保存表的结构。
(3):对自增的id 会进行重新计数。
5. 2. 快速创建表(表的复制)
//1)复制表dept,新建一张表
create table dept_back as select * from dept;
5. 3. 将查询的结果插入到一张表中insert
//1)插入表
insert into dept_back select * from dept;