深入浅出mysql唐汉名_深入浅出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唐汉名_深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: postman怎么不登陆使用_钉钉登陆不
- 下一篇: python入门基础系列_Python3