MySQL_1

基礎術語

數據庫:用來組織、存儲和管理數據的倉庫。

關係數據庫特點:數據以表格(關係)的形式出現;行表示元組,列表示屬性;許多行和列組成表格;許多表格組成database。

主碼:用於在一個關係中區分不同元組

外碼:一個關係中的屬性包括另一個關係的主碼

參照完整性:比如一個表示學校的數據庫,其中有兩個表,一個是教授表,教授表中存在教授所在系的名字,而系的名字又是系表的主碼,所以要求教授所在系的名字,一定是存在於系表中的

索引:類似於書籍的目錄,可以幫助快速訪問數據庫表的特定信息

MySQL管理

運行MySQL之後,輸入正確的密碼。
在這裏插入圖片描述
添加用戶:在mysql數據庫的user表中添加新用戶,設置用戶名,密碼,以及進行授權
例如使用如下SQL語言(以分號作爲結束標識):

          mysql> INSERT INTO user (host, user, password, select_priv, insert_priv, update_priv) 
           VALUES ('localhost', 'guest', PASSWORD('guest123'), 'Y', 'Y', 'Y');

選擇需要操作的數據庫

mysql> show databases;顯示出所有已經創建的數據庫

在這裏插入圖片描述

mysql> use university 選擇其中的一個數據庫進行管理

在這裏插入圖片描述

mysql> show tables;顯示指定數據庫的所有表

在這裏插入圖片描述

mysql> show columns from instructor;顯示選定數據表的屬性,看到下圖的instructor表的主碼是ID

在這裏插入圖片描述
使用create創建數據庫,使用drop刪除數據庫

mysql> create database happy;
mysql> drop database happy;謹慎,所有數據都將會消失

MySQL語言

mySQL支持的數據類型:數值(int,numeric,float),日期/時間(date),字符串/字符(char ,varchar)

創建數據表

create table 表名 ( 屬性名  屬性類型,...);

create table dapartment
(dept_name  varchar(20),
building  varchar(15),
budget  numeric(12,2),
primary  key (dept_name));

刪除數據表

drop  table 表名;執行之後所有的數據都不存在了,表也將不存在
delete from 表名 ;執行之後,只將表中的數據刪除,而表仍然保留

插入數據

insert  into  表名  (屬性1,屬性2,屬性3,...)
values  (值1,值2,值3,...);

insert  into  course(course_id,title,dept_name)
values('CS-101',‘Database Systems’,‘Comp.Sci’);

查詢數據

select  屬性名1,屬性名2..  from  表名  where  約束條件;

更新數據

update  表名
set  屬性名1 = 新值1,屬性名2 = 新值2,...
where  約束條件

update instructor  
set  salary = salary*1.05;漲工資

字符串模式匹配

匹配字符串時不區分大小寫,使用like操作符進行模式匹配(模式區分大小寫)
%:匹配任意字符串
_:匹配任意一個字符

select  dept_name  from  department  
where  building like '%Waston%';找出建築名稱中包含子串Waston的所有系名

集合運算union,intersect,except

union:連接兩個以上的select語句結果到一個新的集合中,刪除重複數據
(select語句1)
union
(select語句2);
intersect:將兩個或以上的select語句結果取交集到一個新的集合中,去除重複
except:select語句1執行結果減去select語句2執行結果得到的結果到一個新集合中,去除重複

聚集運算

avg:平均值
min:最小值
max:最大值
sum:總和
count:計數

select  count(distinct ID)
from teachs  where year = 2019; 算出這個關係中元組的個數

分組聚集

groupe  by
select  dept_name,avg(salary) 
from  instructor
group  by  dept_name;
第一步是分組,然後在每個分組上進行聚集運算avg
所以表示的意思是:找出每個系的平均工資

MySQL連接

使用join在多個表中查詢數據
inner join:獲取兩個表中字段匹配關係的記錄,自然連接natural join是一種內連接,該種連接可能會失去某些數據,例如將instructor表和teaches表進行自然連接,那麼結果中不會出現沒有教授任何一門課程的教授信息
left join:獲取左表所有記錄,即使右表沒有對應匹配的記錄
right join:獲取右表所有記錄,即使左表沒有對應匹配的記錄

null值處理

除了count遇到null也會加1外,其餘都會自動忽略null
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章