MySQL学习笔记(七)
2010-11-28 18:51
190 查看
第七章 MySQL用户使用命令
1、use
use 数据库名;
用于切换数据库,use db_name语句告诉mysql使用db_name数据库作为以后查询
的缺省数据库。数据库保持为当前数据库,直到该会话结束或另一个use语句发出。
多库访问
在表明前要在表名前加上库名
2、desc
desc 表名[列名]
describe 提供有关一个表的列信息。列名可以是一个列名或是包含sql通配符
“%”和“_”的字符串。没有必要用引号包围字符串。
第八章 MySQL事务与锁定
目录
START/COMIT/ROLLBACK
自动提交语句
MySQL SavePoint
MySQL加锁与解锁
1、START/COMIT/ROLLBACK
commit(提交)就是将SQL语句交给数据库系统执行并生效,数据更改于磁盘文件。
缺省的,MySQL运行在autocommit模式。这就意味着,当你执行完一个更新时,MySQL将立刻更新存储到磁盘上。
如果你使用事务安全表,通过下面的命令,你可以设置mysql为非autocommit模式;set autocommit=0;
此后,必须使用commit来存储你的更改到磁盘上,或者使用rollback(回滚),
如果你希望忽略从你的事务开始所作的更改。
1)事务
事务是一个不可分割的数据库操作单元,事务中的操作要么都发生,要么都不发生。
事务可以用start transaction定义:
start transaction;
select @x=sum(sal) from emp where deptno=10;
update t set a=@x;
commit;
2、自动提交语句
有些语句是无法回滚的,因为他们会自动提交,如DDL语句(create/drop database,
create/drop/alter table),事务中不要包含这些语句。
下列命令自动的结束一个事务:
命令 命令 命令
-----------------------------------------------------------------------------
alter table begin create index
drop database drop index drop table
load master data lock tables rename table
set autocommit=1 start transaction truncate table
3、SavePoint(保存点) 需要进一步的联系和上网查看资料
语法:
savepoint identifier;
rollback to savepoint identifier;
4、加锁与解锁
并发性:
在单用户的数据库系统中,无需对数据的一致性和完整性作过多的考虑。
而在多用户并发系统中,多用户对同一数据的并发访问要求以某种机制来实现数据的一致性和完整性。
锁是解决问题的一种手段。
lock tables 表名[read][write],表名[read][write],......
lock tables 为当前线程锁定表。
使用lock tables,你必须拥有一个全局的lock tables权限和一个在相关表上的select权限。
unlock tables
unlock tables释放当前线程拥有的所有锁定。当线程发出一个lock tables,或当予服务器的
连接被关闭时,被当前线程锁定的所有表将被自动的解锁。
如果一个线程在一个表上得到一个read锁,该线程只能从表中读取。
如果一个线程在一个表上得到一个write锁,那么只有拥有这个所得线程可以从表中读取和写表。
其他的线程被阻塞。
1、use
use 数据库名;
用于切换数据库,use db_name语句告诉mysql使用db_name数据库作为以后查询
的缺省数据库。数据库保持为当前数据库,直到该会话结束或另一个use语句发出。
多库访问
在表明前要在表名前加上库名
2、desc
desc 表名[列名]
describe 提供有关一个表的列信息。列名可以是一个列名或是包含sql通配符
“%”和“_”的字符串。没有必要用引号包围字符串。
第八章 MySQL事务与锁定
目录
START/COMIT/ROLLBACK
自动提交语句
MySQL SavePoint
MySQL加锁与解锁
1、START/COMIT/ROLLBACK
commit(提交)就是将SQL语句交给数据库系统执行并生效,数据更改于磁盘文件。
缺省的,MySQL运行在autocommit模式。这就意味着,当你执行完一个更新时,MySQL将立刻更新存储到磁盘上。
如果你使用事务安全表,通过下面的命令,你可以设置mysql为非autocommit模式;set autocommit=0;
此后,必须使用commit来存储你的更改到磁盘上,或者使用rollback(回滚),
如果你希望忽略从你的事务开始所作的更改。
1)事务
事务是一个不可分割的数据库操作单元,事务中的操作要么都发生,要么都不发生。
事务可以用start transaction定义:
start transaction;
select @x=sum(sal) from emp where deptno=10;
update t set a=@x;
commit;
2、自动提交语句
有些语句是无法回滚的,因为他们会自动提交,如DDL语句(create/drop database,
create/drop/alter table),事务中不要包含这些语句。
下列命令自动的结束一个事务:
命令 命令 命令
-----------------------------------------------------------------------------
alter table begin create index
drop database drop index drop table
load master data lock tables rename table
set autocommit=1 start transaction truncate table
3、SavePoint(保存点) 需要进一步的联系和上网查看资料
语法:
savepoint identifier;
rollback to savepoint identifier;
4、加锁与解锁
并发性:
在单用户的数据库系统中,无需对数据的一致性和完整性作过多的考虑。
而在多用户并发系统中,多用户对同一数据的并发访问要求以某种机制来实现数据的一致性和完整性。
锁是解决问题的一种手段。
lock tables 表名[read][write],表名[read][write],......
lock tables 为当前线程锁定表。
使用lock tables,你必须拥有一个全局的lock tables权限和一个在相关表上的select权限。
unlock tables
unlock tables释放当前线程拥有的所有锁定。当线程发出一个lock tables,或当予服务器的
连接被关闭时,被当前线程锁定的所有表将被自动的解锁。
如果一个线程在一个表上得到一个read锁,该线程只能从表中读取。
如果一个线程在一个表上得到一个write锁,那么只有拥有这个所得线程可以从表中读取和写表。
其他的线程被阻塞。