mysql

//case 用法 when table.a= ? 时 then ......
select table.s,
case ( table.a
  when 1 then table.s *100
  when 2 then table.s *1
  else table.s *5
  end
) as table.a
from table


/*  group_concat(x,y) ,x是需要连接的字段,y是连接符号,需要和group by 配合使用
*/
select  dept_no,group_concat(emp_no,",") from dept_emp group by dept_no


//sqlite_master包含了所有表的索引
select  name  as cnts
from sqlite_master where type = 'table'
/*replace(x,y,z) x为被操作的字符串,y为需要被替换的是?,z为替换成?
*/
select (length(",A,B")-length(replace(",A,B",",",""))) as cnt


/*sunstr(x,y,z) x为字符串,y为起始位置,1就是第一个,-1就是倒数第一个,z是截取长度,不填z则默认截取到字符串最后*/
select name from table1 order by substr(name,length(first_name)-1)



//insert/update/add
//after 和 before 来设置触发器执行时间
//new 和 old 可以获得table1被改变前/后的相关列的值
//begin 和 end 之间为触发器的操作 
create trigger trigger1 after insert on table1
begin
  insert into table2 values(new.id,new.name);
end;



//在表中新加字段
alter table actor add 
create_date datetime not null default '0000-00-00 00:00:00'



//创建视图(拿数据单建一个表)
create view a_v(n_v,u_v) as(select name,username from actor);

create view a_v as select name as n_v,usernme as u_v from actor;

//插入或忽略(若已存在)
insert or ignore into actor  values
('3','ED','CHASE','2006-02-15 12:34:33');
//插入或更新
insert or replace into actor  values
('3','ED','CHASE','2006-02-15 12:34:33');
//唯一索引
create unique index uniq_idx_firstname on actor(first_name);
//普通索引
create index idx_lastname on actor(last_name);

INNER JOIN 两边表同时有对应的数据,即任何一边缺失数据就不显示。
LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。
RIGHT JOIN 会读取右边数据表的全部数据,即便左边表无对应数据。

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
、、

LOCK IN SHARE MODE=FOR UPDATE===========
可重复读隔离级别下,MVCC版本生成时机在事务的第一次select,但是select分为不加锁和加锁,如果不加锁,那么其他事务就可以对表进行操作----
在此时

  1. 如果事务2删除了某一行,那么事务1在修改被删除的这一行之后,再次select这一行会发现数据并没有被修改。
  2. 如果事务2添加了某一行,那么事务1在修改数据时的where如果恰好包含了新增的这一行,那么在再次select时事务1会发现多了一行,出现幻读。
    如果加写锁
    1.事务2删除/添加/修改了某一行并且提交,事务1查询时会查询到表的最新版本。
    2.事务2删除/添加/修改了某一行但尚未提交,事务1用带写锁的查询会被阻塞,因为不管在任何隔离级别下,删除/添加/修改操作都会被innoDB自动上写锁(排它锁)。

读未提交级别:增删改 有排它锁,查没有。
读已提交级别:增删改 有排它锁,在每次查的时候MVCC会更新一个版本。
可重复度级别:增删改 有排它锁,在第一次查的时候MVCC会更新一个版本,在查询时加了排它锁时会更新到最新版本。
串行化级别:增删改查都自动上排它锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值