您的位置:首页 > 数据库 > MySQL

mysql 4

2015-10-28 10:53 567 查看
1.子查询

select * from a where pid in(2,3,8);

 select * from a where pid in(select id form province);相当于子查询

 select a.id,a.name,age,province from student a inner join province b on s.pid=b.id;内连接

区别:当使用子查询,会在数据库生成一张临时表占用空间,使用内连接可以提高效率,不占空间。

2.查询条件

select name from a where age is null;判断字段是不是null;

select name from a where age = null;是判断它的值是不是null;

and、or、not、=、!=、(<>)、between。。and。。、 not between ...and..、like模糊查询

 select * from a where name like '%小%';是指name里只要有'小'子的数据查出来;

 select * from a where name like '小%';是指name里以'小'子开头的数据查出来;如小李。。王小龙就查不出来;

limit 限制查询数量

 limit n 按照当前默认排序取出前n条

 limit m,n 从下标为m取出n条;m相当于数组下标m也是从0开始的

select * from a order by id desc(降序)/asc(升序,什么都不加就order by 就是升序) limit 0,5;从0开始取5条数据;

group by 分组/一般在统计

 select pid,count(*) from a group by pid;相当于排队把pid一样的数据分组

 count(*)多少条记录/count(id)为id多少记录

 select pid,count(*) as num from a group by pid having num>1;加条件限制遇到分组不能用where 只能having

 order by 、having、limit需要放在group by 后面.先分组在排序

distinct()去重

 select distinct name from a;不能多字段只能单字第查询

 select id,distinct name from a;报错

3.数学函数

abs()绝对值/ceil()向上取整(分页页数可以用到)/floor()向下取整/round()四舍五入/rand()随机数

sum()求和/avg()平均数/max()min()最大最小值/count()字段数/

4.外键 foreign key;保持数据一致性完整性foreign key(字段名称) references 表名称(字段名称)

 (1)表必须是innodb

 (2)相关联的字段都必须建立索引

 (3)相关联的字段必须采用类似数据类型

 insert into xiaodi values(2,'小弟B');不行,因为2里面没有

 delete from dage where id=1;不行 因为删除了大哥里

5.mysql里时间函数

 select unix_timestamp();返回当前时间戳

 select now();当前的时间日期

 from_unixtime(存在时间戳的字段名)

 select from_unixtime(unix_timestamp())

 

 select from_unixtime(unix_timestamp(),'%Y/%m/%d');

6.事务:若一个操作失败,则回滚 至少2条sql语句.

 start transaction;

 update a set id=6 where name='张三';//成功

 update a set id=5 where name='张赛';失败

 rollback;//回滚后第一个sql命令也失败

7.innodb:支持事务,支持外键,不支持全文索引(Myisam支持),行锁机制(锁定一行记录,在未对这行释放之前进行锁定)

 查询select使用mysiam比较好,insert或者update 使用innodb比较好.

 事务:作为单个逻辑工作单元执行的一系列操作,它是一个至少2个的操作命令,这些操作要么都执行,要么都不执行。

  原子性:事务操作被看做是一个逻辑单元,这个逻辑单元操作要么全部完成,要么全部失败

  一致性:只能写入合法的数据到数据库中,不然事务应该rollback

  隔离性:允许多用户对同一数据进行并发访问,且不破坏数据正确性和完整性。多个并行事务修改相互独立.

  持久性:事务结束后,结果永久存在。

  并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任  

       一个时刻点上只有一个程序在处理机上。//高并发情况需要缓存解决。

 外键:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的联  

    系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字

 保持数据一致性完整性foreign key(字段名称) references 表名称(字段名称)

  (1)表必须是innodb

  (2)相关联的字段都必须建立索引

  (3)相关联的字段必须采用类似数据类型

 行锁机制和表锁机制

   (1)innodb的行锁是在有索引的情况下,没有索引的表是锁定全表的.

   (2)行锁是对一行或者一个记录锁定,表锁是对整个表锁定。

 

*primary key主键默认的就是not null 可以不加not null

 count(1<2)计数 不管表达式满足不满足都会算一次/1

 sum(1<2)也是计数 满足才算不满足不算/0

 计算平均分

 select id,name,avg(score) from score group by name having sum(score<60)>=2;

 union与union all  相同字段都一样的union去掉;

 select id,name from a union select id,name from b;

 select id,name from a union all select id,name from b;

 select temp.id,sum(temp.num) from (select id,name fro a union all select id,name from b) as temp group by temp.id;把查询出

的临时表使用.

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql