sql基礎(只記重點)

2021-08-18 22:38:55 字數 4877 閱讀 9412

1.資料庫三正規化

a)一正規化:列不可分。一列中不能儲存多個屬性

b)二正規化:行唯一,有主鍵

c)三正規化:表中字段唯一。不能同個表示相同作用的屬性在不同表中出現。

要滿足三正規化,就滿足二正規化,要滿足二正規化,就要滿足一正規化

2sql執行功能劃分:

1)資料定義語言 ddl data definition language

2)資料查詢語言 dql data query language

3)資料操縱語言 dml data manipulation language

4)資料控制語言 dcl data control language

5)其它語言要素 additional language elements 事務控制,程式化語言

3.sql環境中的物件命名規則

1)不區分大小寫

2)字母,資料,下劃線。並以字母開頭

3)不能用sql保留關鍵字

4.資料型別

在 mysql 中,有三種主要的型別:文字、數字和日期/時間型別。

資料型別

描述char(size)

儲存固定長度的字串(可包含字母、數字以及特殊字元)。在括號中指定字串的長度。最多 255 個字元。

varchar(size)

儲存可變長度的字串(可包含字母、數字以及特殊字元)。在括號中指定字串的最大長度。最多 255 個字元。

注釋:如果值的長度大於 255,則被轉換為 text 型別。

tinytext

存放最大長度為 255 個字元的字串。

text

存放最大長度為 65,535 個字元的字串。

blob

用於 blobs (binary large objects)。存放最多 65,535 位元組的資料。

mediumtext

存放最大長度為 16,777,215 個字元的字串。

mediumblob

用於 blobs (binary large objects)。存放最多 16,777,215 位元組的資料。

longtext

存放最大長度為 4,294,967,295 個字元的字串。

longblob

用於 blobs (binary large objects)。存放最多 4,294,967,295 位元組的資料。

enum(x,y,z,etc.)

允許你輸入可能值的列表。可以在 enum 列表中列出最大 65535 個值。如果列表中不存在插入的值,則插入空值。

注釋:這些值是按照你輸入的順序儲存的。

可以按照此格式輸入可能的值:enum('x','y','z')

set與 enum 類似,set 最多只能包含 64 個列表項,不過 set 可儲存乙個以上的值。

資料型別

描述tinyint(size)

-128 到 127 常規。0 到 255 無符號*。在括號中規定最大位數。

smallint(size)

-32768 到 32767 常規。0 到 65535 無符號*。在括號中規定最大位數。

mediumint(size)

-8388608 到 8388607 普通。0 to 16777215 無符號*。在括號中規定最大位數。

int(size)

-2147483648 到 2147483647 常規。0 到 4294967295 無符號*。在括號中規定最大位數。

bigint(size)

-9223372036854775808 到 9223372036854775807 常規。0 到 18446744073709551615 無符號*。在括號中規定最大位數。

float(size,d)

帶有浮動小數點的小數字。在括號中規定最大位數。在 d 引數中規定小數點右側的最大位數。

double(size,d)

帶有浮動小數點的大數字。在括號中規定最大位數。在 d 引數中規定小數點右側的最大位數。

decimal(size,d)

作為字串儲存的 double 型別,允許固定的小數點。

* 這些整數型別擁有額外的選項 unsigned。通常,整數可以是負數或正數。如果新增 unsigned 屬性,那麼範圍將從 0 開始,而不是某個負數。

資料型別

描述date()

日期。格式:yyyy-mm-dd

注釋:支援的範圍是從 '1000-01-01' 到 '9999-12-31'

datetime()

*日期和時間的組合。格式:yyyy-mm-dd hh:mm:ss

注釋:支援的範圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

timestamp()

*時間戳。timestamp 值使用 unix 紀元('1970-01-01 00:00:00' utc) 至今的描述來儲存。格式:yyyy-mm-dd hh:mm:ss

注釋:支援的範圍是從 '1970-01-01 00:00:01' utc 到 '2038-01-09 03:14:07' utc

time()

時間。格式:hh:mm:ss 注釋:支援的範圍是從 '-838:59:59' 到 '838:59:59'

year()

2 位或 4 位格式的年。

注釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。

* 即便 datetime 和 timestamp 返回相同的格式,它們的工作方式很不同。在 insert 或 update 查詢中,timestamp 自動把自身設定為當前的日期和時間。timestamp 也接受不同的格式,比如 yyyymmddhhmmss、yymmddhhmmss、yyyymmdd 或 yymmdd。

5.建立表,注意非空約束

create table persons

(id_p int,

lastname varchar(255),

firstname varchar(255) not null,

address varchar(255),

city varchar(255) default '西安'

)

6.修改表

1)增加新列

alter table mytable add mycolumn data_type

alter table student add email char(15) not null default 'no email'

2)刪除列.若有約束則先刪除約束

alter table stuent drop column birthday

alter table stuent drop constraint constraintname

alter table student drop colument ***

3)修改列.取消非空約束

alter table student alter column email char(25)
alter table stuent alter column sname char(10) null
7.表刪除

drop table student
8.索引

表儲存分為:存資料,存索引

索引按儲存結構不同分為:簇索引,非簇索引

簇索引是對資料排序後重新存在磁碟上。查詢速度快,占用空間大。乙個字只能建乙個。

非簇索引。索引與表資料分離。非簇索引儲存關鍵字的值與行定位。乙個表最多建立249個。

1)建立非簇索引

create index indexname on tablename(column)
create index ***name_index on student(***,sname)

強制使用索引

select * from student with (index(***name_index))

2)唯一索引

create unique index sno_index on student(sno desc)

select * from student with (index(sno_index))

唯一索引的值不能為空。第乙個空值可以,第二個空值報錯。null也是值

3)簇索引

create clustered index snameluseter_index on student(sname)

多字段的簇索引,建立前要刪除以前的

drop index studentinfo.snamecluseter_index create clustered index ***addresscluseter_index on student(***,addredd)
4)刪除索引

drop index index_name
索引要點:

1資料少不需要建立索引

2某列資料多或者有很多null值需要建立索引

3.要檢索的資料小於20%時,建立索引提高查詢效率

4.索引列在where字名中頻繁使用

5.初始資料錄入先加資料後建索引比較好。可以提高初始錄入速度

9.檢視

把查詢的資料存在虛表中方便使用。

create view student_view as select * form student

create clustered index snameluseter_index on student(sname)

MySql基礎重點

sql語句類別劃分 1 ddl data definition language,資料庫定義語言 定義了不同的資料庫 資料 庫表 列 索引等資料庫物件的定義。例 create 建立表 drop truncate 刪除表 alter 修改表 和show 查表詢 2 dml data manipulat...

shell重點基礎

shell指令碼是什麼?文字檔案 包含乙個或多個系統檔案 主要用來完成系統管理員的日常管理工作 預設登入shell,如何改變該shell?預設登入shell為建立使用者時指定,若建立時不指定,則預設為 bin bash,可使用命令chsh username s shellname進行shell更改 ...

html基礎重點總結

4.隱藏頁面元素常用方法 5.css選擇器 1.的書寫順序 板塊 框架 有效區 具體內容 樣式 一般有效區的寬度設定為1200px即可 2.關於居中 3.關於定位 position屬性 定位屬性 3.1 普通流 3.2 浮動 樣式 clear 注意 詳細原理可以看 w3school 浮動知識點 3....