mysql(2)

来源:互联网 发布:太瘦了知乎 编辑:程序博客网 时间:2024/06/13 21:56
21.mysql多表的update操作,
update pre_common_member m left join pre_ucenter_members um on m.username=um.username set um.uid=m.uid,um.realuid=m.uid WHERE m.uid <> um.uid

22.悲观锁(Pessimistic Lock), 每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。

乐观锁(Optimistic Lock), 每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。

摘自:http://blog.csdn.net/hongchangfirst/article/details/26004335

一般的实现乐观锁的方式就是记录数据版本。数据版本,为数据增加的一个版本标识。当读取数据时,将版本标识的值一同读出,数据每更新一次,同时对版本标识进行更新。当我们提交更新的时候,判断数据库表对应记录的当前版本信息与第一次取出来的版本标识进行比对,如果数据库表当前版本号与第一次取出来的版本标识值相等,则予以更新,否则认为是过期数据。实现数据版本有两种方式,第一种是使用版本号,第二种是使用时间戳。

23.mysql子查询

24.视图

  • 数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;
  • 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据;
  • 视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变;
  • 在使用视图的时候,可以把它当作一张表。
    CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
25.将一个文件中的数据添加进表中,LOAD DATA INFILE '文件路径' INTO TABLE 表名字;导出,SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;

26.日期

select CURDATE(); //2017-03-17select YEAR(CURDATE()); //2017 MONTH() DAY()select RIGHT(CURDATE(),5); //03-17
DATE_ADD()给日期增加的函数,例:

//输出下个月的月份的两种方式
select MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));SELECT MOD(MONTH(CURDATE()), 12) + 1;//mod是取余
27.使用变量
SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
28.多源复制,一个数据库从服务器从多个主服务器拷贝数据 https://dev.mysql.com/doc/refman/5.7/en/replication-multi-source.html





0 0
原创粉丝点击