MySQL - 数据

### 数据 ###

增:
  插入数据:insert into ads (stu_name,sex,money_2) values ('lynn','女',100.23);

  插入多条数据:insert into ads () values (),(),()...... --- ','隔开多条数据值

  注:当语句中不写对应字段的话,默认填入所有参数,即values 值个数要与表中所有字段一致


删:
  清空表中数据:truncate tablename; --- 自增长 id 会重新开始,比delete 速度快,因为是从磁盘删除,不能恢复

  删除整个表数据:delete from ads; --- 自增长 id 还会继续增长

  删除指定数据:delete from ads where name = 'lynn';


改:
  修改整个字段的数据:update ads set money = 80;

  修改指定条件的数据:update ads set money = 80 where name = 'lynn';

  修改多字段数据:update ads set sex = 'nv',money = 80 where name = 'lynn';

  在原值基础上做修改:update ads set money = money+100;


查:

  ##### 单表 ####

  指定查询字段:select id,name from ads;

  查询所有字段:select * from ads;

  指定条件查询:select * from ads where sex = '男' and phone = 110;
  (条件可用 and/or 连接;或者用 in (,);或者 between 10 and 100)

  限制查询条数:select * from ads limit 5;(查询前 5 行)

  指定查询行数范围:select * from ads limit 2,4;(查询3、4、5行;0:为第一行)

  模糊匹配-通配符:select * from ads where addr like '%东京%';(% :通配符)

  表起别名:select a.name from ads as a where a.phone = 110;(as 可以省略)

  字段起别名:select name as 姓名 from ads where phone = 110;(as 可以省略)

  模糊匹配-单字符:select * from ads where addr like '东_';('_':单字符匹配)

  排序查询:select * from ads order by id asc;(asc:升序;desc:降序)

  空数据查询:select * from ads a where a.addr = '' or a.addr is null;('':空字符串,null:空)

  去重查询:select distinct money from ads;(distinct:去重某个字段重复数据)

  统计查询:select count(*) 学生人数 from ads;(count:统计行数)

  最大值查询:select max(money) 钱最多 from ads;(max:最大值)

  最小值查询:select min(money) 钱最少 from ads;(min:最小值)

  平均值查询:select avg(money) 平均钱 from ads;(avg:平均值)

  总和查询:select sum(money) 总共多少钱 from ads;(sum:求和)

  分组:select * from ads group by sex;(group by:根据字段进行分组)
  例:根据性别统计男生、女生各有多少人
    select sex 性别,count(*) 人数 from ads group by sex;

  分组后加条件查询:select * from ads group by sex having name like '姚%';(用 having)
  注:分组后条件判断用 having

  多字段分组:select * from ads group by sex,name;(原理,字段间先组合,然后进行分组)


  #### 多表关联 ####

  '='关联:select * from user a,accounts b where a.id = b.user_id and a.username = 'niuniu';

  'left join on':select * from blk a left join score b on a.id =b.id;(把左边表所有的数据都查出来,右边表有匹配的就查出来)

  'right join on':select * from blk a right join score b on a.id=b.id;(把右边表所有的数据都查出来,左边表有匹配的就查出来)

  'inner join':select * from blk a inner join score b on a.id=b.id;(两边表里都匹配的数据查出来)


  #### 子查询 ####

  1、把一条 sql 的结果,作为另一条 sql 的条件
  select * from score a where a.s_id = (select id from blk where stu_name='阿翔');

  2、把一条 sql 的结果,作为另一条 sql 的表
  select * from score a,(select id from blk where stu_name='阿翔') b where a.s_id=b.id;


  #### 合并查询结果 ####

  合并两条查询结果集;条件:两个查询字段个数相同,具有相同的数据类型,合并后的字段名与前面的查询字段名一致

  1、select id,stu_name from blk union slect id,t_name from teacher;(union:可以去重)

  2、select id,stu_name from blk union all slect id,t_name from teacher;(union:不能去重;执行效率高)

 


备注:
  关闭自动提交:set @@autocommit = 0;

  查看提交方式:select @@autocommit;(1:自动提交,0:手动提交)

  手动提交:commit;

  回滚:rollback;(用于提交之前,即在非自动提交条件下,不小心执行错语句,只要没执行提交就可以回滚)

转载于:https://www.cnblogs.com/lynn-chen/p/9010487.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值