MySQL資料庫基礎

2021-10-08 19:47:42 字數 3583 閱讀 9978

資料庫管理系統概述

資料庫(db)是一種專門儲存資訊和維護資訊的容器,嚴格地說資料庫是「按照資料結構來組織、儲存和管理資訊的倉庫」。

資料庫管理系統(database management system-dbms)管理資料庫的軟體。具有對資料儲存、安全、一致性、併發操作、恢復和訪問等功能。關係型資料庫管理系統(rdbms)是應用最廣泛的一種資料庫管理系統,關係型資料庫管理系統以表、欄位和記錄等結構來組織資料。表用來儲存資料,每個表由一組欄位來定義其結構,記錄則是表中的一條資料。

關聯式資料庫是指一些相關的表和其他資料庫物件的集合。對於關聯式資料庫來說,關係就是表的同義詞。

表是由行和列組成(類似二維陣列的結構)。

列包含一組命名的屬性(也稱字段)。

行包含一組記錄,每行包含一條記錄。

行和列的交集稱為資料項,指出了某列對應的屬性在某行上的值,也稱為字段值。

列需定義資料型別,比如整數或者字元型的資料。

儲存引擎

儲存引擎就是如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢資料等技術的實現方法。因為在關聯式資料庫中資料的儲存是以表的形式儲存的,所以儲存引擎簡而言之就是指表的型別。資料庫的儲存引擎決定了表在計算機中的儲存方式。

在oracle和sql server等資料庫中只有一種儲存引擎,所有資料儲存管理機制都是一樣的。而mysql資料庫提供了多種儲存引擎,使用者可以根據不同的需求為資料表選擇不同的儲存引擎,使用者也可以根據自己的需要編寫自己的儲存引擎,mysql的核心就是儲存引擎。

innodb儲存引擎

innodb儲存引擎的特點:

支援外來鍵(foreign key)

支援事務(transaction):如果某張表主要提供oltp支援,需要執行大量的增、刪、改操作(insert、delete、update語句),出於事務安全方面的考慮,innodb儲存引擎是更好的選擇。

最新版本的mysql已經開始支援全文檢索。

myisam儲存引擎

myisam儲存引擎的特點:

myisam具有檢查和修復表的大多數工具。

myisam表可以被壓縮

myisam表最早支援全文索引

但myisam表不支援事務

但myisam表不支援外來鍵(foreign key)。

如果需要執行大量的select語句,出於效能方面的考慮,myisam儲存引擎是更好的選擇。

memory儲存引擎

memory儲存引擎的特點:

memory儲存引擎是mysql中一類特殊的儲存引擎。該儲存引擎使用存在於記憶體中的內容來建立表,每個表實際對應乙個磁碟檔案,格式為.frm。這類表因為資料在記憶體中,且預設使用hash索引,所以訪問速度非常快;但一旦服務關閉,表中的資料會丟失。

每個memory表可以放置資料量的大小受max_heap_table_size系統變數的約束,初始值為16mb,可按需求增大。此外,在定義memory表時可通過max_rows子句定義表的最大行數。

該儲存引擎主要用於那些內容穩定的表,或者作為統計操作的中間表。對於該類表需要注意的是,因為資料並沒有實際寫入磁碟,一旦重啟,則會丟失。

mysql5.7預設的預設的儲存引擎是innodb。

儲存引擎的選擇

不同儲存引擎都有各自的特點,以適應不同的需求

mysql儲存引擎功能對比

功 能 innodb myisam memory

儲存限制 64tb 256tb ram

支援事務 支援 無 無

空間使用 高 低 低

記憶體使用 高 低 高

支援資料快取 支援 無 無

插入資料速度 低 高 高

支援外來鍵 支援 無 無

**1.查詢入職時間在1982-7-9之後,並且不從事salesman工作的員工姓名、入職時間、職位。

2.查詢員工姓名的第三個字母是a的員工姓名。

3.查詢除了10、20號部門以外的員工姓名、部門編號。

4.查詢部門號為30號員工的資訊,先按工資降序排序,再按姓名公升序排序。

5.查詢沒有上級的員工(經理號為空)的員工姓名。

6.查詢工資大於等於4500並且部門為10或者20的員工的姓名\工資、部門編號。

7.查詢部門編號是20的員工資訊。

8.查詢工作為clerk的員工號、員工名和部門號。

9. 查詢獎金comm高於工資sal的員工資訊。

10. 查詢獎金高於工資20%的員工資訊。

11. 查詢部門編號是10並且工作為manager的員工和部門編號是20並且工作是clerk的員工資訊。

12. 查詢工作不是manager和clerk,並且工資大於或等於2000的員工資訊。

13. 查詢有獎金的員工資訊。

14. 查詢沒有獎金或獎金低於100的員工資訊。

15. 查詢員工名正好為6個字母的員工資訊。

16. 查詢員工名字中不包含字母s的員工。

17. 查詢員工姓名的第二個字母為m的員工資訊

select ename,hiredate,job from emp where hiredate>

'1982-07-09' and job !=

'salesman'

select ename from emp where ename like '__a%'

select ename,deptno from emp where deptno not in (10,

20)(select * from emp where deptno =

30 order by sal desc) order by ename

select ename from emp where mgr is null

select ename,sal,deptno from emp where sal>

4500 and deptno in (10,

20)select * from emp where deptno =

20select empno,ename,deptno from emp where job =

'clerk'

select * from emp where comm>sal

select * from emp where comm>sal*

0.2select * from emp where (deptno=

10 and job=

'manager'

) or (deptno=

20 and job=

'clerk'

)select * from emp where job not in (

'manager'

,'clerk'

) and sal>=

2000

select * from emp where comm is not null

select * from emp where comm is null or comm<

100select * from emp where ename like '______'

select * from emp where ename not like '%s%'

select * from emp where ename like '_m%'

概念都是從網上和書上找的,算不算原創,我很方

資料庫 mysql 基礎

1.建立 create database 資料庫名 例如建立名為d testdb的資料庫 mysql create database d testdb 2.修改 alter database 資料庫名 character set 字符集名 例如修改字符集 set utf8 3.刪除 drop dat...

mysql資料庫基礎

乙個表不能有多個主鍵?解釋 不能,乙個表中有且只能有乙個主鍵,大事兩列 字段 可以作為乙個主鍵 例如 mysql create table t name varchar 5 addr varchar 28 age int 5 primary key name,addr 為什麼要設定主鍵?資料庫儲存的...

MySql資料庫(基礎)

學習資料庫,我覺得關鍵在於記住相關的英文單詞。把自己比較陌生的寫下來,便於記憶 查詢表結構 desc 表名 修改表頭欄位都是 alter table.開頭 給建立好的表新增位址字段,例如給學生表新增gender varchar 2 字段 alter table student add column ...