1. 程式人生 > 其它 >MySQL資料庫管理常用基本操作

MySQL資料庫管理常用基本操作

技術標籤:雲端計算mysql運維mysql資料庫運維雲端計算

文章目錄

一、資料庫基本概念

1、資料庫管理系統(DBMS)

  • 是實現對資料庫資源有效組織、管理和存取的系統軟體
  • 資料庫的建立和維護功能、資料定義功能、資料操縱功能、資料庫的執行管理功能、通訊功能

2、資料庫系統

  • 是一個人機系統,由硬體、OS、資料庫、DBMS、應用軟體和資料庫使用者組成
  • 使用者可以通過 DBMS 或應用程式操作資料庫

二、當今主流資料庫介紹

1、SQL Server(微軟公司產品)

  • 面向WIndows作業系統
  • 簡單、易用

2、Oracle(甲骨文公司產品)

  • 面向所有主流平臺
  • 安全、完善、操作複雜

3、DB2(IBM公司產品)

  • 面向所有主流平臺
  • 大型、安全、完善

4、MySQL(甲骨文公司收購)

  • 免費、開源、體積小

三、資料庫型別

(一)、關係資料庫

1、關係資料庫系統是基於關係模型的資料庫系統
2、關係模型的資料結構使用簡單易懂的二維資料表
3、關係模型可用簡單的”實體關係”(E-R)圖來表示

4、E-R圖中包含了實體 (資料物件) 、關係和屬性三個要素
在這裡插入圖片描述

5、實體

  • 也稱為例項,對應現實世界中可區別於其他物件的 “事件” 或 “事物”
  • 如銀行客戶、銀行賬戶等

6、屬性

  • 實體所具有的某一特性, 一個實體可以有多個屬性
  • 如"銀行客戶”實體集中的每個實體均具有姓名、住址、電話等屬性

7、聯絡

  • 實體集之間的對應關係稱為聯絡,也稱為關係
  • 如銀行客戶和銀行賬戶之間存在“儲蓄”的關係

8、所有實體及實體之間聯絡的集合構成一個關係資料庫

9、關係資料庫應用

  • 關係型資料庫:Oracle,、MySQL、SQL Server、Sybase、Informix、access、DB2、 FoxPRO
  • 應用舉例:12306使用者資訊系統、淘寶賬號系統、聯通手機號資訊系統、銀行使用者賬號系統、網站使用者資訊系統

(二)、非關係資料庫介紹

1、非關係資料庫也被稱作NoSQL (Not Only SQL)
2、儲存資料不以關係模型為依據,不需要固定的表格式
3、非關係型資料庫的優點

  • 資料庫可高併發讀寫
  • 對海量資料高效率儲存與訪問
  • 資料庫具有高擴充套件性與高可用性

4、常用的非關係資料庫:Redis、mongoDB等

四、MySQL資料庫介紹

1、一款深受歡迎的開源關係型資料庫;
2、Oracle旗下的產品
3、遵守GPL協議,可以免費使用與修改

4、特點

  • 效能卓越、服務穩定
  • 開源、無版權限制、成本低
  • 多執行緒、多使用者
  • 基於C/S (客戶端/伺服器)架構
  • 安全可靠

MySQL資料庫下載網址:http://www.dev.mysql.com/downloads

五、MySQL資料庫管理基本操作

資料庫 ----> 資料表 -----> 行(記錄):用來描述一個物件的資訊
資料庫 ----> 資料表 -----> 列(欄位):用來描述物件的一個屬性

常用的資料型別:
int:整型
float:單精度浮點 4位元組32位
double:雙精度浮點 8位元組64位
char:固定長度的字元型別
varchar:可變長度的字元型別
text:文字
image:圖片
decimal (5,2):5個有效長度數字,小數點後面有2位

------------檢視資料庫結構-------------

1.檢視當前伺服器中的資料庫
SHOW DATABASES;     #大小寫不區分,分號“;”表示結束

2.檢視資料庫中包含的表
USE 資料庫名;
SHOW TABLES;

3.查看錶的結構(欄位)
USE 資料庫名;
DESCRIBE [資料庫名.] 表名;
可縮寫成: DESC 表名;

-------------SQL語句------------------

SQL語句用於維護管理資料庫,包括資料查詢、資料更新、訪問控制、物件管理等功能。

SQL語言分類:
DDL:資料定義語言,用於建立資料庫物件,如庫、表、索引等
DML:資料操縱語言,用於對錶中的資料進行管理
DQL:資料查詢語言,用於從資料表中查詢符合條件的資料記錄.
DCL:資料控制語言,用於設定或者更改資料庫使用者或角色許可權

-------------------建立及刪除資料庫和表------------------------

1.建立新的資料庫
CREATE DATABASE 資料庫名;

2.建立新的表
CREATE TABLE 表名 (欄位1 資料型別,欄位2 資料型別 [,...] [,PRIMARY KEY (主鍵名)]);
#主鍵一般選擇能代表唯一性的欄位 不允許取空值(NULL),一個表只能有一個主鍵。

例:
CREATE DATABASE gcc; .
USE gcc;
CREATE TABLE GCC01 (id int NOT NULL,name char(10) NOT NULL,score decimal(5,2),passwd char(48)   DEFAULT '',PRIMARY KEY (id)) ;

DESC GCC01;

3.刪除指定的資料表
DROP TABLE [資料庫名.] 表名;      #如不用USE進入庫中,則需加上資料庫名

4.刪除指定的資料庫
DROP DATABASE 資料庫名;

--------------管理表中的資料記錄--------------

1.向資料表中插入新的資料記錄
INSERT INTO 表名(欄位1,欄位2[,...]) VALUES(欄位1的值,欄位2的值, ...);

例:
INSERT INTO GCC01 (id,name,score,passwd) values (1,'zhangsan',70.5,PASSWORD('123456'));
#PASSWORD('123456'):查詢資料記錄時,密碼字串以加密形式顯示;若不使用PASSWORD(),查詢時以明文顯示。

INSERT INTO GCC01 VALUES(2,'lisi',90.5,654321);

SELECT * FROM GCC01;     #查詢表的全部資料記錄

2.查詢資料記錄
SELECT 欄位名1,欄位名2[,...] FROM 表名 [WHERE 條件表示式];

例:
SELECT * FROM GCC01;
SELECT id,name,score FROM GCC01 WHERE id=2;

select name from GCC01\G         #以列表方式豎向顯示
select * from GCC01 limit 2;     #只顯示頭2
select * from GCC01 limit 2,3;   #顯示第2行後的前3

3.修改、更新資料表中的資料記錄
UPDATE 表名 SET 欄位名1=欄位值1[,欄位名2=欄位值2] [WHERE 條件表示式];

例:
UPDATE GCC01 SET passwd=PASSWORD('') WHERE name='zhangsan';
UPDATE GCC01 SET name='wangxiaoer',passwd='' WHERE id=3;

4.在資料表中刪除指定的資料記錄
DELETE FROM 表名 [WHERE 條件表示式];

例:
DELETE FROM GCC01 WHERE id=4;

-------------------修改表名和表結構--------------------------

1.修改表名
ALTER TABLE 舊錶名 RENAME 新表名;

例:
ALTER TABLE GCC01 RENAME CLASS08;
ALTER TABLE CLASS08 RENAME GCC01;

2.擴充套件表結構(增加欄位)
ALTER TABLE 表名 ADD address varchar(50) default '地址不詳';
#default '地址不詳':表示此欄位設定預設值地址不詳;可與NOT NULL配合使用

3.修改欄位()名,新增唯一鍵
ALTER TABLE 表名 CHANGE 舊列名 新列名 資料型別 [unique key];

例:
ALTER TABLE GCC01 CHANGE name user_name varchar(10) unique key;
#CHANGE可修改欄位名、資料型別、約束等所有項。

4.刪除欄位
ALTER TABLE 表名 DROP 欄位名;

例:
ALTER TABLE GCC01 DROP passwd;

案例擴充套件:

use gcc;
create table if not exists info (
id int(4) zerofill primary key auto_increment,      #指定主鍵的第二種方式
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));

-----------------------------------------------------------------------------------------------
#if not exists: 表示檢測要建立的表是否已存在,如果不存在就繼續建立
#int(4) zerofill: 表示若數值不滿4位數,則前面用“0"填充,例0001
#auto_increment: 表示此欄位為自增長欄位,即每條記錄自動遞增1,預設從1開始遞增;自增長欄位資料不可以重複;自增長欄位必須是主鍵;如新增的記錄資料沒有指定此欄位的值且新增失敗也會自動遞增一次
#unique key: 表示此欄位唯一鍵約束,此欄位資料不可以重複;一張表中只能有一個主鍵,但是一張表中可以有多個唯一鍵
#not null:表示此欄位不允許為NULL
-------------------------------------------------------------------------------------------------

---------------------------資料表高階操作-----------------------------------------

1.克隆表,將資料表的資料記錄生成到新的表中
方法一:
create table test01 like GCC01;       #通過 LIKE 方法,複製GCC01表結構生成test01表
insert into test01 select * from GCC01;

方法二:
CREATE TABLE test02 (SELECT * from GCC01);

show create table test02\G      #獲取資料表的表結構、索引等資訊
SELECT * from test02;

2.清空表,刪除表內的所有資料
方法一
delete from test01;
#DELETE清空表後,返回的結果內有刪除的記錄條目;DELETE工作時是一行一行的刪除記錄資料的;如果表中有自增長欄位,使用DELETE FROM刪除所有記錄後,再次新新增的記錄會從原來最大的記錄ID後面繼續自增寫入記錄。

方法二:
truncate table test01;
#TRUNCATE清空表後,沒有返回被刪除的條目;TRUNCATE工作時是將表結構按原樣重新建立,因此在速度上TRUNCATE會比DELETE清空錶快;使用TRUNCATE TABLE清空表內資料後,ID會從1開始重新記錄。

3.建立臨時表
臨時表建立成功之後,使用 SHOW TABLES 命令是看不到建立的臨時表的,臨時表會在連線退出後被銷燬。
如果在退出連線之前,也可以可執行增刪改查等操作,比如使用DROP TABLE語句手動直接刪除臨時表。

CREATE TEMPORARY TABLE 表名 (欄位1 資料型別,欄位2 資料型別[,...][,PRIMARY KEY (主鍵名)]);

例:
create temporary table test03 (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar (50));

insert into test03 values (1,'zhangsan‘,123456,'running’);

select * from test03;
show tables;

quit
select * from test03;

4.建立外來鍵約束
create table test03 (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50),
hobid int(4));

注意:與外來鍵關聯的子表的欄位必須設定為主鍵。要求主表不能是臨時表,主表外來鍵欄位和子表的欄位具備相同的資料型別、字元長度和約束。
#建立子表test04
create table test04 (sid int(4),hobname varchar(50));
#為子表新增一個主鍵約束。主鍵名建議以“PK_”開頭。
alter table test04 add constraint PK_sid primary key (sid);
# test03 表新增外來鍵,並將 test03 表的 hobby 欄位和 test04 表的 sid 欄位建立外來鍵關聯。外來鍵名建議以“FK_”開頭。
alter table test03 add constraint FK_hob foreign key (hobid) references test04 (sid);

desc test03;
#檢視和刪除外來鍵約束
show create table test03;
alter table test03 drop foreign key FK_hob;
alter table test03 drop key FK_hob;
desc test03

MySQL中6種常見的約束:
主鍵約束(primary key)
外來鍵約束(foreign key)
非空約束(not null)
唯一性約束(unique [key|index] )
預設值約束(default) 
自增約束(auto_increment)