狂人日记day9
创建表
Create table t_student(
no int,
sex char(1),
name varchar(255),
age int(3),
email varchar(255));
删除表
drop table t_student;//如果不存在表报错
Drop table if exits t_student;
插入数据
dml
insert into 表明(字段) values (值)
字段与值要一一对应
数量和数据类型对应
insert into t_student(no, name,sex,age,email) values(1,‘zhangsan’,‘m’,20,‘zhangsan@123.com’);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-moGfSICm-1621656672160)(/Users/suannai/Library/Application Support/typora-user-images/image-20210519212115626.png)]
insert into t_student(no) values (1);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w37pPzj5-1621656672161)(/Users/suannai/Library/Application Support/typora-user-images/image-20210519212310474.png)]
insert 只要执行成功 必然会多一条记录
没给其他值 默认是null
如果不是null可以提前指定默认值
前面有default值的话则为default
可以省略
insert into t_student() values(1,‘zhangsan’,‘m’,20,‘zhangsan@123.com’);
insert into t_student() values(1’);//这种是都写1了 则不行
insert 插入日期
格式化数字:format
format(数字,格式)
select ename,format(sal,’$999,999’) as sal from emp;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hSzUaFNg-1621656672161)(/Users/suannai/Library/Application Support/typora-user-images/image-20210519213036936.png)]
str_to_date:将varchar转为date
data_format:将data转varchar
drop table if exists t_user;
create table t_user(
Id int,
Name varchar(32),
birth date
);
desc t_user;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GKAoWEaa-1621656672162)(/Users/suannai/Library/Application Support/typora-user-images/image-20210519213444974.png)]
Str_to_date(“字符串日期”,‘日期格式’)
Mysql 日期格式
- %Y年
- %m月
- %d日
- %h时
- %i分
- %s秒
insert into t_user(id, name,birth) values(1,‘zhangsan’,str_to_date(‘1999-08-26’,’%Y-%m-%d’));
date_format(日期类型数据,‘日期格式’)
select id, name,date_format(birth,’%m/%d/%Y’) as birth from t_user;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-68iq0epO-1621656672162)(/Users/suannai/Library/Application Support/typora-user-images/image-20210520151503541.png)]
自动将数据库中date类型 转换为特定varchar类型
date 和 datatime 的区别
date 短日期 只包括年月日
date %Y-%m-%d
datetime 长日期 包括年月日时分秒
datetime %Y-%m-%d %h:%i:%a
drop table if exists t_user;
create table t_user(
id int,
name varchar(32),
birth date,
Create_time datetime
);
- 注意 varchar后面必须跟需要的字节
insert into t_user(id, name,birth,Create_time) values(10,‘zhangsan’,‘1999-01-01’,‘1999-01-01 6:20:3’);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1TmJvsNy-1621656672163)(/Users/suannai/Library/Application Support/typora-user-images/image-20210520152734109.png)]
mysql怎么获取当前时间
Now()
insert into t_user(id, name,birth,Create_time) values(10,‘zhangsan’,‘1999-01-01’,now());
update
update 表明 set 字段名 1 -值1 where 条件;
Update t_user set name = ‘jack’, birth = ‘2000-1-1’ where id = 10;
没有where 会全部都改
delete
delete from表明 where 条件
没有条件 整张表的数据会全部删除
Delete from t_user where id= 2;
删除所有
delete from t_user;
insert 一次插入多条记录
insert into t_user (id, name,create_time) values
(1,‘zhangsan’,now()),
(2,‘lisi’,now()),
(3,‘zhaoyi’,now());
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-afBLvGHs-1621656672163)(/Users/suannai/Library/Application Support/typora-user-images/image-20210520154009318.png)]
快速创建表
create table emp2 as select * from emp;
原理 : 将查询结果作为一张表新建
create table mytable as select empno,ename from emp where job = ‘MANAGER’;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-se3pJZYO-1621656672163)(/Users/suannai/Library/Application Support/typora-user-images/image-20210520154301951.png)]
insert into t_user select *from dept; //很少用
删除大表
快速删除表中数据
delete from dept_bak;//删除方式比较慢
delete 删除空间不释放
优点 :以后可以恢复
缺点: 效率低
truncate:物理删除
删除效率高,表被一次截断
缺点:不支持回滚
delete 属于dml语句
truncate 属于ddl语句
Drop 是直接把表删除
表结构的增删改
在实际开发中 需求一旦确定 表设计好很少进行表结构的修改
动表结构 java代码就需要修改
用alter 属于ddl
实际用可视化工具修改