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='李军';
原文地址:https://www.cnblogs.com/yescarf/p/14097656.html