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博客 ” ,链接:https://blog.itpub.net/13177610/viewspace-684206/ ,如需转载,请注明出处,否则将追究法律责任。