資料庫學習筆記(SQL語句)

2021-08-02 20:01:21 字數 3434 閱讀 3644

根據已有的表或查詢結果來建立表:

-create table ... like會根據原有表建立乙個新錶。該語句會完整的複製原有表的結構以建立乙個新的空表。如果想插入資料,還需要另外的插入語句(如insert into ... select)但它不能只選原表的某幾列或其他表中的列。

-create table ... select可以根據一條select語句的查詢結構建立乙個新錶並把資料填入表中。這種做法不會把原有表裡的任何索引複製過去,也不會複製如auto_increment等列屬性。

如果要嘗試修改表的內容,也不想直接改變原有表的內容,可以使用temporary表(但某些情況下,如連線池或永久性連線等機制會在你應用程式終止時,讓你與mysql伺服器之間的連線保持開啟。這時temporary表不會自動消失)。

強制型別轉換

在利用create table ... selectinsert ... from時,可能會希望對資料的型別進行一些變更。這時候可以使用cast()函式,例如:

create

table mytable

( i int unsigned, t time, d decimal(10,5))

select

1as i

cast( curtime() as

time) as t,

cast( pi() as

decimal(10,5)) as d;

為了使表的列與外來資料匹配(與位置無關),在select部分提供別名是必須的

分割槽表

mysql可以支援讓表的內容分散儲存到不同的物理位置中,得到分割槽表,從而在搜尋和訪問時提高效率。

建立分割槽表時除了提供create table語句外,還要指定partition by子句(它定義乙個可以把分配到各個分割槽的分割槽函式)。分割槽函式可以根據範圍、值列表、雜湊值來分配各行。例如建立乙個根據年份分割槽的表:

create

table time_log ( mydate datetime not

null )

partition by range( year( mydate ))

(partition p0 values less than (2010),

partition p1 values less than (2011),

partition pleft values less maxvalue

);

這樣在2023年以後的分割槽都會被分到pleft分割槽。另外,如果有需要,還可以用alter table ... reorganize partiton ... into(...)的方式來對某個分割槽進一步劃分。

預設情況下,mysql會將分割槽儲存在專屬於分割槽表的資料庫目錄裡。若想將儲存分散到指定地方,則需要使用分割槽選項data_directoryindex_directory

索引

可以對同乙個表建立多個索引。

索引可以只包含唯一值(唯一索引),也可以包含重複值(常規索引

對於enum和set以外的字串型別,可以只對列名左邊的n個字元或n個位元組建立索引(尤其是對於blobtext型別)。

fulltext索引裡的列是以滿列值的方式進行索引的,不能進行字首索引。即使指定了字首索引也會被忽略。

primary keyunique索引的區別:

- 每個表只能包含乙個primary key,因為primary key的索引名字總是「primary」,而其他的索引(包括unique)可以被自定義名字。

-primary key不可以包含null值,而unique索引可以,且可以包含多個null,因為null值不會與任何值相等

create indexdrop index在內部都會被自動處理成alter table語句。所以下面兩句命令是等價的:

drop index index_name on table_name;

alter

table table_name drop index index_name;

更改表結構

更改列的資料型別/字符集:可以使用changemodify子句。

alter table table modify col_name ...    //...輸入新的資料型別

alter table table change col_name new_col_name ... //change可以同時將列重新命名

更改儲存引擎:

alter table table engine = engine_name;

重新命名表:

alter

table

table rename to new_name;

rename table t1 to t1_new, t2 to t2_new;

多表檢索

子查詢

子查詢是指:用括號括起來,並嵌入另一條語句裡的那條select語句。一般在where或from中。

union實現多表整合

Sql語句學習筆記 1 建立資料庫

說明 建立乙個影碟租賃管理系統,這裡主要抽象了四張表 tb user 使用者資訊 tb movie type 影片型別 tb movie 影片資訊 tb retal 租賃記錄 use master 系統表,所有建立的資料庫均在此被記錄 go 檢測是否已經存在retadb這個資料庫,有的話,不能重名,...

學習資料庫SQL語句2

2018年11月15日 下午 1.where 子句用於規定選擇的標準。語法 select 列名稱 from 表名稱 where 列 運算子 值 例子 select from persons where city beijing 注意 引號的使用 文字值使用單引號,數值直接書寫 請注意,我們在例子中的...

資料庫 sql 學習筆記

不積跬步,無以至千里 sql 學習筆記 1.select對於null的元素會輸出 2.distinct如果要用,只能放在select後,也就是只對整個要投影的元組起作用,不能只對某個屬性 3.在mysql裡ifnull,sqlserver是isnull 4.經過group分組後,group後面的屬性...