ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 8使用数据库和表

8使用数据库和表

原创 Linux操作系统 作者:安佰胜 时间:2011-01-08 11:47:34 0 删除 编辑


8使用数据库和表

====================

对blob,text字段可以枪支行的制定添加索引的字符个数
 create index ind_xx on tab_xx(col_name(100));
 为在表tab_xx的col_name字段的前100个字符上创建索引ind_xx
 
删除索引
 drop index ind_xx on table_name;

mysql支持全文检索类型函数fulltext
 alter table table_name add fulltext index (column_name);
 创建好索引后使用against以及match函数就能进行更好的检索
 select match(column_name) against('char') from table_name;
 同时支持布尔搜索
 select * from table_name where match(column_name) against ('char') in boolean mode);
 
 当修改影响fulltext索引的服务器变量时,激活修改后必须重建索引
 可以删除索引后重建
 或者使用带有quick参数的repair table命令重建
 repair table table_name quick;
 
 
----------------

获取表定义
 show create table table_name;
删除外键
 alter table table_name drop foreign key key_name;

外键自动维护完整性
 create table table_name
 (id int not null,
  fid int not null,
  foreign key (fid) references table_name_pk(column_pk) on delete cascade)
  type=innodb;

delete子句中可用的操作
 
 cascade  删除包含与已删除键值有参照关系的所有记录
 set null 修改与已删除值有参照关系的所有记录,使用null值替换
 restrict 拒绝修改要求,知道使用删除键值的辅助表被手工删除,并且没有参数是这个值是默认值
 no action 什么都不做

类似delete子句,还有on update xxxx子句可以使用。 

----------------

表类型

建表时type关键字指定类型

 myisam
 isam
 heap
 berkeleydb
 innodb
 merge

myisam表类型
 延伸了isam类型,也是mysql的默认表类型
 myisam表优化了压缩比例和速度
 可以在不同操作系统和病态之间进行移植
 支持大文件
 允许对blob和text列进行索引
 支持使用前缀和完全键进行搜索
 设计上能够智能的防治碎片

isam表类型
 与myisam的区别是不压缩
 使用时占用的系统资源少,磁盘空间多
 单表有大小限制,并且兼容性不好
 isam表容易分裂,降低速度
 对数据,索引的压缩有限制
 
heap表类型
 比较快速的散列索引,所以insert比较快
 系统关闭后数据丢失
 类似于临时表
 会消耗ram
 不支持blob以及text列
 创建时最好使用max_rows来限制表中的数据量,避免表扩张过大消耗ram
 create table table_name(id int) type=heap max_rows=10;

berkeleydb表类型
 为满足事务安全而出现
 包括提交和回滚、多用户并发访问、检查点、次要索引、通过日志恢复崩溃、连续的和键控的访问数据
 限制是移动困难,不能压缩索引,所以单表很大
 所以被innodb取代

innodb表类型
 支持事务处理并不会影响速度或者性能
 支持行级锁以及表级锁
 支持无锁定读取操作
 支持异步io,cache读取数据
 支持oracle类似的表空间以及文件级别的存储规划
 支持不同操作系统结构上的完全可移植性
 支持外键、提交、回滚和前滚
 是所有表类型中最接近oracle的一种

merge表类型
 通过把多个myisam表组合到一个单独的表来创建的一种虚拟表
 表结构相同,索引相同才能合并
 支持select delete update操作
 对提高表连接性能有跟好的作用

----------------

建表时可以使用的其他修饰符

 auto_increment   自增插入值
 checksum      是否存储表校验和的布尔标识
 comment       表的描述性注释
 max_rows      表中存储的最大行数
 min_rows      表中存储的最小行数
 pack_keys      是否压缩表索引的布尔标识
 union        映射到一个单独的merge表的表
 data directory   表数据文件的位置
 index directory   表索引文件的位置

-------------------

建表时使用if not exists子句可以避免存在相同名字的表

 create table if not exists table_name(id int); 
 
-------------------

复制表

 create table table_name1 select * from table_name2;
 和oracle相比少了一个关键字as
 同时这种语法不能从原表中复制键,与oracle相同  

 另一种方法:
 create table table_name1 like table_name2;
 包含键值以及索引,但没有数据
-------------------

修改表

 alter table add/drop/change
 change很大程度上等同于modify

重命名表支持两种写法
 alter table table_name1 rename to table_name2;
 rename table_name1 to table_name2;

添加新字段到指定位置
 alter table table_name add column_name column_type after column;

修改表中字段的默认值 
 alter table table_name alter column_name set default 1;
  
修改表类型
 alter table table_name type=innodb;

---------------------

查看表的索引

 show index from table_name;

==============

mysql中常用的操作
 
 create database
 use
 drop database
 create table
 drop table
 show database
 show tables
 show create
 show index
 alter table
   

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13177610/viewspace-684206/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 7mysql函数
下一篇: 9使用数据
请登录后发表评论 登录
全部评论

注册时间:2009-08-26

  • 博文量
    215
  • 访问量
    618016