mysql技術內幕 第五版

第二章mysql

涉及到database的全部語句裏,schema關鍵字和database同義sql

1. 查詢當前回話,和全局回話的sql_mode數據庫

Select @@session.sql_mode;服務器

select @@global.sql_mode;session


set sql_mode = 'TRADITIONAL'ide

set GLOBAL sql_mode = 'TRADITIONAL'編碼





2.4.字符集支持spa

查詢當前server支持那些字符集,和排序規則orm

show charset;   # show character set;   select * from information_schema.CHARACTER_SETS;server


查看服務器的設置

show collation;     #select * from information_schema.COLLATIONS;

show variables; 查看當前終端的變量

show global variables;  查看服務器全局變量

查看當前server支持那些存儲引擎

show engines;   # select * from information_schema.engines;


2.5.數據庫操做

    建立

    create database if not exists test1 character set utf8 collate utf8_general_ci;

    查看建庫語句

    show create database test1;

    刪除

    drop database test1;

    修改數據庫

    alter database test1 [character set utf8]  [collate utf8_general_ci];

    


2.6 數據表操做

    建立表語句,可設置默認字符,和排序規則

    create table if not exists tbl_name (...) character set 字符編碼 collate 排序規則 engines = innodb;

    臨時表,當前回話退回後,表會自動刪除,若是建立的代表,和當前庫中表同名,會暫時隱藏原有的表.

    create temporary table tbl_name .. 

    刪除表

    drop table tbl_name;

    修改表

    alter table tbl_name ...

    新建索引

    create index ..

查看索引

show index ..

show index from auth_group\G

    刪除索引

    drop index...   

    查看建表語句

    show create table tbl_name;

    查看錶的列的基本信息

    desc tbl_name;describe auth_group;

show columns from auth_user;

 EXPLAIN tbl_name;

    

2.6.2.4 根據其餘表或查詢結果建立表

        複製一個表結構,包括索引和各列的屬性,只能完整複製單個表,不能選擇列等.

        create [TEMPORARY] table tbl_name1 like tbl_name;

        從查詢插入數據,

        insert into tbl_name1 select * from tbl_name.

        

        直接將查詢結果保存到一個新表,能夠同時查詢多個表的多個列,生成一個新的表,

        create table tbl_name1 select id from tbl_name;

        create table t3 select t1.c t2.c as c2 from t1 inner join t2;

    

        顯式定義部分列,須要在查詢中提供顯式定義的列.

        create table tbl_name (i not unsigned , t time,d decimal(10,5)) 

        select 

        1 as i,

        cast(curtime() as time) as t,

        cast (pi() as decimal(10,5) as d;


強制類型轉換

CAST(val as type) ,轉換值爲某個類型

容許強制轉換的類型,binary, char, date, datetime, time, signed, signed integer, unsigned, unsigned integer, decimal

        


2.6.4.2建立索引

表不能包含同名的索引

alter table 或者 create index,mysql在內部把create index轉換成alter table

索引種類

INDEX 普通索引,容許重複值

UNIQUE 惟一索引,該列不容許有重複值,若是是兩個列的則爲兩個列組合不容許有重複值,能夠包含null值,全部的null值不會和任何值(包括另外一個null)相等,

PRIMARY KEY 主鍵索引,索引名老是爲PRIMARY,與UNIQUE的區別是每一個表只能有一個,列必須爲not null

FULLTEXT 全文索引,MyISAM 和 MySql5.6.4以上版本支持.

SPATIAL MyISAM專有

HASH  MEMORY引擎的默認索引類型


2.6.4.3 刪除索引

drop index index_name ON tbl_name

alter table tbl_name drop index index_name

alter table tbl_name drop PRIMARY KEY;

當某個列刪除時,相應的索引也會自動刪除



2.6.5 更改表結構


MODIFY,CHANGE ,change能夠更改列名,modify不能,

alter table tbl_name modify i int

alter table tbl_name change i newi int;

修改列的字符集和

alter table t modify c CHAR(20) CHARCTER SET utf8;


修改存儲引擎,

alter table tbl_name engine= engine_name;


重命名錶,rename一次能夠修改多張表名

alter table tbl_name rename to new_tbl_name

rename table tbl_name to new_tbl_name,tbl2_name to new_tbl2_name;



2.7獲取數據庫元數據

相關文章
相關標籤/搜索