深入浅出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章
深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -的更多相关文章
- 深入浅出MySQL 数据库开发、优化与管理维护(第2版) -- 读书笔记 -- 基础篇
1.切换数据库 use blog; 2.显示当前数据库 所有的表. show tables; +----------------+ | Tables_in_blog | +------------ ...
- MYSQL数据库的优化
我们究竟应该如何对MySQL数据库进行优化?下面我就从MySQL对硬件的选择.MySQL的安装.my.cnf的优化.MySQL如何进行架构设计及数据切分等方面来说明这个问题. 服务器物理硬件的优化 在 ...
- [转]MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验
本文转自:http://liangweilinux.blog.51cto.com/8340258/1728131 年,嘿,废话不多说,下面开启MySQL优化之旅! 我们究竟应该如何对MySQL数据库进 ...
- mysql数据库性能优化(包括SQL,表结构,索引,缓存)
优化目标减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当 ...
- MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验
原文地址:http://liangweilinux.blog.51cto.com/8340258/1728131 首先在此感谢下我的老师年一线实战经验,我当然不能和我的老师平起平坐,得到老师三分之一的 ...
- MySQL 数据库性能优化之索引优化
接着上一篇 MySQL 数据库性能优化之表结构,这是 MySQL数据库性能优化专题 系列的第三篇文章:MySQL 数据库性能优化之索引优化 大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引 ...
- MySQL数据库以及表的管理
MySQL数据库以及表的管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 今天我们探讨的话题就是如何使用MySQL做开发,我们运维的主要工作不是去开发SQL的,但尽管如此,我们有 ...
- MySQL数据库开发规范-EC
最近一段时间一边在线上抓取SQL来优化,一边在整理这个开发规范,尽量减少新的问题SQL进入生产库.今天也是对公司的开发做了一次培训,PPT就不放上来了,里面有十来个生产SQL的案例.因为规范大部分还是 ...
- MySQL数据库性能优化:表、索引、SQL等
一.MySQL 数据库性能优化之SQL优化 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础 优化目标 减少 IO 次数IO永远是数据库最容易瓶颈的地 ...
随机推荐
- python编码转换
Pyton内部的字符串一般都是unicode编码或字节字符串编码:代码中字符串的默认编码与代码文件本身的编码是一致的:编码转换通常需要以unicode编码作为中间编码进行转换,即先将其他编码的字符串解 ...
- 俄罗斯方块Ai AlphaTetris讲稿
相关下载地址: 链接: https://pan.baidu.com/s/1LqFWMoLzaKkuahwnZNIsZg 密码: 3ybi
- python之进程和线程3
1 multiprocessing模块 (1.)直接导入 from multiprocessing import Process import os import time def info(name ...
- Vue(六)过滤器
1. 简介 用来过滤模型数据,在显示之前进行数据处理和筛选 语法:{{ data | filter1(参数) | filter2(参数)}} 2. 关于内置过滤器 vue1.0中内置许多过滤器,如:c ...
- Java第一章
第一章 计算机程序:计算机为完成某些功能产生的一系列有序指令集合. Java技术包括:JavaSE(标准版) JavaEE(企业版) ---JavaME(移动版) 开发Java程序步骤:1.编写 2 ...
- HashMap问答
一.什么是HashMap二.HashMap的继承关系三.HashMap数据结构四.HashMap查找.添加元素是怎样的五.什么是Hash碰撞六.HashMap是线程安全的吗?七.HashMap怎样处理 ...
- Caffe-SSD相关源码说明和调试记录
1 对Blob的理解及其操作: Blob是一个四维的数组.维度从高到低分别是: (num_,channels_,height_,width_) 对于图像数据来说就是:图片个数,彩色通道个数, ...
- HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性、非功能性、关键约束)-下篇
一.开篇 上一篇<HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性.非功能性.关键约束)-上篇>我们详细分析了在架构分析过程中我们需要注意的内容,架构过程的方法论及 ...
- Linux中非正常关闭vi编辑器产生swp文件怎么删除
Linux中非正常关闭vi编辑器产生swp文件,会导致编辑文件时提示如下内容(图我是从网上找的): 这是因为异常关闭vi编辑器产生swp文件导致,假设编辑的文件名是file.sh,那么生成的swp文件 ...
- Mybatis中使用集合、数组
一.简述 本文讲Mybatis中如何将传入参数为数组或者集合对象,进行遍历,组合Where条件中如in条件等内容. 有3种情况: 如果传入的是单参数且参数类型是一个List的时候,collection ...