一、表記錄的管理
一、刪除表記錄
一、delete from 表名 where 條件;
##不加where條件所有刪除
二、修改表記錄
一、update 表名 set 字段名=值,... where 條件;
##不加where條件所有修改
二、運算符
一、數值比較&字符比較
一、數值比較運算符:> >= < <= != =
二、字符比較:= !=
二、邏輯比較
and 、or
三、範圍內比較(between and、in、not in)
字段名 between 值1 and 值2
字段名 in(值1,值2,...)
字段名 not in(值1,值2,...)
四、空、非空(is null、is not null)
一、注意
一、null :空值,必須用is 或 is not去匹配
二、"" :空字符串,用 = 或 != 去匹配
五、模糊比較(like)
一、字段名 like 表達式
二、表達式
_ : 匹配單個字符
% : 匹配0到多個字符
三、SQL查詢
一、order by(排序)
一、order by 字段名 ASC/DESC;
二、limit(永遠放在SQL語句的最後)
一、limit n -->顯示n條記錄
二、limit m,n -->從 m+1 條記錄開始,顯示 n 條
三、聚合函數
avg(字段名)、sum(字段名)、max(字段名)、
min(字段名)
count(字段名) ## 空值NULL不會被統計
四、group by(給查詢結果分組)
一、注意
一、group by以後字段名 必須爲select 後的字段名
二、若是select後的字段名沒有在group by以後,則必需要對該字段進行聚合處理
五、having(對查詢結果進行進一步篩選)
一、注意
一、having與group by聯合使用,用來過濾由group by返回的結果集
二、彌補了where關鍵字不能與聚合函數聯合使用的不足
三、where只能操做表中實際存在的字段,having能夠操做聚合函數生成的顯示列
六、distinct(不顯示字段的重複值)
一、注意
一、distinct和from之間全部的字段必須所有相同才能夠去重
二、distinct不能對任何字段作聚合處理
七、查詢表記錄時作數學運算
+ - * / %
八、總結
三、 select ... 聚合函數 from ...
一、 where ...
二、 group by ...
四、 having ...
五、 order by ...
六、 limit ...
四、約束
一、默認約束(default)
二、非空約束(not null)
五、索引
一、BTree
二、優勢:加快數據的檢索速度
三、缺點
一、索引須要動態維護,下降數據的維護速度
二、索引佔用物理空間
四、索引類型
一、普通索引(MUL)
一、建立
一、建立表時建立: index(字段名),...
二、在已有表建立:
create index 索引名 on 表名;
二、查看
一、desc 表名;
二、show index from 表名\G;
三、刪除(只能一個一個刪除)
drop index 索引名 on 表名;
二、惟一因此(UNI,字段值不容許重複,但可爲NULL)
一、建立
一、建立表
unique(字段名),...
二、在已有表中建立
create unique index 索引名 on 表名;
二、刪除
drop index 索引名 on 表名;
MySQL-Day03筆記
一、索引
一、普通索引(MUL)
二、惟一索引(UNI)
三、主鍵索引(PRI)
一、使用規則
一、一個表中只能有一個主鍵(primary)字段
二、對應字段的值不容許重複,且不能爲空
三、主鍵字段的key標誌PRI
四、把表中可以惟一標識一條記錄的字段設置爲主鍵,一般把表中記錄編號的字段設置爲主鍵
二、建立主鍵(primary key)
一、建立表時建立
一、字段名 數據類型 primary key,
二、primary key(字段名)
二、在已有表中建立
alter table 表名 add primary key(字段名);
三、刪除
alter table 表名 drop primary key;
四、自增加屬性(auto_increment)
一、做用:一般和主鍵字段一塊兒配合使用
二、建立
一、建立表時建立
字段名 數據類型 primary key auto_increment
二、在已有表中添加自增加屬性(modify)
alter table 表名 modify 字段名 數據類型 primary key auto_increment
五、刪除主鍵及自增加屬性
一、alter table 表名 modify 字段名 數據類型;
二、alter table 表名 drop primay key;
四、外鍵索引(foreign key)
一、定義
讓當前表的字段值在另外一個表的範圍內選擇
二、語法格式
foreign key(參考字段名)
references 被參考表名(被參考字段名)
on delete 級聯動做
on update 級聯動做
三、案例
表1:繳費信息表(財務)
學號 姓名 班級 繳費金額
1 唐伯虎 AID1712 28000
2 點秋香 AID1712 20000
表2:學生信息表(班主任)
學號 姓名 繳費金額
1 唐伯虎 28000
四、刪除外鍵
一、語法格式
alter table 表名 drop foreign key 外鍵名;
二、注意
一、外鍵名的查看方式
show create table 表名;
五、在已有表中添加外鍵
一、語法格式
alter table 表名 add
foreign key(參考字段名) references
被參考表名(被參考字段名)
on delete 級聯動做
on update 級聯動做
二、注意
在已有表中添加外鍵時,會受到表中原有數據的限制
六、級聯動做
一、cascade :數據級聯更新
一、當主表刪除記錄時,若是從表有相關聯記錄則級聯刪除
二、當主表更新被參考字段的值時,從表級聯更新參考字段的值
二、restrict(默認)
一、當主表刪除記錄時,若是從表中有相關聯記錄則不容許主表刪除
二、update同 1
三、set null
一、當主表刪除記錄時,從表中相關聯記錄外鍵字段值變爲null
二、update 同 1
四、no action
同 restrict,都是當即檢查外鍵限制
七、使用規則
一、兩張表被參考字段和參考字段的數據類型要一致
二、被參考字段必須是KEY的一種,一般是primary key
二、數據導入
一、做用:將文件系統的內容導入到數據庫中
二、語法格式
load data infile "文件名"
into table 表名
fields terminated by "分隔符"
lines terminated by "分隔符"mysql
tarena:x:1000:1000:tarena,,,:/home/tarena:/bin/bash
用戶名:密碼:UID:GID:描述:家目錄:登陸權限
三、把/etc/passwd 導入到mysql數據庫中
四、操做步驟
一、在數據庫中建立對應的表
二、查看數據庫的默認搜索路徑
show variables like "secure_file_priv";
三、將系統文件拷貝到數據庫的默認搜索路徑中
sudo cp /etc/passwd /var/lib/mysql-files
sudo -i
cd /var/lib/mysql-files
ls
exit
三、數據導出
一、做用
將數據庫中表的記錄保存到系統文件裏
二、語法格式
select ... from 表名
into outfile "文件名"
fields terminated by "分隔符"
lines terminated by "分隔符"
三、練習
一、把userinfo表中的用戶名、密碼和uid號三個字段導出到userinfo.txt中
二、將庫名:mysql庫中user表中的User、Host兩個字段的值導出到 user2.txt
四、注意
一、導出的內容由SQL查詢語句決定
二、執行導出命令時路徑必須指定在對應的數據庫目錄下
三、show variables like "secure_file_priv";
show variables like "%secure%";
四、表的複製
一、表的複製
一、語法格式
create table 表名 select 查詢命令;
二、練習
一、複製userinfo表的前10行,userinfo3 \c
二、複製userinfo表的用戶名、密碼、uid三個字 段的2-10條記錄,userinfo4
二、只複製表結構
一、語法格式
create table 表名 select ... where false;
三、注意
一、複製表的時候不會把原有表的 鍵 屬性複製過來
五、嵌套查詢
一、定義
把內層的查詢結果做爲外層查詢的條件
二、語法格式
select查詢語句 where 條件(select查詢語句);
三、練習
一、把uid的值小於這個字段的平均值的用戶名和uid顯示出來
二、查找userinfo表中用戶名在 mysql庫下的user表Host值爲localhost而且User值是root 的用戶名
六、多表查詢
一、兩種方式
一、select 字段名列表 from 表名列表; #笛卡爾積
select * from tt1,tt2;
二、select 字段名列表 from 表名列表 where 條件;
二、練習
一、顯示省和市的信息
二、顯示省、市、縣的信息
七、鏈接查詢
一、內鏈接
一、定義
從表中刪除與其餘被鏈接表中沒有匹配到的行
二、語法格式
select 字段名列表 from 表1
inner join 表2 on 條件;
三、練習
一、顯示省市信息,沒有匹配的不顯示
二、顯示省市縣的信息
二、外鏈接
一、左鏈接
一、定義
以左表爲主顯示查詢結果
二、語法
slect 字段名列表 from 表1 left join 表2 on 條件;
三、練習
一、顯示省市的信息,以左表爲準
二、顯示省市的信息,以右表爲準
三、顯示省市區的信息,要求市所有顯示
二、右鏈接sql