mysql資料庫的高階操作(查詢)

2021-10-03 02:36:53 字數 3254 閱讀 1361

(1)實體與實體之間有3中對應關係,這些關係也需要儲存下來,關係型資料庫主要是儲存關係

(2)在開發中需要對儲存的資料進行一些處理,用到內建的一些函式

(3)檢視用於完成查詢語句的封裝

(4)事務可以保證複雜的增刪改查操作有效----在操作中去使mysql資料有效

關係介紹:

關係在資料庫中是非常重要的,多個資料表之間是有關係的,表之間的關係可以通過某種屬性進行對應,這樣就可以使用這個關係進行對資料的查詢

學生表的屬性: id name

成績表的屬性: id score

科目表的屬性:id title

成績表中有id和分數,每乙個分數都會對應多個名字,每乙個分數也會對應多個科目,所以是1對多的關係,所以需要建立外來鍵連線其他的表,成績表中需要建立外來鍵來連線學生表和成績表

成績表的建立語句如下:

create table scores(

id int primary key auto_increment,

stuid int,

subid int,

score decimal(5, 2))外來鍵

怎麼保證關係列資料的有效性呢:可以通過外來鍵約束進行資料的有效性驗證,為stuid,subid新增外來鍵約束。

create table scores(

id int primary key auto_increment,

stuid int,

subid int,

score decimal(5, 2)

foreign key (stuid) references students(id)

foreign key (subid) references subjects(id)

);外來鍵的級聯操作

(1)在刪除students表的資料時,如果這個id值在scores中已經存在,則會拋異常

(2)可以建立表時指定級聯操作,也可以在建立表後在修改外來鍵的級聯操作

語法: alter table scores add constraint stu_sco foreign key(stuid)

外來鍵操作主要是為了關聯多張資料表。

把所有的表放到一起查詢,並將結果顯示在同乙個結果集中

當查詢結果**於多張表時,需要使用連線查詢,關鍵:找到表間的關係,當前的關係是:

students表的id------scores表的stuid

subjects表的id------scores表的subid

eg: select  students.name,subjects.title,scores.score  from  scores  inner join  students  on scores.stuid=students.id  inner  join  subjects on scores.subid=subjects.id;
結論: 當需要對有關係的多張表進行查詢時,需要使用連線join

連線查詢:

連線查詢分類如下:

表a inner join 表b:表a與表b匹配的行為出現在結果中

表a left join表b:表a與表b匹配的行為出現在結果中,外加表a中獨有的資料,未對應的資料使用null填充

表a right join 表b:表a與表b匹配的行為會出現在結果中,外加表b中獨有的資料,未對應的資料使用null填充

在查詢或條件中推薦使用 「表名.列名」 的語法,

如果多個表中列名不重複可以省略 「表名」 部分

如果表的名稱太長,可以在表名後面使用『as』簡寫名,為表起個臨時的簡寫名稱

內建函式

(1)字串函式:對資料中的字串進行操作

(2)數學函式:

–絕對值abs(n): select abs(-32)

–求m除以n的餘數mod(m, n),同運算子%: select mod(10, 3); select 10%3–

–位址floor(n),表示不大於n的最大整數

–天花板ceiling(n),表示不小於n的最大整數

–求四捨五入值round(n, d) ,n表示原始,d表示小數字置,預設為0

–求x得y次冪pow(x,y)

–獲取圓周率pi(),select rand()

(3)日期函式檢視:對sql語句得乙個封裝,結果是以表的形式呈現

檢視的意義:對於複雜的查詢,在多次使用後,維護是一件非常麻煩的事情,定義檢視本質就是對查詢的乙個封裝----把查詢的結果以乙個新的表呈現

定義檢視:create view 檢視名 as (查詢**)

eg: create view 檢視名 as select students.*, scores.score from scores inner join students on scores.stuid = students.id

------檢視建立完畢之後,需要查詢—和普通表的查詢方式是一樣的:

select * from 檢視名

mysql中的事務:當乙個業務邏輯需要多個sql完成時,如果其中某條sql語句出錯,則希望整個操作都撤回,使用事務可以完成退回的功能,保證業務邏輯的正確性

需要記住:事務四大特性(acid)

原子性(atomicity):事務中的全部操作在資料庫中是不可分割的,要麼都執行,要麼都不執行

一致性(consistency):幾個並行執行的事務,其執行結果必須與按某一順序序列執行的結果相一致

隔離性(isolation):事務執行不受其他事務干擾,事務執行的中間結果對其他事務必須是透明的

永續性(durability):對於任意已提交事務,系統必須保證該事務對資料庫的改變不被丟失,即使資料庫出現故障

事務的支援:表的型別是innodb或bdb型別

事務語句:

開啟:begin 預設是開啟的

提交:commit 需要手動操作

撤回:rollback 不需要實現sql語句的時候可以撤回操作

這個在python互動中會經常用到

查詢的總結:

關係的儲存:使用外來鍵–>建立連線(多張表),查詢的時候使用連線查詢就可以

連線查詢: 用於多張張之間的查詢

內建函式

檢視:用於對sql語句進行封裝操作

事務:四性,保持業務邏輯的正確性

mysql高階操作 MySQL資料庫的高階操作

1.資料備份與還原 1 備份 mysqldump mysqldump u username p password dbname tbname1 tbname2.filename.sql mysqldump u root p mydb2 c mysql dump mydb2 dump.sql 2 恢復...

MySQL資料庫高階查詢

mysql查詢 子查詢 exists和not exists子查詢 exists子查詢 在執行create 或drop語句前,可以使用exists判斷該資料庫物件是否存在,返回值是true或false。drop table if exists temp exists也可以作為where語句的子查詢 s...

MySQL資料庫的高階操作

1.資料備份與還原 1 備份 mysqldump mysqldump u username p password dbname tbname1 tbname2.filename.sql mysqldump u root p mydb2 c mysql dump mydb2 dump.sql 2 恢復...