database复习===关系代数基本运算
来源:互联网 发布:手机c语言编辑器中文 编辑:程序博客网 时间:2024/05/22 06:44
1。选择运算,那些符号相当难打出来,还是算了。选择(select)运算选出满足给定谓词的元组。取行操作
2。投影运算(project)。返回作为参数的关系的某些属性。由于关系是一个集合,所以所有重复的行均被剔除。取列操作
3。并运算(union)。
4。集合差运算(set-difference)
5。地卡尔积运算
Union ,unionall 相当于交
intersect,intersectall 相当于并
except,except all 相当于减
加了all之后能保留重复相当于交
当然这些可以用 嵌套查询也可解决,in ,not in。
关键词 some,至少比某一个要大,>some
select branch_name from branch whereassets>some(select assets from branch wherebranch_city='Brooklyn')找出那些至少比branch中位于brooklyn的assets其中一个要大的branch_name.
exists,not exists
unique,not unique.测试是否有重复元素
foreign key(branch_name) references branch one deletecascade,
意为这张表的banch_name依赖于branch这张表,如果branch删除了某个banch_name,则现在这张表也会做联级删除。
连接池的概念。
php一般没有连接池这个概念。借助apache的进程池,所以一般就不实现连接池。不过sqlrealy
myisam
说明当数据表有一个读锁时,其它进程的查询操作可以马上执行,但更新操作需等待读锁释放后才会执行。
说明当数据表有一个写锁时,其它进程的读写操作都需等待读锁释放后才会执行。
"
在以下情况下,表锁定优先于页级或行级锁定:
· 表的大部分语句用于读取。
· 对严格的关键字进行读取和更新,你可以更新或删除可以用单一的读取的关键字来提取的一行:
· UPDATE tbl_name SET column=value WHEREunique_key_col=key_value;
· DELETE FROM tbl_name WHERE unique_key_col=key_value;
· SELECT 结合并行的INSERT语句,并且只有很少的UPDATE或DELETE语句。
· 在整个表上有许多扫描或GROUP BY操作,没有任何写操作。
"
竟然发现,运行update book set name='abc' wherenum=11;后,有结果出现了,说明没有被锁住,
这是为什么呢,难道 2 行数据和 5 行数据,对MySQL 来说,会产生锁行和锁表两种情况吗。经过跟网友讨论和翻阅资料,仔细分析后发现:
"InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁!"
而且这里的索引无论是何种索引都可以,唯一索引,主键索引,普通索引都行。
2。投影运算(project)。返回作为参数的关系的某些属性。由于关系是一个集合,所以所有重复的行均被剔除。取列操作
3。并运算(union)。
4。集合差运算(set-difference)
5。地卡尔积运算
Union ,unionall
intersect,intersectall
except,except all
加了all之后能保留重复相当于交
当然这些可以用 嵌套查询也可解决,in ,not in。
关键词 some,至少比某一个要大,>some
select branch_name from branch whereassets>some(select assets from branch wherebranch_city='Brooklyn')找出那些至少比branch中位于brooklyn的assets其中一个要大的branch_name.
exists,not exists
unique,not unique.测试是否有重复元素
foreign key(branch_name) references branch one deletecascade,
意为这张表的banch_name依赖于branch这张表,如果branch删除了某个banch_name,则现在这张表也会做联级删除。
连接池的概念。
php一般没有连接池这个概念。借助apache的进程池,所以一般就不实现连接池。不过sqlrealy
myisam
说明当数据表有一个读锁时,其它进程的查询操作可以马上执行,但更新操作需等待读锁释放后才会执行。
说明当数据表有一个写锁时,其它进程的读写操作都需等待读锁释放后才会执行。
"
在以下情况下,表锁定优先于页级或行级锁定:
· 表的大部分语句用于读取。
· 对严格的关键字进行读取和更新,你可以更新或删除可以用单一的读取的关键字来提取的一行:
· UPDATE tbl_name SET column=value WHEREunique_key_col=key_value;
· DELETE FROM tbl_name WHERE unique_key_col=key_value;
· SELECT 结合并行的INSERT语句,并且只有很少的UPDATE或DELETE语句。
· 在整个表上有许多扫描或GROUP BY操作,没有任何写操作。
"
竟然发现,运行update book set name='abc' wherenum=11;后,有结果出现了,说明没有被锁住,
这是为什么呢,难道 2 行数据和 5 行数据,对MySQL 来说,会产生锁行和锁表两种情况吗。经过跟网友讨论和翻阅资料,仔细分析后发现:
在以上实验数据作为测试数据的情况下,由于num字段重复率太高,只有 2 个值,分别是 11 和 12. 而数据量相对于这两个值来说却是比较大的,是10条, 5 倍的关系。
那么 mysql 在解释 sql 的时候,会忽略索引,因为它的优化器发现:即使使用了索引,还是要做全表扫描,故而放弃了索引,也就没有使用行锁,却使用了表锁。简单的讲,就是MYSQL无视了你的索引,它觉得与其行锁,还不如直接表锁,毕竟它觉得表锁所花的代价比行锁来的小。以上问题即便你使用了force index强制索引,结果还是一样,永远都是表锁。
"InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁!"
而且这里的索引无论是何种索引都可以,唯一索引,主键索引,普通索引都行。
- database复习===关系代数基本运算
- 关系代数基本运算
- 关系代数基本运算
- 关系代数的基本运算
- 【数据库】关系代数基本运算
- 【数据库】关系代数基本运算
- 【数据库】关系代数基本运算
- 数据库查询的基本运算,关系代数
- 【数据库复习】关系代数
- 关系代数复习
- 关系代数运算
- 关系代数运算除
- 关系代数运算
- 关系代数运算符
- 代数系统--基本运算
- 关系代数中的除法运算
- 关系代数运算So Easy
- 关系代数中的除法运算
- xml 学习(教训啊,还是要实战代码
- Linux 非常用命令锦集
- 给ASM磁盘组加空间!
- 最近工作的一些杂记
- memcache 分布式缓存
- database复习===关系代数基本运算
- ios旋转屏幕总结 详细教程
- 算是阅读笔记吧----一些数据库的设…
- RabbitMQ 消息队列服务器 进程通讯
- RabbitMQ的使用
- javascript 转换Json字符串为JSON对象
- Linux下的虚拟摄像头
- 深入解析printf/spintf/snprintf中的类型转换
- UVaOJ 10055 - Hashmat the Brave Warrior