文章目錄
前言:
-
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)
總結:
本篇博客主要講述了數據庫管理,之後會介紹數據庫中索引、事務、視圖、存儲過程和存儲引擎的理論和使用方法~