mysql-7补充内容
7.补充内容
1.insert
1.语句语法
insert into 表名(字段1,字段2,字段3)values(值1,值2,值3);
insert into 表名(字段1,字段2,字段3)values(值1,值2,值3),(值4,值5,值6),(值7,值8,值9);
insert into 表名(字段1,字段2)select 字段1,字段2 from 表2;
2.注意:
- 注意:字段不需要使用引号,值需要带上;字段名和值要一一对应,数据类型需一致
- insert语句但凡执行成功了,那么必然会多一条记录,没有给其他字段指定值的话,默认值为null
- insert into 表名(),括号中的字段名省略,则表示insert所有
3.insert 日期
-
str_to_date 将字符串varchar类型转换成date类型
-
应用:str_to_date('字符串日期','日期格式')
日期格式
%Y年(%y取后两位) %m 月 %d 日 %h 时 %i 分 %s 秒 str_to_date('字符串',date)
-- error insert into user(id,name,birth) values(1,'zhangsan','01-10-1990'); 出错了:原因类型不匹配,这里birth 是date类型,传入了一个字符串varchar 可以是str_to_date转换
-- 正确用法 insert into user(id,name,birth) values(1,'zhangsan',str_to_date('01-10-1990','%d-%m-%Y') -- 或者是正确的时间格式 如:1990-10-10 insert into user(id,name,birth) values(2,'lisi','1990-10-10')
-
date_format:将date 类型转换成具有一定格式的varchar字符串类型;
-
应用:date_format 可以将日期类型转换成特定格式的字符串(查询时以特定的格式展示)
mysql默认短日期格式:%Y-%m-%d mysql默认长日期格式:%Y-%m-%d %h:%i:%s
select id,name,data_format(birth,'%m/%d/%Y') as birth from t_user
未使用date_format时会进行默认的日期格式化,自动将数据库中的date类型 转换成 varchar类型,并且使用默认的格式 如:1990-10-10
-
获取当前时间
select now() -- 2020-12-07 11:01:22 SELECT LOCALTIME() -- 2020-12-07 11:03:45 select current_time -- 11:01:22 select current_date --2020-12-07 -- 对应函数获取 set @dt = '2008-09-10 07:15:30.123456'; select date(@dt); -- 2008-09-10 select time(@dt); -- 07:15:30.123456 select year(@dt); -- 2008 select quarter(@dt); -- 3 select month(@dt); -- 9 select week(@dt); -- 36 select day(@dt); -- 10 select hour(@dt); -- 7 select minute(@dt); -- 15 select second(@dt); -- 30 select microsecond(@dt); -- 123456
2.update更新数据
update 表名 set 字段名1=值1,字段名2 =值2,字段3=值3..... where 条件;
- 注意这里没有where条件会更新所有数据
3.delete 删除数据
delete from 表名 where 条件
delete from 表名 删除所有
4.快速建表(
复制表
-
将一个查询结果当做一张新建表
-
可以完成表的快速复制
create table emp2 as (select * from emp);
5.快速删除表中的数据
delete from 表名 (DML语句)
-
表中数据被删除,空间不释放
-
删除效率比较低
-
可回滚
快速删除: truncate table 表名(DDL语句)
-
删除效率高
-
不可回滚
6.子查询与内连接的应用
查询和“李军”同性别的所有同学的Sname.
子查询:
SELECT sname FROM students WHERE ssex=(SELECT ssex FROM students WHERE sname='李军');
内连接:
SELECT s1.Sname FROM Students AS s1 INNER JOIN Students AS s2 ON(s1.Ssex=s2.Ssex) WHERE s2.Sname='李军';