MySQL简单操作(数据行操作)

行数据级别操作(增、删、改、查)

1.增(Insert into):

1.insert into tb1(name,age) values (‘A’,18),(‘B’,12);

2.将一张表格中的数据,按照对应字段添加到另外一张表格中
 insert into tb1(name,age) select caption,gender from tb2;
 其中caption、gender的值给name、age.

(字符串转数字,如果字符串为数字,可以被直接转换)

2.删(Delete):

1.delete from tb1 where (条件1) and (条件2);

如果条件不满足,比如字段对应不上,则语句仍被执行成功,就是不对表格数据产生影响

3.改(Update):

1.update tb1 set 字段=’ ’ where (条件1) and (条件2);

4.查(Select):

1.select * from tb1 where (条件1) and (条件2);

select * 代表的是查某一张表格中的全部字段,效率会很低。

5.其他:

(a).条件

  1. select * from tb1 where id >1 and name!=‘alex’ and num=12;
  2. select * from tb1 where id between 5 and 20;
  3. select * from tb1 where id in (1,5,8);
  4. select * from tb1 where id not in (1,5,8);
  5. select * from tb1 where id in (select nid from tb2);

(b).通配符

  1. select * from tb1 where name like ‘ale%’;
    以'ale'开头的全部名字,'ale'字符后面可以跟随多个字符,例如alex,alexxx,alexxxxx
  2. select * from tb1 where name like ‘ale_’;
    以ale开头的所有名字,ale字符可以跟随单个字符,例如 alex,alea、aleb

©.限制(分页)

  1. select * from tb1 limit 5;表示取前五行数据
  2. select * from tb1 limit 4,5;表示从下标为4的位置开始,取五条数据。最开始的位置下标为0.
  3. select * from tb1 limit 5 offset 4; 意思和第二句是一样的,但是推荐使用这种语句。

(d) 排序

  1. select * from tb1 order by nid asc;根据nid字段按照从小到大的顺序 升序排列
  2. select * from tb1 order by nid desc;根据nid字段按照从大到小的顺序 降序排列
  3. select * from tb1 order by name desc,nid desc;按照name、nid字段降序排列

(e) 分组(将相同的数据变成一条)

  1. select part_nid as a,count(nid) as b from userinfo group by part_nid
    [字段名1 as a ,字段名2 as b ] 就是将结果字段以a,b的形式展示。
  2. 因为Count是聚合函数,对于聚合函数进行筛选,不能使用where条件语句,必须使用having,比如select part_nid,count(nid) from userinfo group by part_nid having count(nid)>1;
  3. group by 必须在where之后,order by之前,出现聚合函数,并对聚合函数进行筛选时,必须用having。聚合函数还有(max,min,count,avg等)

(f.)表与表之间的联合(重复数据的去重)

  1. select age from tb1 union select nid from tb2;
最后的输出结果是上下结构的结果,如果结果相同则去重 union all 是显示全部结果数据,不去重
| tb1 |
| tb2 | 
  1. 连表: 关键的设置是外键的设置,比如userinfo 的part_nid , part 的nid
1.select * from userinfo ,part where userinfo.part_nid =part.nid;
| userinfo | part | (对应的关系为左右结构,将多表放一起关联表条件进行组合)
  1. lelf join (左关联)
select * from userinfo left join part on userinfo.part _nid =part.nid 

其中在这里 userinfo表与part表进行联接

  1. inner join
select * from userinfo/part inner join part/userinfo on
userinfo.part_nid/part.nid=part.nid/userinfo.part_nid
无视从表主表的位置关系,只要结果出现为null的数据就直接清除,优先使用left join(速度快)
  1. 将一张表的字符信息改成utf8选中表 -----设计表-----选项-----更改字符集和排序规则。
  2. 在查询里面,新建查询过后可以用’–'来注释SQL语句,不必要删除
  3. 网页响应太慢,很大一部分是因为Sql语句不合适导致性能差。

.
各表之间的外键联系

将Scroe表中相对应的Student_id和Course_id变成Student/course表中的数据,利用left join
来实现多个外键进行连表。即select * from Score 
                        left join Student on Scroe.Student_id =Student.sid
                        left join Course on Scroe.Course_id =Course.cid;
Select * from (Select * from tb1) as T
把 (Select * from tb1)的查询结果传给临时变量表T 作为整体1,然后再从T取值。临时表放内存。

去重,可以利用分组group by,也可以在select 后面增加distinct函数进行参数的去重,distinct后跟字段名。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值