MySQL複習值代碼知識點 一. 創建資料庫 create database 資料庫名; 二. 刪除資料庫 drop database 資料庫名; 三. 選擇相應的資料庫 use 資料庫名; 四. 創建表 create table table_name( id integer primary key ...
MySQL複習值代碼知識點
一. 創建資料庫
create database 資料庫名;
二. 刪除資料庫
drop database 資料庫名;
三. 選擇相應的資料庫
use 資料庫名;
四. 創建表
create table table_name(
id integer primary key,
username varchar(20) not null,
birthday date
);
或者設置主鍵也可用:primary key(id)
- 設置主鍵
primary key(id)
2. 刪除主鍵
alter table + 表名+drop primary key;
如果設置了主鍵自增時,要先刪除自增長,然後再刪除主鍵;
alter table + 表名 + modify + 主鍵 + 列類型;
alter table + 表名 + drop primary key;
3. 設置主鍵並設置主鍵自增
alter table + 表名 + add primary key(列名);
alter table + 表名 + modify + 列名 + 列類型 + auto_increment;
4. 設置外鍵
foreign key(a_id) references table_A(id)
解釋: a_id為本表欄位,table_A(id)為外表和外表被引用的欄位。
5. 外部添加外鍵
alter table + 表名 + add[constraint + 外鍵名字] + foreign key(外鍵欄位) + references + 外部表名(主鍵欄位);
6. 刪除外鍵
alter table + 表名 + drop foreign key + 外鍵名字;
解釋:刪除時外鍵名字是定義時的constraint + 外鍵名字 的外鍵名字
如果在刪除外鍵時不知道外鍵名字,可以用desc+表名來查看表名
7. 添加欄位
alter table + 表名 + add +列名+列類型+[約束];
8. 刪除欄位
alter table + 表名 + drop column + 列名;
9. 修改列名:
alter table + 表名 + change + 列名 + 新列名 + 列類型+[約束];
10. 修改列屬性:
alter table + 表名 + modify + 列名 + 列類型 +[約束];
五. 刪除表
drop table 表名;
六. 表插入數據
insert into 表名 values(列值1,列值2,…);
七. 表查詢數據
select * from 表名;
- WHERE子句:
= |
等號,檢測兩個值是否相等,如果相等返回true |
<>, != |
不等於,檢測兩個值是否相等,如果不相等返回true |
> |
大於號,檢測左邊的值是否大於右邊的值, 如果左邊的值大於右邊的值返回true |
< |
小於號,檢測左邊的值是否小於右邊的值, 如果左邊的值小於右邊的值返回true |
>= |
大於等於號,檢測左邊的值是否大於或等於右邊的值, 如果左邊的值大於或等於右邊的值返回true |
<= |
小於等於號,檢測左邊的值是否小於於或等於右邊的值, 如果左邊的值小於或等於右邊的值返回true |
八. 更新表數據
update 表名 set 列名=新值,列名=新值 [where 列名=限定值];
九. 刪除表數據
delete from 表名 [where 列名=限定值];
十. 模糊查詢
select * from 表名 where 列名LIKE ‘限定值’;
解釋:
其中限定值:
”_”為任意單個字元;
”%”為任意個字元(0~+∽);
“[]”表示匹配括弧內的字元,類似於正則表達式
“[^]”表示不包括括弧在內的任意單個字元
十一. 連接結果
- union的使用
select * from 表名1 union select * from 表名2;
解釋:union兩表的查詢結果集列值必須數目相同,否則會出錯(1222)
列名顯示以左表為主。
union會自動去重
union all不會去重
- 內連接、左連接和右連接
on後為限制連接的條件,而where是對on篩選後得到的結果集進行再次篩選
交叉連接(笛卡兒積):
查詢結果相同:
select * from +表名1,表名2;
select * from +表名1 cross join表名2[表名3];
內連接(inner join):
select * from + 表名1+ inner join +表名2 +[ on 條件][where 條件];
解釋返回兩個的交集
左連接(left join):
select * from + 表名1+ left join +表名2 +[ on 條件][where 條件];
解釋:以左表為主,不管有沒有右表數據,都要顯示完全。
右連接(right join)
select * from + 表名1+ right join +表名2 +[ on 條件][where 條件];
解釋:以右表為主,不管有沒有左表數據,都要顯示完全。
參考鏈接:
https://blog.csdn.net/plg17/article/details/78758593
https://blog.csdn.net/cs958903980/article/details/60139792
http://www.zsythink.net/archives/1105
十二. NULL值處理
IS NULL: 當列的值是 NULL,此運算符返回 true。
IS NOT NULL: 當列的值不為 NULL, 運算符返回 true。
查詢結果集的修改:
select id,ifnull(列名,預設值) from +表名;
解釋:如果這一列的值為null 則輸出預設值
十三. 正則表達式
select * from + 表名+ where + 列名+ regexp +’正則表達式’;
十四. 索引
資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當數據量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。
1. 創建索引:
普通索引:
alter table + 表名 + add index +索引名 + (列名);
create index + 索引名 + on + 表名(列名);
註:主鍵本來就是一個主鍵索引(所以在創主鍵時也是在創建一個索引);
唯一索引:
create unique index + 索引名 + on + 表名(列名);
2. 刪除索引:
drop index + 索引名 + on + 表名;
alter table + 表名 + drop index + 索引名;
3. 查看索引:
show index from + 表名;
show keys from + 表名;
十五. 聚集函數
傳送門: https://www.cnblogs.com/Anxc/p/11558963.html
十六. 附錄
還有一部分是關於聚集函數的知識點,我把它放在了我的GitHub裡面,由於截圖的原因沒有發佈到這裡(請看文章最後文檔下載)。
MySQL 5.0 以上的版本:
1、一個漢字占多少長度與編碼有關:
UTF-8:一個漢字=3個位元組
GBK:一個漢字=2個位元組
2、varchar(n) 表示 n 個字元,無論漢字和英文,Mysql 都能存入 n 個字元,僅是實際位元組長度有所區別
3、MySQL 檢查長度,可用 SQL 語言來查看:
mysql> select name,length(name) from grade where id=8;
+------+--------------+
| name | length(name) |
+------+--------------+
| 安 | 3 |
查看表結構:
desc 表名
單詞翻譯:
alter:改變
modify:修改(修改列屬性)
constraint:限制,約束(設置外鍵名字,刪除外鍵時用)
foreign:外國的(設置外鍵時用)
references:參考文獻(設置外鍵時用)
primary:主要的(設置主鍵時用到)
regexp:正則表達式
* 文檔下載:
GitHub:https://github.com/Anxc520/knowledge.git
教程如下: