MySQL之表操作一

1>存储引擎的概念

    如之前所言,mysql中建立的库,其实就是创建文件夹,在库中建立的表,其实就是该文件夹下创建文件。
    操作系统上存储数据的文件有不同的类型,每种文件类型对应有各自不同的处理机制:比如处理文本用txt,
    处理表格用excel,处理图片用jpg等
    数据库中的表也有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。
    存储引擎其实就是一种如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方
    法。
因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和
    操作此表的类型)
    在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql
    数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据

    自己的需要编写自己的存储引擎。

    1.1>MySQL支持的存储引擎

    

    其中:InnoDB 存储引擎是MySQL默认存储引擎,亦是最为常用的一种引擎。

    其他如 Memory可用于存放临时数据,Blackhole可以处理垃圾数据。

    1.2>使用存储引擎

        -->可以建表的时候指定

        如:create table innodb_t1(id int,name char)engine=innodb;

        -->或者更配置文件指定

        [mysqld]
        default-storage-engine=INNODB

        innodb_file_per_table=1

    1.3>存储引擎实例

        用innodb,myisam,memory,blackhole分别创建表并插入数据,查看结果,如下

        

        -->innodb生成两个文件,.frm存放表结构,.idb(innodb的简写)存放表数据,

        -->myisam生成三个文件,.frm存放表结构,另外两个文件是该引擎的数据处理文件

        -->memory只有表结构文件,没有存放数据的文件,数据存放在内存里,故没有生成数据文件

        -->blackhole也是只有表结构,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录,

                所以也没有且不必生成数据文件。

2>表的增删改查

    -->创建表

        语法:create table 表名(字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度) 约束条件]);

        注:同一张表中字段名不能相同,字段名和数据类型必须有,宽度和约束条件可选。

    -->查看表

        describe 表名; 可简写 desc 表名;
        show tables; # 查看当前库下所有表名

        show create table t1\G; # 查看表详细结构,可加\G

        

    -->修改表

        1. 修改表名
      ALTER TABLE 表名 RENAME 新表名;
        2. 增加字段(默认增加至末尾,可用first、after指定位置)
      ALTER TABLE 表名 ADD 字段名  数据类型 [完整性约束条件…],
                       ADD 字段名  数据类型 [完整性约束条件…];
      ALTER TABLE 表名 ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
      ALTER TABLE 表名 ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
        3. 删除字段
      ALTER TABLE 表名 DROP 字段名;
        4. 修改字段
      ALTER TABLE 表名  MODIFY  字段名 数据类型 [完整性约束条件…];
      ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

      ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

    

    

    -->复制表

        复制表结构+记录 (key不会复制: 主键、外键和索引)

        create table new_service select * from service;

        只复制表结构
        create table new1_service select * from service where 1=2;   # 条件为假,查不到任何记录

        mysql> create table t4 like employees; #或者用like

    

    

    

    

    -->删除表

        DROP TABLE 表名;

猜你喜欢

转载自blog.csdn.net/huangql517/article/details/80235754