• 深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎


    create schema deepInMySql;
    use deepInMySql;

    -- 查看当前默认存储引擎
    show variables like '%table_type%';

    -- 查看当前数据库支持的存储引擎
    show engines;
    show variables like '%have%';

    -- myisam

    -- 创建表 ai
    create table ai(
    i bigint(20) not null auto_increment,
    primary key (i)
    )engine = MyISAM default charset = gbk;

    create table country(
    country_id smallint unsigned not null auto_increment,
    country varchar(50) not null,
    last_update timestamp not null default current_timestamp on update current_timestamp,
    primary key (country_id)
    )engine = InnoDB default charset = gbk;

    -- 查看表ddl
    show create table ai;

    -- 修改表的存储引擎
    alter table ai engine = innodb;

    create table myisam_char(
    name char(10)
    ) engine = MyISAM default charset = gbk;

    -- 插入记录
    insert into myisam_char values('abcde'), ('abcde '), (' abcde'), (' abcde ');

    -- 查询记录
    select name, length(name) from myisam_char;

    -- innodb

    create table autoincre_demo(
    i smallint not null auto_increment,
    name varchar(10),
    primary key (i)
    ) engine = innodb;

    insert into autoincre_demo values(1, '1'), (0, '2'), (null, '3');

    select * from autoincre_demo;

    -- 查询当前线程最后插入记录使用的值
    select last_insert_id();

    insert into autoincre_demo values(4, '4');
    insert into autoincre_demo values(5, '5'), (6, '6'), (7, '7');

    create table autoincre_demo_myisam(
    d1 smallint not null auto_increment,
    d2 smallint not null,
    name varchar(10),
    index(d2,d1)
    ) engine = MyISAM;

    insert into autoincre_demo_myisam(d2, name) values(2, '2'), (3, '3'), (4, '4'),(2, '2'), (3, '3'), (4, '4');

    select * from autoincre_demo_myisam;

    -- char 和 varchar
    create table vc(
    v varchar(4),
    c char(4)
    );

    show create table vc;

    insert into vc values('ab ', 'ab ');

    select concat(v, '+'), concat(c, '+') from vc;

    -- text 和 blob
    create table t(
    id varchar(100),
    context text
    );

    insert into t values(1, repeat('haha', 100));
    insert into t values(2, repeat('haha', 100));
    insert into t values(3, repeat('haha', 100));

    select * from t;

    insert into t select * from t;
    insert into t select * from t;

    select * from t;

    optimize table t;

    delete from t where id = 1;

    optimize table t;

    -- 浮点数 和 定点数

    create table t2(
    f float(8,1)
    );

    desc t2;

    insert t2 value(1.23456);

    select * from t2;

    insert t2 value(1.25456);

    select * from t2;

    create table test(
    c1 float(10,2),
    c2 decimal(10, 2)
    );

    insert into test values(131072.32, 131072.32);

    select * from test;

    -- 日期类型选择


    -- 字符集

    show character set;

    desc information_schema.CHARACTER_SETS;

    -- 校对规则
    show collation like '%gbk%';

    select case when 'A' collate gbk_chinese_ci = 'a' collate gbk_chinese_ci then 1 else 0 end;

    select case when 'A' collate gbk_bin = 'a' collate gbk_bin then 1 else 0 end;

    select case when 'A' collate utf8_general_ci = 'a' collate utf8_general_ci then 1 else 0 end;

    -- 字符集设置 -- 服务器级别 -- 数据库级别 -- 表级别 -- 字段级别

    -- 服务器字符集和校对规则
    show variables like 'character_set_server';

    show variables like 'collation_server';

    -- 数据库字符集和校对规则
    show variables like 'character_set_database';

    show variables like 'collation_database';

    -- 表字符集和校对规则
    show create table test;

    -- 列字符集和校对规则

    -- 连接字符集和校验规则

    -- 字符集的修改
    -- alter database character set ***
    -- alter table tablename character set ***
    -- 这两个命令都没有更新已有记录的字符集,而只是对新创建的表或记录生效

    -- 已有记录的字符集调整,需要先将数据导出,经过适当的调整重新导入后才可完成。
    -- 模拟将latin1字符集的数据库修改成GBK字符集的数据库的过程
    -- 1. 导出表结构
    -- mysqldump -uroot -p --default-character-set=gbk -d databasename > createtab.sql
    -- 其中--default-character-set=gbk表示设置以什么字符集连接,-d表示只导出表结构,不导出数据。
    -- 2. 手动修改createtab.sql 中表结构定义中的字符集为新的字符集。
    -- 3. 确保记录不再更新,导出所有记录
    -- mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 databasename > data.sql
    -- --quick 该选项用于转储大的表。它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行,并在输出前将它缓存到内存中。
    -- --extended-insert 使用包括几个VALUES列表的多行INSERT语法。这样是转储文件更小,重载文件时可以加速插入。
    -- --no-create-info 不导出每个转储表的CREATE TABLE语句。
    -- --default-character-set=latin1 按照原有的字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码。
    -- 4. 打开data.sql, 将SET NAMES latin1 修改成 SET NAMES gbk。
    -- 5. 使用新的字符集创建新的数据库。
    -- create dateabase databasename default charset gbk;
    -- create database deepInMySql2 default charset gbk;
    -- 6. 创建表,执行createtab.sql
    -- mysql -uroot -p databasename < createtab.sql
    -- mysql -uroot -p deepInMySql2 < createtab.sql
    -- 7. 导入数据,执行data.sql
    -- mysql -uroot -p databasename < data.sql
    -- mysql -uroot -p deepInMySql2 < data.sql

    -- 第9章 

  • 相关阅读:
    博客园小技巧【转载】
    Windows下的多线程
    【Windows】Windows中的数据类型以及命名
    【文档管理系统】【转】什么是元数据
    CentOS 安装 MariaDB 全部命令
    emacs 入门
    参考路径
    My SQL load data infile 遇到的问题总结
    oracle迁移到mysql(仅使用脚本)
    Eclipse tomcat server 无法添加项目
  • 原文地址:https://www.cnblogs.com/ClassNotFoundException/p/10132733.html
Copyright © 2020-2023  润新知