MySQL數據庫管理

前言:

  • MySQL 是最流行的關係型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一

  • MySQL 是一個關係型數據庫管理系統,由瑞典 MySQL AB 公司開發,-目前屬於 Oracle 公司。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

一、數據庫基本操作命令

1.1 基本操作命令
  • Mysql管理操作

    查看數據庫結構

    創建及刪除庫和表

    管理表記錄

數據庫的基本結構:

先有實例(代表數據庫的節點、服務器)——》包含多個數據庫——》數據庫中放了多個表——》 表由記錄和字段組成

1.2 查看數據庫列表信息

示例

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql> 

1.3 查看數據庫中的數據表信息

格式:use 數據庫名 (選擇數據庫)

show tables; (查看數據表)

示例

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
.............省略部分內容
1.4 現實數據庫的表結構(字段)

命令格式:describe [數據庫名]表名

示例

mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
.............省略部分內容	

數據表的結構

第一字段 Field每條(行)代表的是字段

第二字段 Type代表是此條字段可以寫什麼樣的數據類型

字段中定義了各個類型及是否爲默認

第三字段 Null代表此條字段是否可以爲空

第四字段 Key 主鍵 PRI(primary)代表是否爲主鍵 ,主鍵可以有組合組件,多個字段組成一個組件

第五字段 Default 默認字段,當設置沒有輸入內容時,生成的表顯示的就是默認字段,可以設置默認字段爲一個固定值,例如設置默認字段爲:nj,則之後創建如果沒有設置此字段,表中此項默認爲:nj。

第六字段 Extra 擴展 擴展可以顯示標識符列:(引申概念:種子、增量,例如種子爲1 增量爲1,則生成一條記錄時,id爲1 第二個記錄爲2)不可人爲修改

二、SQL語句概述

  • SQL語言

    是Structured Query Language的縮寫,即結構化查詢語言

    是關係型數據庫的標準語言

    用於維護管理數據庫,如數據查詢、數據更新、訪問控制、對象管理等功能

  • SQL分類

    DDL:數據定義語言

    DML:數據操縱語言

    DQL:數據查詢語言

    DCL:數據控制語言

2.1 DDL語句操作
  • DDL語句用於創建數據庫對象,如庫、表、索引等

  • 使用DDL語句新建庫、表

    創建數據庫:create database auth;

    創建數據表:create table users (寫各字段定義)

mysql> create database auth;  #創建數據表auth
Query OK, 1 row affected (0.00 sec)
mysql> create table users(id int primary key,name char(10));   					#定義表結構
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| users          |
+----------------+
1 row in set (0.00 sec)
  • 使用DDL語句刪除庫、表

    刪除指定的數據表:DROP TABLE [數據庫名.]表名

    刪除指定的數據庫:DROP DATABASE 數據庫名

mysql> drop table auth.users;
Query OK, 0 rows affected (0.01 sec)
mysql> drop database auth;
Query OK, 0 rows affected (0.00 sec)
2.2 DML語句操作
  • DML語句用於對錶中的數據進行管理

  • 包括以下操作

    insert :插入新數據

    update:更新原有數據

    delete:刪除不需要的數據

2.2.1 向數據表中插入新的數據記錄
  • insert into 表名(字段1,字段2,…) values(字段1的值,字段2的值,…)
mysql> show tables;   #重新創建auth數據庫和users表
+----------------+
| Tables_in_auth |
+----------------+
| users          |
+----------------+
1 row in set (0.00 sec)

DML語句用於對錶中的數據進行管理

包括以下操作

INSERT:插入新數據

UPDATE:更新原有數據

DELETE:刪除不需要的數據

insert into(固定搭配)

定義:int 數值 char字符串

也可以不跟字段,直接跟users values

示例:

mysql> insert into users(id,name) values(1,'changzhi');
Query OK, 1 row affected (0.06 sec)

mysql> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  1 | changzhi |
+----+----------+
1 row in set (0.00 sec)
###也可以使用以下方式插入新數據
mysql> insert into users values(2,'jiaoshou');
Query OK, 1 row affected (0.01 sec)

mysql> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  1 | changzhi |
|  2 | jiaoshou |
+----+----------+
2 rows in set (0.00 sec)
  • 修改、更新數據表中的數據記錄

    格式:update 表名 set 字段名1=值1[,字段2=值2] where 條件表達式

mysql> update auth.users set name='zhangsan' where name='changzhi';  #將changzhi 修改爲zhangsan
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | jiaoshou |
+----+----------+
2 rows in set (0.00 sec)

mysql> 
  • 在數據庫中刪除指定的數據記錄

    格式:delete from 表名 where 條件表達式

    示例

mysql> delete from auth.users where name='zhangsan';
Query OK, 1 row affected (0.00 sec) 
#刪除auth數據庫users表中名爲‘zhangsan’記錄
mysql> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  2 | jiaoshou |
+----+----------+
1 row in set (0.00 sec)

mysql> 

若不帶where條件的語句表示刪除表中所有記錄

格式:delete from auth.users;

2.3 DQL語句操作
  • DQL是數據查詢語句,只有一條:select

  • 用於從數據表中查找符合條件的數據記錄

  • 查詢時可不指定條件

    select 字段名1,字段名2…from 表名

    示例

mysql> select * from auth.users;
+----+----------+
| id | name     |
+----+----------+
|  2 | jiaoshou |
+----+----------+
1 row in set (0.01 sec)

mysql> ^C
  • 查詢時指定條件

    select 字段名1,字段名2…from 表名 where 條件表達式

mysql> select name from auth.users where name='jiaoshou';
+----------+
| name     |
+----------+
| jiaoshou |
+----------+
1 row in set (0.01 sec)

mysql> 
2.4 DCL語句操作
  • 設置用戶權限(用戶不存在時,則新建用戶)

格式:grant 權限列表 on 數據庫名.表名 to 用戶名@來源地址 [identified by ‘密碼’]

grant all privileges on *.* to 'root'@'192.168.181.%' identified by 'abc123' with grant option; #允許192.168.181.0網段使用root賬號複製所有數據庫數據,登錄密碼爲‘abc123’
mysql> grant all privileges on *.* to 'root'@'192.168.181.%' identified by 'abc123' with grant option;
Query OK, 0 rows affected, 1 warning (0.01 sec)
#允許192.168.181.0網段使用root賬號複製所有數據庫數據,登錄密碼爲‘abc123’
  • 查看用戶的權限

格式:show grants for 用戶名@來源地址

mysql> show grants for 'root'@'192.168.181.%';
+-------------------------------------------------------------------------+
| Grants for [email protected].%                                           |
+-------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.181.%' WITH GRANT OPTION |
+-------------------------------------------------------------------------+
1 row in set (0.00 sec)
  • 撤銷用戶的權限

格式:remove 權限列表 on 數據庫名.表名 from 用戶名@來源地址

mysql> revoke all privileges on *.* from 'root'@'192.168.181.%';
Query OK, 0 rows affected (0.00 sec)

三、實驗案例

需求

  • 爲公司建立員工工資數據庫 imployee_salary
  • 在imployee_salary數據庫中,建立 IT_salary數據表,以保存IT運營部員工的工資信息,如下表所示
    在這裏插入圖片描述

步驟一

  • 創建一個新的數據庫salary
mysql> create database salary;
Query OK, 1 row affected (0.00 sec)
  • 建立數據表IT_salary
mysql> create table IT_salary(崗位類型 varchar(30) not null,姓名 char(16) not null,年齡 tinyint not null,員工ID smallint not null primary key,學歷 char(16) default '大專',年限 tinyint not null,薪資 int not null);
Query OK, 0 rows affected (0.02 sec)

mysql> describe IT_salary;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| 崗位類型     | varchar(30) | NO   |     | NULL    |       |
| 姓名         | char(16)    | NO   |     | NULL    |       |
| 年齡         | tinyint(4)  | NO   |     | NULL    |       |
| 員工ID       | smallint(6) | NO   | PRI | NULL    |       |
| 學歷         | char(16)    | YES  |     | 大專    |       |
| 年限         | tinyint(4)  | NO   |     | NULL    |       |
| 薪資         | int(11)     | NO   |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
  • 添加數據
mysql> insert into IT_salary values('網絡工程師','孫空武',27,011,'本科',3^C
mysql> select * from IT_salary;
+-----------------+-----------+--------+----------+--------+--------+--------+
| 崗位類型        | 姓名      | 年齡   | 員工ID   | 學歷   | 年限   | 薪資   |
+-----------------+-----------+--------+----------+--------+--------+--------+
| 網絡工程師      | 孫空武    |     27 |       11 | 本科   |      3 |   4800 |
+-----------------+-----------+--------+----------+--------+--------+--------+
1 row in set (0.00 sec)

同理輸入其他數據即可。


----------------+-----------+--------+----------+--------+--------+--------+
| 崗位類型        | 姓名      | 年齡   | 員工ID   | 學歷   | 年限   | 薪資   |
+-----------------+-----------+--------+----------+--------+--------+--------+
| 網絡工程師      | 孫空武    |     27 |       11 | 本科   |      3 |   4800 |
+-----------------+-----------+--------+----------+--------+--------+--------+
1 row in set (0.00 sec)

總結:

本篇博客主要講述了數據庫管理,之後會介紹數據庫中索引、事務、視圖、存儲過程和存儲引擎的理論和使用方法~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章