mysql對庫的基本操作
net start mysql | 啟動數據庫服務 |
mysql -h localhost -a root -p | 使用命令登陸 |
net stop mysql | 關閉數據庫服務 |
show databases | 查看mysql中以存在的數據庫 |
create database 數據庫名 | 創建數據庫 |
create database(if not exists) 庫名 | 檢查數據庫名稱是否存在,不存在創建該數據庫,存在則不創建 |
use 數據庫名 | 使用數據庫 |
select database() select sohema() |
獲取當前使用的數據庫 |
drop database 數據庫名 | 刪除數據庫 |
drop database if exists 庫名 | 判斷數據庫存在刪除 |
mysql對表的操作
create table 表名 (字段名 數據類型 約束條件,....) | 創建表 |
PRIMARY KEY | 定義主鍵約束 |
AUTO_increment | 定義自增屬性 |
NOT NULL | 不為空約束 |
unique | 唯一約束 |
mysql對表中數據的基本操作
-
使用in關鍵字查詢指定記錄
select * from 表名 where 字段名 in (條件);可以有多個用逗號隔開
-
使用NOT in 查詢指定記錄
select * from 表名 where 字段名 not in (條件查詢所不能滿足的數據多個條件用逗號隔開)
-
帶between and 的范圍查詢
select * |字段名 from 表名 where 指定字段的名字 between 值 and 值
-
帶like的字符匹配查詢
select * from 表名 where 指定字段 like 想要匹配的值
-
帶有%和_結合like查詢
select * 字段名 from 表面 where 字段名 like “_值” | "%值" (_代表單個字符,%代表多個字符)
-
查詢空值
select * from 表名 where 字段 is null
-
查詢非空值
select * from 表名 where 字段 is not null
-
使用and實現多條件查詢
select * from 表名 where 字段名=值1 and 字段名=值2
-
使用or實現多條件查詢
select * from 表名 where 字段名 =值1 or 字段名 =值2
-
篩選重復的記錄
select distinct 字段名 from 表名
對表中數據深入查詢
1.對表中數據深入查詢
select * | 字段名 from 表名 order by 排序字段
select * |字段名 from 表名 order by 排序字段1 排序字段2(選排序第一個,然后排序后面的,
從大到小,每個字段后面都要加上desc)
2.指定排序的順序
select * |字段名 from 表名 order by 排序字段 desc/asc(asc從小到大,desc從大到小)
3.分組查詢(將相同的數據放入一組)
(1)select 字段名 | * ,group_concat( * | 字段名) from 表名 group by 分組字段
4.使用having過濾分組
select 字段名 , group_concat(字段名2) as 別名 from 表名 group by 字段名 having count(*|字段名2)>指定數 (having是二次分組,判斷大於指定數的記錄)
5.分組后統計
select 字段名, count(*) as 別名 from 表名 group by 分組字段 with rollup
6.使用limit限制查詢數量
select * from 表名 limit n,m(顯示從n(n從0開始)+1行開始)總共顯示m條數據
7.使用集合函數查詢
(1)sum() 求和函數的使用
select sum(字段名) as 別名 from 表名
(2)avg() 求平均值
select avg(字段名) from 表名
(3)avg函數和group by一起使用求每個分組的平均值
select 分組字段 , avg(字段名) from 表名 group by 分組字段
(4)max()函數求指定列的最大值
select max(指定列) from 表名
(5)min()函數指定列最小值
select min (指定列) from 表名
連接查詢
1.連接是關系型數據庫模型的主要特點連接查詢是關系型數據庫中最主要的查詢,主要包括內鏈接和外連接。以及復合條件查詢,通過連接運算符可以實現多表查詢
(1)內鏈接語法
連接查詢是查詢多個表中相關聯的數據行,內鏈接返回查詢結果集合中的僅是符合查詢條件和連接條件的數據
A. select 表名1.字段名1, 表名1,字段名2,表名2. 字段名1,表名2.字段名2 from 表名1,表名2 where 表明1.字段?=表名2.字段?(字段名?代表兩張表共有的字段名)
B. select 表名1.字段名, 表名2.字段名2 from 表名1 inner join 表名2 on 表名1.字段?=表名2.字段?(字段名?代表兩張表共有的字段名)
(2)外聯接查詢
在內鏈接中我們知道內連接查詢僅是符合查詢條件和連接條件的數據,但有時候需要包含沒有關聯的行中數據即返回查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表,右表中的所有數據行
外聯接分為:左連接 右連接
(主表)左連接的結果包括left outer關鍵字語句中指定的左表的所有行。而不僅僅是連接列所匹配的行,如果左表的某行在右表中沒有匹配的行。右表的所有選擇列均為空值
語法:(左)
select 表1 .字段名, 表名2.字段名 from 表1 left outer join 表2 on 表1.字段名?=表2.字段名?
(右)
select right outer join
外鍵約束
foreign key 外鍵約束,外鍵作用保證數據的唯一一致性和完整性
子表外鍵字段必須和主表中主鍵字段數據類型保持一致
(1)建表時,設置外鍵
constraint 外鍵名稱 foreign key (外鍵字段) references 主表名(主鍵字段名稱) (constraint 外鍵名稱 可選默認mysql會自動創建)
(2)刪除外鍵
alter table 表名 drop foreign key 外鍵名
(3)動態添加外鍵
alter table 表名 add foreign key(外鍵字段) references 主表名 (主鍵字段) (在添加外鍵時必須確認表中數據合法)
子查詢
(1)帶exists的子查詢
select * from 表名 where exists(子查詢語句); (子查詢只要查詢出的記錄>=1,則執行外部查詢)
(2)帶in關鍵字的子查詢
select * from 表名 where 字段名 in(子查詢語句) (相同數值匹配——》顯示相同的數值)
(3)帶比較運算符的子查詢
select 字段名 from 子表名 where 字段名 > | = | <(子查詢語句) (子查詢語句里面得出的結果只能是一條,否則無法比較)
(4)帶any some all關鍵字的子查詢
select 字段名1 from 表名1 where 字段名1 >any(select 字段名 from 表名2)
運算符 | any | some | all |
> >= | 最小值 | 最小值 | 最大值 |
< <= | 最大值 | 最大值 | 最小值 |
= | 任意值 | 任意值 | |
!= | 任意值 |
與any some不同的是all需要用時滿足所有內層的查詢條件
聯合查詢
聯合查詢結果(查詢兩個表指定字段合並起來的數據)(合並時兩個表對應的列數和數據類型必須要相同)
select 字段名 from 表名1 union all select 字段名 from 表2 (加了all顯示重復的數據,不加則不顯示重復的數據)
索引
索引的功能就是加快對表中的數據的查詢速度
(1)創建索引
a. 創建表時創建索引 index 索引名(指定字段)
b. 添加索引 create index 索引名 on 表名(指定字段)
c. 刪除索引 drop index 索引名 on 表名
b. 查看索引 show index from 表名
mysql存儲過程概念
存儲過程就是在數據庫中定義一些sql語句的集合,然后之間調用這些存儲過程來執行sql語句,功能就是避免開發人員重復編寫sql語句。從而可以減少客戶端和服務器端的數據傳輸
(1)創建存儲過程的語法
create procedure 存儲過程(參數列表)
begin //開始
存儲過程體(一種合法有效的sql語句)
end //代表結束