标签:
玩转mysql总结:、、mysql中关键字是不需要区分大小写的 例 select SelecT froM 都是可以使用的 
mysql基本链接操作: 
innerJoin leftJoin(查出左边表所有的数据,即使右边表的数据不匹配也会以空的数据返回) rightJoin(全部返回左边表的数据,即使左边表的数据为空) 
mysql存储引擎: 
Archive:数据存档引擎(数据行被插入就不能再修改了) 
blackhole:写操作是删除数据,读操作时返回(空白)数据 
falcon:用来进行事务处理的存储引擎 
innodb;具备外键支持的存储引擎 
merge:管理由多个myisam数据表构成的数据表集合 
myIsam:默认的存储引擎 
memory:内存里的数据表 
use 
show语句 
show createdatabases: 
查看所有的数据表 
show tables; 
查看所有的表 
show columns from tableName==desc tablename 
查看数据表里列的信息 
show index from tableName; 
查看数据表索引的信息 
like 的使用 : 
like %s% 语句中包含s的 
s% 以s开头 
%s 以s结尾
子查询:= <>(not equal) > < >= <= <=> 
where(条件判断) 语句里不能使用 聚合函数 该语句的作用是应该选取那些数据行,后面的条件应该是只返回一个值 
例:select * from student where id=(select min(student_id) from student);
in notIn的使用 
如果你的操作数将返回多个数据行,就可以使用 in 和 notIN 
里 select * from student where (studnet_id ,age)in(select student_id,age from student where age>10//该语句返回多个数据行);
All any some 
作用是集合一个相对比较操作符,对一个数据列子查询的结果进行测试(测试值用于和子查询的一部分或全部的值进行匹配 例<=any true); 
例:select brith from student where britn <= alL(SELECT BRITH FROM STUDNET ); //返回的将是数据表的一部分值 
exists 和 notEXISTEST 
测试数据是否返回数据行
将子查询改为连接查询 
例:select * from score where event_id in(select event_id from grade_event where catagery=‘T‘); 
转换为简单的连接操作 
select * from score whre event_id inner join grade_event on score_id=grade_eventId where catagery=‘T‘
union:默认情况下进行的是连接操作,默认情况union会去除掉重覆的语句行 unionAll将会保留重覆的数据行 
若想将union结果作为一个整体进行排序 则需要作如下所示的操作 (select id,name from student)union (select * from sd) order by name;\\
视图的使用: 
crate view viewName as select * from student where name=“hellowordd”; 
要点:1:默认情况视图中的例与原表中的例相同—若你需要 修改 则使用 create view viewName (viewColumnName,viewColumnName)as select * from studnet;
2:可以使用 orderBY语句和limit语句其效果与在底层数据表中的效果相同的 3:在试图上进行的操作将真正影响到数据库底层的操作。说明对数据库使用是生效的
delete操作的使用
delete from student where id=1; deelte 一次性删除多张表的数据–delete t1 t2 from t1 inner join t2 on t1.id=t2.id; 
若想删除不匹配的数据行 则使用 delete t1 t2 from t1 left join t2 on t2.id=t1.id where t2.id is null
事物的特性:acid atomic(原子性(数据的操作是一个原子单元不会被影响)) consistent(一致性数据的操作前后都是一致的,稳定 事物不会把你的数据弄得一团糟) isolate的(孤立性)(数据前后的操作不会相互影响) durable(持久性)数据一旦存储将会永久的保存在数据库 
myisam:数据表不支持事物 innodb支持事物 
事物的隔离型 
脏读:某个事物的修改 在其尚未被提交之前就被其它事物看到 
不可重覆读取:两次select查询到的结果不一致 
幻读:某个事物看到了其重未见过的数据 
innoDb默认是RepeatableRead(三种都是 否否否)
解决事物问题的 非实物解决方案 
//使用表的锁定 
lockTables unlockTables () 
例 lock tables studnet write;//给stuedent加上一个 
//dosomething 例 select * from student where age=10; 
unlock tables; 
2:使用相对更新操作,不使用绝对更新操作 UPDATE INVENTORY SET QTY=QTY-3 WHERE INVENTROY =10; 
外键的创建和使用 
foregin key
使用fulltext 索引搜索引擎 针对 myisam引擎 
自然语言模式 
布尔模式 
查询扩展模式 
使用的时候 先创建数据表 再创建搜索引擎
例 select * from student where match(attribution) against(‘helloworld‘); 
null:表示没有数据 数据未知,数据缺失,数据超出范围 
给日期加上一个零就可以将其转换为数值 
curdate()+0//将日期值转换为数值2009-12-3 20081203 
curtime+0 
舍弃小数部分 
cast(now() as unsigned) 161528.0000000 —-161528
mysql创建存储过程—create procedure proceDureName()
dosomething 例 select * from student;
创建复合语句的存储过程 
delimeter $ 
create procedure greetings() 
begin 
//声明一个变量 
declare use char(22) charascter set utf-8 
set use=(select current_user()); 
if instr(user,‘@‘)>0 then 
set user =substring_index(user,‘@‘,1); 
end if; 
if user=‘‘ then #anonymous user 
set user =‘earthing‘; 
end if; 
select concat(‘Greetings‘,‘,user‘,‘!‘) as greeting ; 
end; 
delimiter ; 
存储过程的调用 call greetings()//未完待续。。。。。。。。。
标签:
原文地址:http://my.oschina.net/u/876290/blog/364432