MySQL的基础DML语句(每日笔记)

初识mysql关于DML与DQL(每日笔记)

DML: 增删改表中数据

  1. 添加数据:

    • 语法

      insert into 表名 (列名1,列名2,....列名n) values (1,2,...值n);
      
    • 注意:

      • 列名和值必须一一对应

      • 如果表名后不定义列名,则默认给所有列添加值

        insert into 表名 values (1,2,...值n);
        
      • 除了数字类型,其他类型需要使用(单双)引号引起来

  2. 删除数据

    • 语法:

      delete from 表名 [where条件]
      
    • 注意:

      • 如果不加条件,则删除表中所有记录
      • 如果要删除所有记录
        • delete from 表名; --不推荐使用,有多少记录就会执行多少次delete操作,效率比较低
        • truncate table 表名;
          1. truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。
          2. truncate不写服务器log,delete写服务器log,也就是truncate效率比delete高的原因。
          3. truncate不激活trigger(触发器),但是会重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID数。而delete删除以后,Identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。

DML语句(增删改表中数据)

添加语句:关键词 insert into

insert into 表名 (列名1,列名2,列名3....)]values (1,2,3...)

注意:列名可写可不写 ,如果不写需要将所有列名添加数据,如果需要对指定列名添加数据,则必须写出列名

insert into也可以同时添加多条数据,使用逗号隔开

insert into 表名 (列名1,列名2,列名3....)]values (值1,值2,值3...),(值1,值2,值3...)

若我希望插入的数据是另一张表中的所有数据

insert into 此表 (列名1,列名2...) select (对应列名1,对应列名2...) from 另一张表

此表中的列名部分语句可以添加可以不添加

如果插入的数据是整张表的每一个字段,那么会按照字段顺序依次插入,

如果插入的字段不是整个表中的字段数,那么需要指定对应的字段名称

修改语句: update

update 表名 set 列名 = 值 限定条件
-- 限定条件可以用where 列名 = 值

注意 where 中可以添加运算符

运算符含义范例结果
=等于5=6false
<>或!=不等于5!=6true
>大于5>6false
<小于5<6true
>=大于等于5>=6false
<=小于等于5<=6true
BETWEEN在某个范围之间BETWEEN 5 AND 10-
AND &&并且5>1AND1>2false
OR ||5>1OR1>2true

删除表中数据:delete from/truncate

能删除一行,也可以删除全部数据,但是能不能删除表结构,同时也不能可以改变计数器(auto_increment)

delete from 表名
delete from 表名 where 条件

truncate 只能整张表删除,同步不会改变表结构,但是可以重置计数器

我们学习过一个删除: drop 可以删除表结构

速度上面说 :drop > truncate > delete

Truncate table 表名 速度快,而且效率高,因为:
truncate table 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放, 相当于drop了整张表又创建一个新的且与之相同的表结构

DQL语句(查询表中的数据)

查询语句:关键字 select

select * from 表名
  • 语法:

    select
    	字段列表
    from
    	表名列名
    where
    	条件列表
    group by
    	分组字段
    having
    	分组之后的条件
    order by
    	排序
    limit
    	分页限定
    
  • 基础查询

    • 多字段的查询

      select 列名1,列名2,...from 表名;
      

      注意:如果查询所有,可以使用*来代替字段列表

    • 去除重复:关键词 distinct

      select distinct 列名1,列名2,...from 表名;
      
    • 计算列:例如计算student 表中math与English 成绩之和

      select name,math,english,math + english from student;
      -- 注意如果字段的值为null,可以使用ifnull关键词
      select name,math,english,ifnull(math,0) + ifnull(english,0) from student;
      

      注意:

      一般可以使用四则运算计算一些列的值.(一般只会进行数值类型的计算)

      ifnull(表达式1,表达式2):null参与的运算,计算结果都为null

      • 表达式1:哪个字段需要判断是否为null
      • 表达式2:如果该字段为null后的替换值
    • 起别名

      select 列名1,列名2,...from 表名 as 新名字;
      -- as可以省略
      
  • 条件查询

    • where子句后跟条件

    • 运算符

      • >,<,<=,>=,=,<>

        select * from 表名 where 列名[>,<,<=,>=,=,<>]条件值
        
      • between...and:在..之间

        select * from student where age between 10 and 20
        
      • like:模糊查询

        select * from student where name like '%张%'
        -- 表示查询名字中带有'张'这个字符
        

        占位符:

        • _ :表示单个的占位符
        • % :表示多个占位符
      • in(集合)

        select * from student where age between 10 and 20
        
      • is null

        注意:null不可以用>,<,<=,>=,=,<>进行判断,可以使用 is null /is not null

      • and或&&

        表示查询多个条件都满足

      • or或||

        表示查询多个条件中满足一个即可

      • not或!

        表示查询列名不为某个值, 一般情况下用作 not null

  • 排序查询

    • 语法:order by 子句

      order by 排序字段1 排序方式1,排序字段2 排序方式2,...
      select * from student order by age
      
    • 排序方式:

      • ASC:升序,默认的 如果不写排序方式就是默认

      • DESC:降序

        select * from student order by age desc
        
  • 聚合函数:将一页数据作为一个整体,进行纵向的计算

    1. count:计算个数
    2. max:计算最大值
    3. min:计算最小值
    4. sum:求和
    5. avg:计算平均值
  • 分组查询

    • 语法:group by 分组字段;

      -- 按照性别分组,分别查询男女同学的平均分
      select sex,avg(math) from student group by sex;
      
    • 注意:

      1. 分组之后查询的字段:分组字段,聚合函数
      2. where和having的区别?
        1. where在分之前进行限定,如果不满足条件,则不参与分组. having在分组之后限定,如果不满足结果,则不会被查询出来
        2. where后不可以跟聚合函数,having可以进行聚合函数的判断
  • 分页查询

    • 语法:limit 开始的索引,每页查询的条数;
    • 公式:每页开始的索引 = (当前的页码 - 1) * 每页显示的条数
    • limit的分页操作是mysql的一个"方言"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值