MySQL 【教程一】

                    

 

 

 前言

什麼是數據庫?php

數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。html

每一個數據庫都有一個或多個不一樣的 API 用於建立,訪問,管理,搜索和複製所保存的數據。node

咱們也能夠將數據存儲在文件中,可是在文件中讀寫數據速度相對較慢。mysql

因此,如今咱們使用關係型數據庫管理系統(RDBMS)來存儲和管理大數據量。所謂的關係型數據庫,是創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。linux

RDBMS 即關係數據庫管理系統(Relational Database Management System)的特色:web

  • 1.數據以表格的形式出現
  • 2.每行爲各類記錄名稱
  • 3.每列爲記錄名稱所對應的數據域
  • 4.許多的行和列組成一張表單
  • 5.若干的表單組成database

RDBMS 術語sql

在咱們開始學習MySQL 數據庫前,讓咱們先了解下RDBMS的一些術語:數據庫

  • 數據庫: 數據庫是一些關聯表的集合。
  • 數據表: 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。
  • 列: 一列(數據元素) 包含了相同類型的數據, 例如郵政編碼的數據。
  • 行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。
  • 冗餘:存儲兩倍數據,冗餘下降了性能,但提升了數據的安全性。
  • 主鍵:主鍵是惟一的。一個數據表中只能包含一個主鍵。你可使用主鍵來查詢數據。
  • 外鍵:外鍵用於關聯兩個表。
  • 複合鍵:複合鍵(組合鍵)將多個列做爲一個索引鍵,通常用於複合索引。
  • 索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。相似於書籍的目錄。
  • 參照完整性: 參照的完整性要求關係中不容許引用不存在的實體。與實體完整性是關係模型必須知足的完整性約束條件,目的是保證數據的一致性。

MySQL 爲關係型數據庫(Relational Database Management System), 這種所謂的"關係型"能夠理解爲"表格"的概念, 一個關係型數據庫由一個或數個表格組成, 如圖所示的幾個表格:編程

  • 表頭(header): 每一列的名稱;
  • 列(col): 具備相同數據類型的數據的集合;
  • 行(row): 每一行用來描述某條記錄的具體信息;
  • 值(value): 行的具體信息, 每一個值必須與該列的數據類型相同;
  • 鍵(key): 鍵的值在當前列中具備惟一性。

MySQL數據庫windows

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

  • MySQL 是開源的,因此你不須要支付額外的費用。
  • MySQL 支持大型的數據庫。能夠處理擁有上千萬條記錄的大型數據庫。
  • MySQL 使用標準的 SQL 數據語言形式。
  • MySQL 能夠運行於多個系統上,而且支持多種語言。這些編程語言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 對PHP有很好的支持,PHP 是目前最流行的 Web 開發語言。
  • MySQL 支持大型數據庫,支持 5000 萬條記錄的數據倉庫,32 位系統表文件最大可支持 4GB,64 位系統支持最大的表文件爲8TB。
  • MySQL 是能夠定製的,採用了 GPL 協議,你能夠修改源碼來開發本身的 MySQL 系統。

 

MySQL 安裝

全部平臺的 MySQL 下載地址爲: MySQL 下載 。 挑選你須要的 MySQL Community Server 版本及對應的平臺。

注意:安裝過程咱們須要經過開啓管理員權限來安裝,不然會因爲權限不足致使沒法安裝。

Linux/UNIX 上安裝 MySQL

Linux平臺上推薦使用RPM包來安裝Mysql,MySQL AB提供瞭如下RPM包的下載地址:

  • MySQL - MySQL服務器。你須要該選項,除非你只想鏈接運行在另外一臺機器上的MySQL服務器。
  • MySQL-client - MySQL 客戶端程序,用於鏈接並操做Mysql服務器。
  • MySQL-devel - 庫和包含文件,若是你想要編譯其它MySQL客戶端,例如Perl模塊,則須要安裝該RPM包。
  • MySQL-shared - 該軟件包包含某些語言和應用程序須要動態裝載的共享庫(libmysqlclient.so*),使用MySQL。
  • MySQL-bench - MySQL數據庫服務器的基準和性能測試工具。
# 安裝前,咱們能夠檢測系統是否自帶安裝 MySQL:
rpm -qa | grep mysql
# 若是你係統有安裝,那能夠選擇進行卸載:
rpm -e mysql  # 普通刪除模式
rpm -e --nodeps mysql  # 強力刪除模式,若是使用上面命令刪除時,提示有依賴的其它文件,則用該命令能夠對其進行強力刪除

安裝 MySQL:

接下來咱們在 Centos7 系統下使用 yum 命令安裝 MySQL,須要注意的是 CentOS 7 版本中 MySQL數據庫已從默認的程序列表中移除,因此在安裝前咱們須要先去官網下載 Yum 資源包,下載地址爲:https://dev.mysql.com/downloads/repo/yum/

# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum update
# yum install mysql-server
# 權限設置:
chown mysql:mysql -R /var/lib/mysql
#
初始化 MySQL: mysqld --initialize
# 啓動 MySQL: systemctl start mysqld # 查看 MySQL 運行狀態: systemctl status mysqld

注意:若是咱們是第一次啓動 mysql 服務,mysql 服務器首先會進行初始化的配置。

此外,你也可使用 MariaDB 代替,MariaDB 數據庫管理系統是 MySQL 的一個分支,主要由開源社區在維護,採用 GPL 受權許可。開發這個分支的緣由之一是:甲骨文公司收購了 MySQL 後,有將 MySQL 閉源的潛在風險,所以社區採用分支的方式來避開這個風險。

# MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。
yum install mariadb-server mariadb 
# mariadb數據庫的相關命令是:

systemctl start mariadb  #啓動MariaDB
systemctl stop mariadb  #中止MariaDB
systemctl restart mariadb  #重啓MariaDB
systemctl enable mariadb  #設置開機啓動

驗證 MySQL 安裝

在成功安裝 MySQL 後,一些基礎表會表初始化,在服務器啓動後,你能夠經過簡單的測試來驗證 MySQL 是否工做正常。

使用 mysqladmin 工具來獲取服務器狀態:

使用 mysqladmin 命令來檢查服務器的版本, 在 linux 上該二進制文件位於 /usr/bin 目錄,在 Windows 上該二進制文件位於C:\mysql\bin 。

[root@host]# mysqladmin --version

linux上該命令將輸出如下結果,該結果基於你的系統信息:

mysqladmin  Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386

若是以上命令執行後未輸出任何信息,說明你的Mysql未安裝成功。

使用 MySQL Client(Mysql客戶端) 執行簡單的SQL命令

你能夠在 MySQL Client(Mysql客戶端) 使用 mysql 命令鏈接到 MySQL 服務器上,默認狀況下 MySQL 服務器的登陸密碼爲空,因此本實例不須要輸入密碼。

命令以下:

[root@host]# mysql

以上命令執行後會輸出 mysql>提示符,這說明你已經成功鏈接到Mysql服務器上,你能夠在 mysql> 提示符執行SQL命令:

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.13 sec)

Mysql安裝後須要作的

Mysql安裝成功後,默認的root用戶密碼爲空,你可使用如下命令來建立root用戶的密碼:

[root@host]# mysqladmin -u root password "new_password";

如今你能夠經過如下命令來鏈接到Mysql服務器:

[root@host]# mysql -u root -p
Enter password:*******

注意在輸入密碼時,密碼是不會顯示了,你正確輸入便可。

Windows 上安裝 MySQL

Windows 上安裝 MySQL 相對來講會較爲簡單,最新版本能夠在 MySQL 下載 中下載中查看(更詳細安裝:Windows 上安裝 MySQL)。

點擊 Download 按鈕進入下載頁面,點擊下圖中的 No thanks, just start my download. 就可當即下載:

下載完後,咱們將 zip 包解壓到相應的目錄,這裏我將解壓後的文件夾放在 C:\web\mysql-8.0.11 下。

接下來咱們須要配置下 MySQL 的配置文件

打開剛剛解壓的文件夾 C:\web\mysql-8.0.11 ,在該文件夾下建立 my.ini 配置文件,編輯 my.ini 配置如下基本信息:

[client]
# 設置mysql客戶端默認字符集
default-character-set=utf8
 
[mysqld]
# 設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=C:\\web\\mysql-8.0.11
# 設置 mysql數據庫的數據的存放目錄,MySQL 8+ 不須要如下配置,系統本身生成便可,不然有可能報錯
# datadir=C:\\web\\sqldata
# 容許最大鏈接數
max_connections=20
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 建立新表時將使用的默認存儲引擎
default-storage-engine=INNODB

接下來咱們來啓動下 MySQL 數據庫:

  • 以管理員身份打開 cmd 命令行工具,切換目錄:
cd C:\web\mysql-8.0.11\bin
  • 初始化數據庫:
mysqld --initialize --console
  • 執行完成後,會輸出 root 用戶的初始默認密碼,如:
...
2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: APWCY5ws&hjQ
...

APWCY5ws&hjQ 就是初始密碼,後續登陸須要用到,你也能夠在登錄後修改密碼。

  • 輸入如下安裝命令:
mysqld install
  • 啓動輸入如下命令便可:
net start mysql
# 注意: 在 5.7 須要初始化 data 目錄:
cd C:\web\mysql-8.0.11\bin 
mysqld --initialize-insecure 
# 初始化後再
# 運行 net start mysql 便可啓動 mysql。

登陸 MySQL

當 MySQL 服務已經運行時, 咱們能夠經過 MySQL 自帶的客戶端工具登陸到 MySQL 數據庫中, 首先打開命令提示符, 輸入如下格式的命名:

mysql -h 主機名 -u 用戶名 -p
  • 參數說明:
    • -h : 指定客戶端所要登陸的 MySQL 主機名, 登陸本機(localhost 或 127.0.0.1)該參數能夠省略;
    • -u : 登陸的用戶名;
    • -p : 告訴服務器將會使用一個密碼來登陸, 若是所要登陸的用戶名密碼爲空, 能夠忽略此選項。
  • 若是咱們要登陸本機的 MySQL 數據庫,只須要輸入如下命令便可:
mysql -u root -p
  • 按回車確認, 若是安裝正確且 MySQL 正在運行, 會獲得如下響應:
Enter password:

若密碼存在, 輸入密碼登陸, 不存在則直接按回車登陸。登陸成功後你將會看到 Welcome to the MySQL monitor... 的提示語。

而後命令提示符會一直以 mysq> 加一個閃爍的光標等待命令的輸入, 輸入 exit 或 quit 退出登陸。

 

啓動及關閉 MySQL 服務器

Windows 系統下

在 Windows 系統下,打開命令窗口(cmd),進入 MySQL 安裝目錄的 bin 目錄。

啓動:

cd c:/mysql/bin
mysqld --console

關閉:

cd c:/mysql/bin
mysqladmin -uroot shutdown

Linux 系統下

首先,咱們須要經過如下命令來檢查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 用戶設置

若是你須要添加 MySQL 用戶,你只須要在 mysql 數據庫中的 user 表添加新用戶便可。

如下爲添加用戶的的實例,用戶名爲guest,密碼爲guest123,並受權用戶可進行 SELECT, INSERT 和 UPDATE操做權限:

root@host# mysql -u root -p
Enter password:*******
mysql> use mysql;
Database changed

mysql> INSERT INTO user 
          (host, user, password, 
           select_priv, insert_priv, update_priv) 
           VALUES ('localhost', 'guest', 
           PASSWORD('guest123'), 'Y', 'Y', 'Y');
Query OK, 1 row affected (0.20 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 1 row affected (0.01 sec)

mysql> SELECT host, user, password FROM user WHERE user = 'guest';
+-----------+---------+------------------+
| host      | user    | password         |
+-----------+---------+------------------+
| localhost | guest | 6f8c114b58f2ce9e |
+-----------+---------+------------------+
1 row in set (0.00 sec)

在添加用戶時,請注意使用MySQL提供的 PASSWORD() 函數來對密碼進行加密。 你能夠在以上實例看到用戶密碼加密後爲: 6f8c114b58f2ce9e.

注意在 MySQL5.7 中 user 表的 password 已換成了authentication_string

注意password() 加密函數已經在 8.0.11 中移除了,可使用 MD5() 函數代替。

注意在注意須要執行 FLUSH PRIVILEGES 語句。 這個命令執行後會從新載入受權表。

若是你不使用該命令,你就沒法使用新建立的用戶來鏈接mysql服務器,除非你重啓mysql服務器。

你能夠在建立用戶時,爲用戶指定權限,在對應的權限列中,在插入語句中設置爲 'Y' 便可

Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
Grant_priv
References_priv
Index_priv
Alter_priv
用戶權限列表以下

另一種添加用戶的方法爲經過SQL的 GRANT 命令,如下命令會給指定數據庫TUTORIALS添加用戶 zara ,密碼爲 zara123 。

root@host# mysql -u root -p
Enter password:*******
mysql> use mysql;
Database changed

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    -> ON TUTORIALS.*
    -> TO 'zara'@'localhost'
    -> IDENTIFIED BY 'zara123';

以上命令會在mysql數據庫中的user表建立一條用戶信息記錄。

注意: MySQL 的SQL語句以分號 (;) 做爲結束標識。

/etc/my.cnf 文件配置

通常狀況下,你不須要修改該配置文件,該文件默認配置以下:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

在配置文件中,你能夠指定不一樣的錯誤日誌文件存放的目錄,通常你不須要改動這些配置。

 

管理MySQL的命令

如下列出了使用Mysql數據庫過程當中經常使用的命令:

  • USE 數據庫名 :
  • 選擇要操做的Mysql數據庫,使用該命令後全部Mysql命令都只針對該數據庫。
mysql> use RUNOOB;
Database changed
  • SHOW DATABASES:
  • 列出 MySQL 數據庫管理系統的數據庫列表。
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| RUNOOB             |
| cdcol              |
| mysql              |
| onethink           |
| performance_schema |
| phpmyadmin         |
| test               |
| wecenter           |
| wordpress          |
+--------------------+
10 rows in set (0.02 sec)
  • SHOW TABLES:
  • 顯示指定數據庫的全部表,使用該命令前須要使用 use 命令來選擇要操做的數據庫。
mysql> use RUNOOB;
Database changed
mysql> SHOW TABLES;
+------------------+
| Tables_in_runoob |
+------------------+
| employee_tbl     |
| runoob_tbl       |
| tcount_tbl       |
+------------------+
3 rows in set (0.00 sec)
  • SHOW COLUMNS FROM 數據表:
  • 顯示數據表的屬性,屬性類型,主鍵信息 ,是否爲 NULL,默認值等其餘信息。
mysql> SHOW COLUMNS FROM runoob_tbl;
+-----------------+--------------+------+-----+---------+-------+
| Field           | Type         | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| runoob_id       | int(11)      | NO   | PRI | NULL    |       |
| runoob_title    | varchar(255) | YES  |     | NULL    |       |
| runoob_author   | varchar(255) | YES  |     | NULL    |       |
| submission_date | date         | YES  |     | NULL    |       |
+-----------------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
  • SHOW INDEX FROM 數據表:
  • 顯示數據表的詳細索引信息,包括PRIMARY KEY(主鍵)。
mysql> SHOW INDEX FROM runoob_tbl;
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table      | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| runoob_tbl |          0 | PRIMARY  |            1 | runoob_id   | A         |           2 |     NULL | NULL   |      | BTREE      |         |               |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)
  • 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,查詢結果按列打印
  • PHP Mysqli函數格式以下:
mysqli_function(value,value,...);
  • 以上格式中 function部分描述了mysql函數的功能,如
mysqli_connect($connect);
mysqli_query($connect,"SQL 語句");
mysqli_fetch_array()
mysqli_close()
  • 如下實例展現了PHP調用mysql函數的語法:
# 實例 (MySQLi)
<?php $retval = mysqli_function(value, [value,...]);
if( !$retval ) 
{
     die ( "相關錯誤信息" ); 
}
# 其餘 MySQL 或 PHP 語句 
?>

 

MySQL 鏈接

使用mysql二進制方式鏈接

您可使用MySQL二進制方式進入到mysql命令提示符下來鏈接MySQL數據庫。

實例

  • 如下是從命令行中鏈接mysql服務器的簡單實例:
[root@host]# mysql -u root -p
Enter password:******
  • 在登陸成功後會出現 mysql> 命令提示窗口,你能夠在上面執行任何 SQL 語句。
  • 以上命令執行後,登陸成功輸出結果以下:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2854760 to server version: 5.0.9

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  • 在以上實例中,咱們使用了root用戶登陸到mysql服務器,固然你也可使用其餘mysql用戶登陸。
  • 若是用戶權限足夠,任何用戶均可以在mysql的命令提示窗口中進行SQL操做。
  • 退出 mysql> 命令提示窗口可使用 exit 命令,以下所示:
mysql> exit
Bye

使用 PHP 腳本鏈接 MySQL

  • PHP 提供了 mysqli_connect() 函數來鏈接數據庫。
  • 該函數有 6 個參數,在成功連接到 MySQL 後返回鏈接標識,失敗返回 FALSE 。

語法

mysqli_connect(host,username,password,dbname,port,socket);

參數說明:

參數                描述
host      # 可選。規定主機名或 IP 地址。
username  # 可選。規定 MySQL 用戶名。
password  # 可選。規定 MySQL 密碼。
dbname    # 可選。規定默認使用的數據庫。
port      # 可選。規定嘗試鏈接到 MySQL 服務器的端口號。
socket    # 可選。規定 socket 或要使用的已命名 pipe。        
  • 你可使用 PHP 的 mysqli_close() 函數來斷開與 MySQL 數據庫的連接。 
  • 該函數只有一個參數爲 mysqli_connect() 函數建立鏈接成功後返回的 MySQL 鏈接標識符。

語法

bool mysqli_close ( mysqli $link )
  • 本函數關閉指定的鏈接標識所關聯的到 MySQL 服務器的非持久鏈接。若是沒有指定 link_identifier則關閉上一個打開的鏈接。
  • 提示:一般不須要使用 mysqli_close(),由於已打開的非持久鏈接會在腳本執行完畢後自動關閉。

實例

你能夠嘗試如下實例來鏈接到你的 MySQL 服務器:

# 鏈接 MySQL
<?php $dbhost = 'localhost'; // mysql服務器主機地址 
$dbuser = 'root'; // mysql用戶名
$dbpass = '123456'; // mysql用戶名密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysqli_error());
}
echo '數據庫鏈接成功!';
mysqli_close($conn);
?>

 

MySQL 建立數據庫

  • 咱們能夠在登錄 MySQL 服務後,使用 create 命令建立數據庫,語法以下:
CREATE DATABASE 數據庫名;
  • 如下命令簡單的演示了建立數據庫的過程,數據名爲 RUNOOB:
[root@host]# mysql -u root -p   
Enter password:******  # 登陸後進入終端

mysql> create DATABASE RUNOOB;

使用 mysqladmin 建立數據庫

  • 使用普通用戶,你可能須要特定的權限來建立或者刪除 MySQL 數據庫。
  • 因此咱們這邊使用root用戶登陸,root用戶擁有最高權限,可使用 mysql mysqladmin 命令來建立數據庫。
  • 如下命令簡單的演示了建立數據庫的過程,數據名爲 RUNOOB:
[root@host]# mysqladmin -u root -p create RUNOOB
Enter password:******

以上命令執行成功後會建立 MySQL 數據庫 RUNOOB。

使用 PHP腳本 建立數據庫

  • PHP 使用 mysqli_query 函數來建立或者刪除 MySQL 數據庫。
  • 該函數有兩個參數,在執行成功時返回 TRUE,不然返回 FALSE。

語法

mysqli_query(connection,query,resultmode);
參數                 描述
connection    # 必需。規定要使用的 MySQL 鏈接。
query       # 必需,規定查詢字符串。
resultmode 
# 可選。一個常量。能夠是下列值中的任意一個: MYSQLI_USE_RESULT(若是須要檢索大量數據,請使用這個) MYSQLI_STORE_RESULT(默認)

實例

  • 如下實例演示了使用PHP來建立一個數據庫:

# 建立數據庫
<?php 
$dbhost = 'localhost'; // mysql服務器主機地址 
$dbuser = 'root'; // mysql用戶名 
$dbpass = '123456'; // mysql用戶名密碼 
$conn = mysqli_connect($dbhost, $dbuser, $dbpass); 
if(! $conn ) 
{
     die('鏈接錯誤: ' . mysqli_error($conn));
} 
echo '鏈接成功<br />'; 
$sql = 'CREATE DATABASE RUNOOB'; 
$retval = mysqli_query($conn,$sql ); 
if(! $retval ) 
{ 
    die('建立數據庫失敗: ' . mysqli_error($conn)); 
} 
echo "數據庫 RUNOOB 建立成功\n"; 
mysqli_close($conn); 
?>

執行成功後,返回以下結果:

若是數據庫已存在,執行後,返回以下結果:

 

MySQL 刪除數據庫

  • 使用普通用戶登錄 MySQL 服務器,你可能須要特定的權限來建立或者刪除 MySQL 數據庫,因此咱們這邊使用 root 用戶登陸,root 用戶擁有最高權限。
  • 在刪除數據庫過程當中,務必要十分謹慎,由於在執行刪除命令後,全部數據將會消失。

drop 命令刪除數據庫

drop 命令格式:

drop database <數據庫名>;

例如刪除名爲 RUNOOB 的數據庫:

mysql> drop database RUNOOB;

使用 mysqladmin 刪除數據庫

  • 你也可使用 mysql mysqladmin 命令在終端來執行刪除命令。
  • 如下實例刪除數據庫 RUNOOB(該數據庫在前一章節已建立):
[root@host]# mysqladmin -u root -p drop RUNOOB
Enter password:******
  • 執行以上刪除數據庫命令後,會出現一個提示框,來確認是否真的刪除數據庫:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'RUNOOB' database [y/N] y
Database "RUNOOB" dropped

使用PHP腳本刪除數據庫

  • PHP使用 mysqli_query 函數來建立或者刪除 MySQL 數據庫。
  • 該函數有兩個參數,在執行成功時返回 TRUE,不然返回 FALSE。

語法

mysqli_query(connection,query,resultmode);
參數                描述
connection     # 必需。規定要使用的 MySQL 鏈接。
query          # 必需,規定查詢字符串。
resultmode    # 可選。一個常量。能夠是下列值中的任意一個:

MYSQLI_USE_RESULT(若是須要檢索大量數據,請使用這個)
MYSQLI_STORE_RESULT(默認)

實例

  • 如下實例演示了使用PHP mysqli_query函數來刪除數據庫:
# 刪除數據庫
<?php $dbhost = 'localhost:3306'; // mysql服務器主機地址 
$dbuser = 'root'; // mysql用戶名 
$dbpass = '123456'; // mysql用戶名密碼 
$conn = mysqli_connect($dbhost, $dbuser, $dbpass); 
if(! $conn ) 
{ 
    die('鏈接失敗: ' . mysqli_error($conn)); 
}
echo '鏈接成功<br />'; 
$sql = 'DROP DATABASE RUNOOB'; 
$retval = mysqli_query( $conn, $sql ); 
if(! $retval ) 
{ 
    die('刪除數據庫失敗: ' . mysqli_error($conn)); 
} 
echo "數據庫 RUNOOB 刪除成功\n"; 
mysqli_close($conn); 
?>

執行成功後,數結果爲:

注意 在使用PHP腳本刪除數據庫時,不會出現確認是否刪除信息,會直接刪除指定數據庫,因此你在刪除數據庫時要特別當心。

 

MySQL 選擇數據庫

  • 在你鏈接到 MySQL 數據庫後,可能有多個能夠操做的數據庫,因此你須要選擇你要操做的數據庫。

從命令提示窗口中選擇MySQL數據庫

  • 在 mysql> 提示窗口中能夠很簡單的選擇特定的數據庫。你可使用SQL命令來選擇指定的數據庫。

實例

如下實例選取了數據庫 RUNOOB:

[root@host]# mysql -u root -p
Enter password:******
mysql> use RUNOOB;
Database changed
mysql>
  • 執行以上命令後,你就已經成功選擇了 RUNOOB 數據庫,在後續的操做中都會在 RUNOOB 數據庫中執行。
  • 注意:全部的數據庫名,表名,表字段都是區分大小寫的。因此你在使用SQL命令時須要輸入正確的名稱。

使用PHP腳本選擇MySQL數據庫

  • PHP 提供了函數 mysqli_select_db 來選取一個數據庫。函數在執行成功後返回 TRUE ,不然返回 FALSE 。

語法

mysqli_select_db(connection,dbname);
參數                   描述
connection # 必需。規定要使用的 MySQL 鏈接。
dbname     #  必需,規定要使用的默認數據庫。

實例

  • 如下實例展現瞭如何使用 mysqli_select_db 函數來選取一個數據庫:
# 選擇數據庫

<?php 
$dbhost = 'localhost:3306'; // mysql服務器主機地址 
$dbuser = 'root'; // mysql用戶名 
$dbpass = '123456'; // mysql用戶名密碼 
$conn = mysqli_connect($dbhost, $dbuser, $dbpass); 
if(! $conn ) 
{ 
    die('鏈接失敗: ' . mysqli_error($conn)); 
} 
echo '鏈接成功'; mysqli_select_db($conn, 'RUNOOB' ); mysqli_close($conn); 
?>

 

MySQL 數據類型

  • MySQL中定義數據字段的類型對你數據庫的優化是很是重要的。
  • MySQL支持多種類型,大體能夠分爲三類:數值、日期/時間和字符串(字符)類型。

數值類型

  • MySQL支持全部標準SQL數值數據類型。
  • 這些類型包括嚴格數值數據類型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數值數據類型(FLOAT、REAL和DOUBLE PRECISION)。
  • 關鍵字INT是INTEGER的同義詞,關鍵字DEC是DECIMAL的同義詞。
  • BIT數據類型保存位字段值,而且支持MyISAM、MEMORY、InnoDB和BDB表。
  • 做爲SQL標準的擴展,MySQL也支持整數類型TINYINT、MEDIUMINT和BIGINT。下面的表顯示了須要的每一個整數類型的存儲和範圍。
類型 大小 範圍(有符號) 範圍(無符號) 用途
TINYINT 1 字節 (-128,127) (0,255) 小整數值
SMALLINT 2 字節 (-32 768,32 767) (0,65 535) 大整數值
MEDIUMINT 3 字節 (-8 388 608,8 388 607) (0,16 777 215) 大整數值
INT或INTEGER 4 字節 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整數值
BIGINT 8 字節 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數值
FLOAT 4 字節 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 單精度
浮點數值
DOUBLE 8 字節 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 雙精度
浮點數值
DECIMAL 對DECIMAL(M,D) ,若是M>D,爲M+2不然爲D+2 依賴於M和D的值 依賴於M和D的值 小數值

日期和時間類型

  • 表示時間值的日期和時間類型爲DATETIME、DATE、TIMESTAMP、TIME和YEAR。
  • 每一個時間類型有一個有效值範圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。
  • TIMESTAMP類型有專有的自動更新特性,將在後面描述。
類型 大小
(字節)
範圍 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 時間值或持續時間
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和時間值
TIMESTAMP 4

1970-01-01 00:00:00/2038

結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMSS 混合日期和時間值,時間戳

字符串類型

  • 字符串類型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。該節描述了這些類型如何工做以及如何在查詢中使用這些類型。
類型 大小 用途
CHAR 0-255字節 定長字符串
VARCHAR 0-65535 字節 變長字符串
TINYBLOB 0-255字節 不超過 255 個字符的二進制字符串
TINYTEXT 0-255字節 短文本字符串
BLOB 0-65 535字節 二進制形式的長文本數據
TEXT 0-65 535字節 長文本數據
MEDIUMBLOB 0-16 777 215字節 二進制形式的中等長度文本數據
MEDIUMTEXT 0-16 777 215字節 中等長度文本數據
LONGBLOB 0-4 294 967 295字節 二進制形式的極大文本數據
LONGTEXT 0-4 294 967 295字節 極大文本數據
  • CHAR 和 VARCHAR 類型相似,但它們保存和檢索的方式不一樣。它們的最大長度和是否尾部空格被保留等方面也不一樣。在存儲或檢索過程當中不進行大小寫轉換。
  • BINARY 和 VARBINARY 相似於 CHAR 和 VARCHAR,不一樣的是它們包含二進制字符串而不要非二進制字符串。也就是說,它們包含字節字符串而不是字符字符串。這說明它們沒有字符集,而且排序和比較基於列值字節的數值值。
  • BLOB 是一個二進制大對象,能夠容納可變數量的數據。有 4 種 BLOB 類型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它們區別在於可容納存儲範圍不一樣。
  • 有 4 種 TEXT 類型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。對應的這 4 種 BLOB 類型,可存儲的最大長度不一樣,可根據實際狀況選擇。

                                                                     請聽下回說

以上內容是對 MySQL的數據庫簡單介紹和怎麼操做,後續還會對錶的操做進行更新,詳細請聽下回分解

相關文章
相關標籤/搜索