sql 回顧(mysql)
阿新 • • 發佈:2018-12-16
sql 回顧(mysql)
1. mysql資料型別
一共三種:Text、Number、Data/Time
1.1 Text
1)CHAR(size) 最大255 2)VARCHAR(size) 如果大於255,則自動轉化為TEXT 3)TINYTEXT 存放最大長度為255 4)TEXT 存放最大長度為65535 5)BLOB 用於BLOBs,存放最多65535 6)MEDIUMTEXT 存放最大長度為16,777,215 7)MEDIUMBLOB 存放最大長度為16,777,215 8)LONGTEXT 存放最大長度為4,294,967,295 9)LONGBLOB 存放最大長度為4,294,967,295 10)ENUM(x,y,z,etc.) 11)SET
1.2 Number
1)TINYINT(size) 帶符號-128到127,無符號0到255 2)SMALLINT(size) 帶符號-32768到32767,無符號0到65535 3)MEDIUMINT(size) 帶符號-8388608到8388607,無符號0到16777215 4)INT(size) 帶符號-2147483648到2147483647,無符號0到4294967295 5)BIGINT(size) 帶符號-9223372036854775808到9223372036854775807,無符號0到18446744073709551615 6)FLOAT(size,d) 帶有浮動小數點的小數字。在 size 引數中規定顯示最大位數。在 d 引數中規定小數點右側的最大位數。 7)DOUBLE(size,d) 同上 8)DECIMAL(size,d) 作為字串儲存的 DOUBLE 型別,允許固定的小數點。在 size 引數中規定顯示最大位數。在 d 引數中規定小數點右側的最大位數。
1.3 Date
1)DATE() 格式:YYYY-MM-DD
2)DATETIME() 格式:YYYY-MM-DD HH:MM:SS
3)TIMESTAMP() 時間戳,支援範圍:從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
4)TIME() 格式:HH:MM:SS
5)YEAR() 2 位或 4 位格式的年。4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。
2. CRUD
select column_name from table_name // 查看錶的某些列 select distinct column_name from table_name // 查看錶的某些列,並且行去重 where // 篩選條件 and or order by column_name ASC|DESC // 根據某列資料進行排序 insert into table_name value (value1,value2,...) // 表插入資料 insert into table_name (column_name,column_name,...) values (v1,v2,v3,...) // 表指定列插入資料 update table_name set column_name1=value1,column_name2=value2,... where ...... // 更新表指定行資料 delete from table_name where ...... // 與truncate table_name不同的是,可回滾
3. 高階查詢
1)limit
select * from table_name limit x // 限制行數
2)like
select * from table_name where name like '...' // 定義模糊查詢
3)萬用字元
% 代替0個或多個字元
_ 代替一個字元
[charlist] 字元列表中的任意一個字元
[^charlist]/[!charlist] 不在字元列表中的任意一個字元
^ 以此開頭字元
4)in
select * from table_name where name in (......) // 允許在where中定義多個值
5)between...and...
select * from table_name where column_name between x and y // 在某個範圍內的
6)not
可以加在in和between前面表示取反
7)as
可以給列或者表取別名
8)join
inner join:如果表中至少一個匹配,則返回行 // 兩邊都要滿足條件
left join:即使右表中沒有匹配,也返回行 // 滿足左邊
right join:即使左表中沒有匹配,也返回行 // 滿足右邊
full join:只要其中一個表中存在,則返回行 // 保證兩張表的資料全量
9)union
合併select查詢到的結果,需要查詢的是相同的欄位。例如:
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;
這樣的話兩張表中相同的列會進行去重
可以使用union all進行合併,取消去重
4. sql索引
在不讀取整個表的情況下,索引使資料庫能夠更快的查詢資料
使用者是無法看到索引的,它們只是用來加速查詢,但是有索引的表插入資料的時候會更慢一些,因為插入的同時會更新索引
create index index_name on table_name (column_name) // 允許使用重複值
create unique index index_name on table_name (column_name) // 不允許使用重複值
5. sql常用函式:
Aggregate:
1)AVG() - 返回平均值
2)COUNT() - 返回行數
3)FIRST() - 返回第一個值
4)LAST() - 返回最後一個值
5)MAX() - 返回最大值
6)MIN() - 返回最小值
7)SUM() - 返回總和
Scalar:
1)UCASE() - 將某個欄位轉換為大寫
2)LCASE() - 將某個欄位轉化為小寫
3)MID() - 從某個文字欄位提取字元
4)SubString(欄位,1,end) - 從某個文字欄位提取字元
5)LEN() - 返回某個文字欄位的長度
6)ROUND() - 對某個數值欄位進行指定小數位數的四捨五入
7)NOW() - 返回當前系統的日期和時間
8)FORMAT() - 格式化某個欄位的顯示方式