管理系統中的mysql基本應用

MySQL 是什麼?

MySQL是最流行的關係型數據庫管理系統(RDNMS指建立在關係模型上的數據庫)

常用的RDBMS術語

  • 數據庫: 數據庫是一些關聯表的集合。

  • 數據表: 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。

  • 冗餘:存儲兩倍數據,冗餘降低了性能,但提高了數據的安全性。

  • 主鍵:主鍵是唯一的。一個數據表中只能包含一個主鍵。你可以使用主鍵來查詢數據。

  • 外鍵:外鍵用於關聯兩個表。

  • 複合鍵:複合鍵(組合鍵)將多個列作爲一個索引鍵,一般用於複合索引。

  • 索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。類似於書籍的目錄。

  • 參照完整性: 參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證數據的一致性。

 MySQL的入門基礎命令

啓動關閉MySQL服務器

  • 首先,我們需要通過以下命令來檢查MySQL服務器是否啓動:

  • ps -ef | grep mysqld

  • 如果MySql已經啓動,以上命令將輸出mysql進程列表, 如果mysql未啓動,你可以使用以下命令來啓動mysql服務器:

root@host# cd /usr/bin
./mysqld_safe &

如果你想關閉目前運行的 MySQL 服務器, 你可以執行以下命令:

root@host# cd /usr/bin
./mysqladmin -u root -p shutdown
Enter password: ******

如果你想重啓目前運行的 MySQL 服務器, 你可以執行以下命令:

root@host# service mysqld restart //重啓 mysql

MySQL 用戶設置

如果你需要添加 MySQL 用戶,你只需要在 mysql 數據庫中的 user 表添加新用戶即可。

 1、新建用戶

創建test用戶,密碼是123456

MySQL -u root -p 
CREATE USER 'test'@'localhost'  IDENTIFIED BY '1234'; #本地登錄 
CREATE USER 'test'@'%'  IDENTIFIED BY '1234'; #遠程登錄 
quit 
mysql -u test -p #測試是否創建成功

2.爲用戶授權

a.授權格式:grant 權限 on 數據庫.* to 用戶名@登錄主機 identified by '密碼'; 

b.登錄MYSQL,這裏以ROOT身份登錄:

mysql -u root -p

c.爲用戶創建一個數據庫(testDB):

create database testDB; 
create database testDB default charset utf8 collate utf8_general_ci; #設置字符集的語句,一般不寫。utf8_general_ci忽略大小寫

d.授權test用戶擁有testDB數據庫的所有權限:

grant all privileges on testDB.*to "test" @" localhost" identified by "123456";

flush privileges;#刷新系統權限表

e.指定部分權限給用戶:

grant select,update on testDB.*to "test" @" localhost" identified by"123456";

flush privileges;#刷新系統權限表

f.授權test用戶擁有所有數據庫的某些權限:  

grant select,delete,update,create,drop on . to test@”%” identified by “1234”; #”%” 表示對所有非本地主機授權,不包括localhost

g.數據庫/數據表/數據列權限:

數據庫/數據表/數據列權限:

Alter: 修改已存在的數據表(例如增加/刪除列)和索引。
Create: 建立新的數據庫或數據表。
Delete: 刪除表的記錄。
Drop: 刪除數據表或數據庫。
INDEX: 建立或刪除索引。
Insert: 增加表的記錄。
Select: 顯示/搜索表的記錄。
Update: 修改表中已存在的記錄。

全局管理MySQL用戶權限:

file: 在MySQL服務器上讀寫文件。
PROCESS: 顯示或殺死屬於其它用戶的服務線程。
RELOAD: 重載訪問控制表,刷新日誌等。
SHUTDOWN: 關閉MySQL服務。

特別的權限:

ALL: 允許做任何事(和root一樣)。
USAGE: 只允許登錄--其它什麼也不允許做。

3、刪除用戶

mysql -u root -p 
Delete FROM mysql.user Where User=”test” and Host=”localhost”; 
flush privileges; 
drop database testDB;

刪除賬戶及權限:

drop user 用戶名@’%’; 
drop user 用戶名@ localhost;

4、修改指定用戶密碼

mysql -u root -p 
update mysql.user set authentication_string=password(“新密碼”) where User=”test” and Host=”localhost”; 
flush privileges;

5、查看用戶

查詢用戶表

SELECT User,Host,Password FROM mysql.user;

顯示所有用戶(不重複)

SELECT DISTINCT User FROM mysql.user;

查看用戶權限

show grants for 用戶名; 

 

查看user表結構

desc mysql.user;

6.管理MySQL的命令

USE 數據庫名 :
選擇要操作的Mysql數據庫,使用該命令後所有Mysql命令都只針對該數據庫。

mysql> use RUNOOB;
Database changed

SHOW DATABASES: 
列出 MySQL 數據庫管理系統的數據庫列表。

mysql> SHOW DATABASES;

SHOW TABLES:
顯示指定數據庫的所有表,使用該命令前需要使用 use 命令來選擇要操作的數據庫。

mysql> use RUNOOB;Database changed
mysql> SHOW TABLES;

SHOW COLUMNS FROM 數據表:
顯示數據表的屬性,屬性類型,主鍵信息 ,是否爲 NULL,默認值等其他信息。

mysql> SHOW COLUMNS FROM runoob_tbl;

SHOW INDEX FROM 數據表:
顯示數據表的詳細索引信息,包括PRIMARY KEY(主鍵)。

mysql> SHOW INDEX FROM runoob_tbl;

SHOW TABLE STATUS LIKE [FROM db_name] [LIKE 'pattern'] \G: 
該命令將輸出Mysql數據庫管理系統的性能及統計信息。

mysql> SHOW TABLE STATUS  FROM RUNOOB;   # 顯示數據庫 RUNOOB 中所有表的信息mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%';     # 表名以runoob開頭的表的信息mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'\G;   # 加上 \G,查詢結果按列打印

7.刪除數據庫

你也可以使用 mysql mysqladmin 命令在終端來執行刪除命令。

[root@host]# mysqladmin -u root -p drop RUNOOB
Enter password:******

8.創建數據表

創建MySQL數據表需要以下信息:

  • 表名

  • 表字段名

  • 定義每個表字段

語法

以下爲創建MySQL數據表的SQL通用語法:

CREATE TABLE table_name (column_name column_type);


以下例子中我們將在 RUNOOB 數據庫中創建數據表runoob_tbl:

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;

實例解析:

  • 如果你不想字段爲 NULL 可以設置字段的屬性爲 NOT NULL, 在操作數據庫時如果輸入該字段的數據爲NULL ,就會報錯。

  • AUTO_INCREMENT定義列爲自增的屬性,一般用於主鍵,數值會自動加1。

  • PRIMARY KEY關鍵字用於定義列爲主鍵。 您可以使用多列來定義主鍵,列間以逗號分隔。

  • ENGINE 設置存儲引擎,CHARSET 設置編碼。



通過命令提示符創建表

通過 mysql> 命令窗口可以很簡單的創建MySQL數據表。你可以使用 SQL 語句 CREATE TABLE 來創建數據表。

實例

以下爲創建數據表 runoob_tbl 實例:

root@host# mysql -u root -pEnter password:*******mysql> use RUNOOB;Database changed
mysql> CREATE TABLE runoob_tbl(
   -> runoob_id INT NOT NULL AUTO_INCREMENT,
   -> runoob_title VARCHAR(100) NOT NULL,
   -> runoob_author VARCHAR(40) NOT NULL,
   -> submission_date DATE,
   -> PRIMARY KEY ( runoob_id )
   -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.16 sec)mysql>

注意:MySQL命令終止符爲分號 (;) 。

MySQL中刪除數據表是非常容易操作的, 但是你再進行刪除表操作時要非常小心,因爲執行刪除命令後所有數據都會消失。

語法

以下爲刪除MySQL數據表的通用語法:

DROP TABLE table_name ;

在命令提示窗口中刪除數據表

在mysql>命令提示窗口中刪除數據表SQL語句爲 DROP TABLE 

實例

以下實例刪除了數據表runoob_tbl:

root@host# mysql -u root -p
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> DROP TABLE runoob_tbl
Query OK, 0 rows affected (0.8 sec)
mysql>

9.插入數據

MySQL 表中使用 INSERT INTO SQL語句來插入數據。

你可以通過 mysql> 命令提示窗口中向數據表中插入數據,或者通過PHP腳本來插入數據。

語法

以下爲向MySQL數據表插入數據通用的 INSERT INTO SQL語法:

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES                       ( value1, value2,...valueN );

如果數據是字符型,必須使用單引號或者雙引號,如:"value"。


通過命令提示窗口插入數據

以下我們將使用 SQL INSERT INTO 語句向 MySQL 數據表 runoob_tbl 插入數據

實例

以下實例中我們將向 runoob_tbl 表插入三條數據:

root@host# mysql -u root -p password;Enter password:*******mysql> use RUNOOB;Database changed
mysql> INSERT INTO runoob_tbl 
    -> (runoob_title, runoob_author, submission_date)
    -> VALUES    -> ("學習 PHP", "菜鳥教程", NOW());Query OK, 1 rows affected, 1 warnings (0.01 sec)mysql> INSERT INTO runoob_tbl    -> (runoob_title, runoob_author, submission_date)
    -> VALUES    -> ("學習 MySQL", "菜鳥教程", NOW());Query OK, 1 rows affected, 1 warnings (0.01 sec)mysql> INSERT INTO runoob_tbl    -> (runoob_title, runoob_author, submission_date)
    -> VALUES    -> ("JAVA 教程", "RUNOOB.COM", '2016-05-06');Query OK, 1 rows affected (0.00 sec)mysql>

注意: 使用箭頭標記 -> 不是 SQL 語句的一部分,它僅僅表示一個新行,如果一條SQL語句太長,我們可以通過回車鍵來創建一個新行來編寫 SQL 語句,SQL 語句的命令結束符爲分號 ;

在以上實例中,我們並沒有提供 runoob_id 的數據,因爲該字段我們在創建表的時候已經設置它爲 AUTO_INCREMENT(自動增加) 屬性。 所以,該字段會自動遞增而不需要我們去設置。實例中 NOW() 是一個 MySQL 函數,該函數返回日期和時間。

接下來我們可以通過以下語句查看數據表數據:

讀取數據表:

select * from runoob_tbl;

輸出結果:

10查詢數據

MySQL 數據庫使用SQL SELECT語句來查詢數據。

你可以通過 mysql> 命令提示窗口中在數據庫中查詢數據,或者通過PHP腳本來查詢數據。

語法

以下爲在MySQL數據庫中查詢數據通用的 SELECT 語法:

SELECT column_name,column_name
FROM table_name[WHERE Clause][LIMIT N][ OFFSET M]
  • 查詢語句中你可以使用一個或者多個表,表之間使用逗號(,)分割,並使用WHERE語句來設定查詢條件。

  • SELECT 命令可以讀取一條或者多條記錄。

  • 你可以使用星號(*)來代替其他字段,SELECT語句會返回表的所有字段數據

  • 你可以使用 WHERE 語句來包含任何條件。

  • 你可以使用 LIMIT 屬性來設定返回的記錄數。

  • 你可以通過OFFSET指定SELECT語句開始查詢的數據偏移量。默認情況下偏移量爲0。


通過命令提示符獲取數據

以下實例我們將通過 SQL SELECT 命令來獲取 MySQL 數據表 runoob_tbl 的數據:

實例

以下實例將返回數據表 runoob_tbl 的所有記錄:

讀取數據表:

select * from runoob_tbl;

輸出結果:

WHERE 語句的應用

SELECT * from runoob_tbl WHERE runoob_author='菜鳥教程';

11.update查詢

如果我們需要修改或更新 MySQL 中的數據,我們可以使用 SQL UPDATE 命令來操作。.

語法

以下是 UPDATE 命令修改 MySQL 數據表數據的通用 SQL 語法:

UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]
  • 你可以同時更新一個或多個字段。

  • 你可以在 WHERE 子句中指定任何條件。

  • 你可以在一個單獨表中同時更新數據。

當你需要更新數據表中指定行的數據時 WHERE 子句是非常有用的。


通過命令提示符更新數據

以下我們將在 SQL UPDATE 命令使用 WHERE 子句來更新 runoob_tbl 表中指定的數據:

實例

以下實例將更新數據表中 runoob_id 爲 3 的 runoob_title 字段值:

SQL UPDATE 語句:

mysql> UPDATE runoob_tbl SET runoob_title='學習 C' WHERE runoob_id=3;

Query OK, 1 rows affected (0.01 sec)

mysql> SELECT * from runoob_tbl WHERE runoob_id=3;

+-----------+--------------+---------------+-----------------+ 

| runoob_id | runoob_title | runoob_author | submission_date

+-----------+--------------+---------------+-----------------+

 | 3         | 學習 C  | RUNOOB.COM    | 2016-05-06      | 

+-----------+--------------+---------------+-----------------+

1 rows in set (0.01 sec)

從結果上看,runoob_id 爲 3 的 runoob_title 已被修改爲學習C。

12.DELETE語句


你可以使用 SQL 的 DELETE FROM 命令來刪除 MySQL 數據表中的記錄。

你可以在 mysql> 命令提示符或 PHP 腳本中執行該命令。

語法

以下是 SQL DELETE 語句從 MySQL 數據表中刪除數據的通用語法:

DELETE FROM table_name [WHERE Clause]
  • 如果沒有指定 WHERE 子句,MySQL 表中的所有記錄將被刪除。

  • 你可以在 WHERE 子句中指定任何條件

  • 您可以在單個表中一次性刪除記錄。

當你想刪除數據表中指定的記錄時 WHERE 子句是非常有用的。


從命令行中刪除數據

這裏我們將在 SQL DELETE 命令中使用 WHERE 子句來刪除 MySQL 數據表 runoob_tbl 所選的數據。

實例

以下實例將刪除 runoob_tbl 表中 runoob_id 爲3 的記錄:

DELETE 語句:

mysql> use RUNOOB;

Database changed

mysql> DELETE FROM runoob_tbl WHERE runoob_id=3;

Query OK, 1 row affected (0.23 sec)

MySQL LIKE 子句

WHERE 子句中可以使用等號 = 來設定獲取數據的條件,如 "runoob_author = 'RUNOOB.COM'"

SQL LIKE 子句中使用百分號 %字符來表示任意字符,類似於UNIX或正則表達式中的星號 *

如果沒有使用百分號 %, LIKE 子句與等號 = 的效果是一樣的。

語法

以下是 SQL SELECT 語句使用 LIKE 子句從數據表中讀取數據的通用語法:

SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'


實例

以下是我們將 runoob_tbl 表中獲取 runoob_author 字段中以 COM 爲結尾的的所有記錄:

SQL LIKE 語句:

mysql> use RUNOOB;

Database changed

mysql> SELECT * from runoob_tbl  WHERE runoob_author LIKE '%COM';

 +-----------+---------------+---------------+-----------------+

 | runoob_id | runoob_title  | runoob_author | submission_date

+-----------+---------------+---------------+-----------------+

 | 3         | 學習 Java   | RUNOOB.COM    | 2015-05-01      | | 4         

| 學習 Python | RUNOOB.COM    | 2016-03-06      | 

+-----------+---------------+---------------+-----------------+

2 rows in set (0.01 sec)


MySQL UNION 操作符

MySQL UNION 操作符用於連接兩個以上的 SELECT 語句的結果組合到一個結果集合中。相當於and.

舉例:

image.png

image.png

image.png

image.pngimage.png

MySQL 排序

ORDER BY 子句將查詢數據排序後再返回數據

image.png

MySQL GROUP BY 語句

GROUP BY 語句根據一個或多個列對結果集進行分組。

在分組的列上我們可以使用 COUNT, SUM, AVG,等函數。

image.pngimage.png


Mysql 連接的使用

如何使用 MySQL 的 JOIN 在兩個或多個表中查詢數據

JOIN 按照功能大致分爲如下三類:

  • INNER JOIN(內連接,或等值連接):獲取兩個表中字段匹配關係的記錄。

  • LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。

  • RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。

image.png




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