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
教程如下:



轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/124370.html
標籤:MySQL
上一篇:Python學習日記(三十四) Mysql資料庫篇 二
下一篇:Mysql 游標初識
