在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ MySQL快速入門
MySQL+Node.js連接和操作
MySQL刪除表數(shù)據(jù)
http://www.yiibai.com/mysql/triggers.html
MySQL是什么?
MySQL插入數(shù)據(jù)
MySQL是什么?
MySQL全文搜索
MySQL數(shù)據(jù)庫服務(wù)器安裝
MySQL創(chuàng)建表
MySQL導(dǎo)入示例數(shù)據(jù)庫
MySQL教程
MySQL函數(shù)
MySQL管理
MySQL WHERE語句
MySQL存儲(chǔ)過程
MySQL技巧
MySQL觸發(fā)器
MySQL示例數(shù)據(jù)庫
MySQL重命名表
MySQL數(shù)據(jù)類型
MySQL創(chuàng)建與刪除數(shù)據(jù)庫
MySQL更新表數(shù)據(jù)
MySQL快速學(xué)習(xí)入門
MySQL安裝
MySQL快速入門
MySQL視圖
http://www.yiibai.com/mysql/mysqltips.html
MySQL修改表結(jié)構(gòu)
MySQL基礎(chǔ)教程
MySQL+Python連接和操作
http://www.yiibai.com/mysql/basic-mysql.html
MySQL查詢數(shù)據(jù)
http://www.yiibai.com/mysql/views.html
http://www.yiibai.com/mysql/full-text-search.html
下載本MySQL教程的示例數(shù)據(jù)庫(其中包函表和示例數(shù)據(jù))
http://www.yiibai.com/mysql/stored-procedure.html

MySQL快速入門

本教程主要是面向想學(xué)習(xí)MySQL的初學(xué)者,在通過本教程的學(xué)習(xí)后,能夠?qū)ySQL有一個(gè)初步的認(rèn)識(shí)并能比較熟練地操作MySQL數(shù)據(jù)庫。

1、MySQL安裝(Window7 安裝)

在任何版本的 Windows 默認(rèn)安裝是現(xiàn)在比以前要容易得多,MySQL巧妙地打包安裝程序。只需下載安裝包,隨地把它解壓縮,并運(yùn)行 mysql.exe. 下載地址:http://dev.mysql.com/downloads/ 頁面如下圖所示:

這里點(diǎn)擊:DOWNLOAD 鏈接,進(jìn)入一下頁面:

MySQL安裝

這里點(diǎn)擊:DOWNLOAD 鏈接,進(jìn)入一下頁面:

這里要求注冊(cè)網(wǎng)站帳號(hào),但可以直接通過。如上點(diǎn)擊 "No thanks, just start my download",繼續(xù)下一步:

提示下載保存文件,下載完成后(本教程中下載完成的文件是:mysql-5.6.25-winx64.zip)解壓文件放到目錄:D:\software 下,這是一個(gè)免安裝包,這里不需要安裝步驟。

在本教程中MySQL執(zhí)行文件在:D:\software\mysql-5.6.25-winx64\bin,  它通過從命令提示符第一次進(jìn)入測試MySQL服務(wù)器。轉(zhuǎn)到mysqld服務(wù)器的位置,這里進(jìn)入 D:\software\mysql-5.6.25-winx64\bin,然后輸入mysqld.exe,

注:或直接雙擊文件:mysqld.exe 啟動(dòng)MySQL服務(wù),如果不啟動(dòng)數(shù)據(jù)庫,以下的步驟無法操作;

    如果一切順利,會(huì)看到有關(guān)啟動(dòng)和InnoDB一些消息。如果沒有看到,可能有權(quán)限問題。請(qǐng)確保保存數(shù)據(jù)的目錄可以訪問任何根據(jù)用戶(可能是MySQL)運(yùn)行數(shù)據(jù)庫進(jìn)程。

    MySQL不會(huì)自己添加到開始菜單,并沒有特別漂亮的GUI的方式來停止服務(wù)器。 因此,如果傾向于通過雙擊可執(zhí)行 mysqld 啟動(dòng)服務(wù)器,應(yīng)該記住通過并用 mysqladmin,任務(wù)列表,任務(wù)管理器或其他 Windows 特定方式來執(zhí)行。

驗(yàn)證MySQL安裝

MySQL已經(jīng)被成功安裝后,基礎(chǔ)表已經(jīng)被初始化,并且服務(wù)器已經(jīng)啟動(dòng),可以通過一些簡單的測試驗(yàn)證。

使用中mysqladmin工具程序來獲取服務(wù)器狀態(tài)

使用 mysqladmin 來檢查服務(wù)器版本。在目錄 D:\software\mysql-5.6.25-winx64\bin

D:\software\mysql-5.6.25-winx64\bin> mysqladmin --version

看到結(jié)果如下:

mysqladmin  Ver 8.42 Distrib 5.6.25, for Win64 on x86_64

如果看到這樣的消息,則有可能是在安裝了一些問題,需要一些幫助解決它。

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

可以使用MySQL客戶端使用 mysql 命令連接到 MySQL 服務(wù)器。此時(shí),不需要給任何密碼,因?yàn)槟J(rèn)情況下它被設(shè)置為空。

所以,只需要使用下面的命令:

D:\software\mysql-5.6.25-winx64\bin> mysql

應(yīng)該出現(xiàn)一個(gè)mysql>提示符。 現(xiàn)在,已連接到MySQL服務(wù)器,可以在MySQL的命令>提示符下執(zhí)行所有SQL,如下:

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

安裝后的步驟:

MySQL附帶了一個(gè)空密碼有的root用戶。成功后安裝了數(shù)據(jù)庫和客戶端,需要進(jìn)行如下設(shè)置root密碼:

D:\software\mysql-5.6.25-winx64\bin> mysqladmin -u root password "123456";

注:

1. 關(guān)閉正在運(yùn)行的MySQL服務(wù)。 
2. 打開DOS窗口,轉(zhuǎn)到 D:\software\mysql-5.6.25-winx64\bin 目錄。 
3. 輸入mysqld --skip-grant-tables 回車。--skip-grant-tables 的意思是啟動(dòng)MySQL服務(wù)的時(shí)候跳過權(quán)限表認(rèn)證。 
4. 再開一個(gè)DOS窗口(因?yàn)閯偛拍莻€(gè)DOS窗口已經(jīng)不能動(dòng)了),轉(zhuǎn)到mysql\bin目錄。 
5. 輸入mysql回車,如果成功,將出現(xiàn)MySQL提示符 >。 
6. 連接權(quán)限數(shù)據(jù)庫: use mysql; 。 
6. 改密碼:update user set password=password("123456") where user="root";(別忘了最后加分號(hào)) 。 
7. 刷新權(quán)限(必須步驟):flush privileges; 
8. 退出 quit。 
9. 注銷系統(tǒng),再進(jìn)入,使用用戶名root和剛才設(shè)置的新密碼 123456 登錄。

現(xiàn)在使MySQL服務(wù)器的連接,那么使用下面的命令:

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p
Enter password: ******

2、運(yùn)行和關(guān)閉MySQL服務(wù)器

首先檢查MySQL服務(wù)器正在運(yùn)行與否。在資源管理器查看有沒有mysqld的進(jìn)程,如果MySQL正在運(yùn)行,那么會(huì)看到列出來的 mysqld 進(jìn)程。如果服務(wù)器沒有運(yùn)行,那么可以使用下面的命令來啟動(dòng)它:

D:\software\mysql-5.6.25-winx64\bin>mysqld
2015-07-30 22:59:20 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-07-30 22:59:20 0 [Note] mysqld (mysqld 5.6.25) starting as process 3028 ...

現(xiàn)在,如果想關(guān)閉已經(jīng)運(yùn)行的 MySQL 服務(wù)器,那么可以使用下面的命令做到這一點(diǎn):

D:\software\mysql-5.6.25-winx64\bin>mysqladmin -u root -p shutdown
Enter password: ******

3、設(shè)置MySQL用戶帳戶

要添加一個(gè)新用戶到 MySQL,只需要在數(shù)據(jù)庫中的新記錄添加到用戶表:mysql.user

下面是添加新用戶:yiibai 的例子,給定 SELECT, INSERT 和 UPDATE權(quán)限并使用密碼:yiibai123; SQL 查詢是:

D:\software\mysql-5.6.25-winx64\bin> 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', 'yiibai', 
           PASSWORD('123456'), '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 = 'yiibai';
+-----------+---------+------------------+
| host      | user    | password         |
+-----------+---------+------------------+
| localhost | yiibai | *59A8740AAC5DBCB2907F38891BE42957F699CB77 |
+-----------+---------+------------------+
1 row in set (0.00 sec)

當(dāng)要添加一個(gè)新用戶,記得要PASSWORD()函數(shù)加密MySQL新使用的密碼。正如在上面的例子中看到密碼為mypass,進(jìn)行加密后為:*59A8740AAC5DBCB2907F38891BE42957F699CB77

注意最后要使用 FLUSH PRIVILEGES 語句。 這告訴服務(wù)器重新加載授權(quán)表。如果不使用它,那么將無法使用新的用戶帳戶連接到MySQL服務(wù)器,至少在服務(wù)器重新啟動(dòng)后才可以。

也可以通過在用戶設(shè)置表以下幾列的值為'Y',指定給新用戶的權(quán)限,在執(zhí)行INSERT查詢后,也可以在以后使用UPDATE查詢更新它們:

  • 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

下面我們來創(chuàng)建一個(gè)數(shù)據(jù)庫:tutorials,使用以下命令:

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p password;
Enter password:
mysql>create database tutorials default character set utf8 collate utf8_general_ci;

添加用戶帳戶的另一種方式是通過使用GRANT SQL命令; 下面的例子將增加用戶zara 并使用密碼zara123 為特定數(shù)據(jù)庫:tutorials

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p password;
Enter password:
mysql> use mysql;
Database changed

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    -> ON tutorials.*
    -> TO 'yiibai'@'localhost'
    -> IDENTIFIED BY '123456';

這也將創(chuàng)建一條記錄在MySQL數(shù)據(jù)庫中的表: user

注意: MySQL不會(huì)終止命令,直到給一個(gè)分號(hào)(;)在SQL命令的結(jié)尾。

my.ini 文件配置

大多數(shù)情況下,不需要去修改這個(gè)文件。默認(rèn)情況下,它會(huì)具有以下項(xiàng):

[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

在這里,可以指定錯(cuò)誤日志為其它的目錄,否則不應(yīng)該更改此文件中的任何內(nèi)容。

管理 mysql 命令

這里是重要的MySQL命令,經(jīng)常在MySQL數(shù)據(jù)庫的管理或工作中使用:

  • USE Databasename : 用于選擇在MySQL工作區(qū)指定的數(shù)據(jù)庫。

  • SHOW DATABASES: 列出了MySQL數(shù)據(jù)庫管理系統(tǒng)中的所有可訪問的數(shù)據(jù)庫。

  • SHOW TABLES: 顯示已經(jīng)選擇數(shù)據(jù)庫中的表的命令。

  • SHOW COLUMNS FROM tablename: 顯示屬性,屬性類型,關(guān)鍵信息,NULL是否被允許,默認(rèn)值和其它的表信息。

  • SHOW INDEX FROM tablename: 提供所有指標(biāo)的詳細(xì)信息表,其中包括PRIMARY KEY.

  • SHOW TABLE STATUS LIKE tablename\G: 報(bào)告MySQL的數(shù)據(jù)庫管理系統(tǒng)的性能和統(tǒng)計(jì)數(shù)據(jù)的詳細(xì)信息。

4、使用MySQL二進(jìn)制連接MySQL

可以使用MySQL二進(jìn)制在命令提示符下建立MySQL數(shù)據(jù)庫的連接。

示例:

下面是一個(gè)簡單的例子,從命令提示符連接MySQL服務(wù)器:

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p
Enter password:

注意,這里密碼為空,直接回車就就進(jìn)入mysql>命令提示符下,能夠執(zhí)行任何SQL命令。以下是上述命令的結(jié)果:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may 
be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

在上面的例子中,我們使用 root 用戶,但可以使用任何其他用戶。任何用戶將能夠執(zhí)行所有的SQL操作(前提這個(gè)用戶有對(duì)應(yīng)執(zhí)行SQL權(quán)限)。

任何時(shí)候使用exit命令在mysql>提示符下,從MySQL數(shù)據(jù)庫斷開。

mysql> exit
Bye

5、MySQL創(chuàng)建數(shù)據(jù)庫

需要特殊權(quán)限創(chuàng)建或刪除一個(gè)MySQL數(shù)據(jù)庫。因此,假如有權(quán)使用 root 用戶,就可以用mysql中的mysqladmin來創(chuàng)建數(shù)據(jù)庫。

示例:

下面是一個(gè)簡單的例子,創(chuàng)建名為 tutorials 的數(shù)據(jù)庫。

D:\software\mysql-5.6.25-winx64\bin> mysqladmin -u root -p create tutorials
Enter password:<回車>

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p
Enter password:
mysql>create database yiibai_tutorials1;
mysql>create database yiibai_tutorials2;

這將創(chuàng)建一個(gè)MySQL數(shù)據(jù)庫:yiibai_tutorials1   和 yiibai_tutorials2,使用下面命令查看結(jié)果:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| yiibai_tutorials1  |
| yiibai_tutorials2  |
+--------------------+
6 rows in set (0.00 sec)

6、MySQL刪除數(shù)據(jù)庫

需要特殊權(quán)限來創(chuàng)建或刪除一個(gè)MySQL數(shù)據(jù)庫。因此,假如你有機(jī)會(huì)獲得root用戶來登錄,可以用mysql中mysqladmin二進(jìn)制來創(chuàng)建任何數(shù)據(jù)庫。

在刪除任何數(shù)據(jù)庫時(shí)要注意,因?yàn)閯h除數(shù)據(jù)庫時(shí)所有的數(shù)據(jù)在數(shù)據(jù)庫中。

下面是一個(gè)例子,用來刪除前面的章節(jié)中所創(chuàng)建的數(shù)據(jù)庫:

D:\software\mysql-5.6.25-winx64\bin> mysqladmin -u root -p drop yiibai_tutorials1
Enter password:******
這會(huì)給出一個(gè)警告,它會(huì)確認(rèn)你是否真的要?jiǎng)h除這個(gè)數(shù)據(jù)庫或不刪除。
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 'yiibai_tutorials1' database [y/N] y
Database "yiibai_tutorials1" dropped
或使用:
mysql> drop database yiibai_tutorials1;
Query OK, 0 rows affected (0.01 sec)
使用下面命令看刪除后,數(shù)據(jù)庫的列表情況:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| yiibai             |
+--------------------+
6 rows in set (0.00 sec)

連接到MySQL服務(wù)器后,則需要選擇特定的數(shù)據(jù)庫的來工作。這是因?yàn)榭赡苡卸鄠€(gè)數(shù)據(jù)庫可使用在MySQL服務(wù)器上。

7、從命令提示符選擇MySQL數(shù)據(jù)庫

這是非常簡單的,從MySQL>提示符下選擇一個(gè)特定的數(shù)據(jù)庫。可以使用SQL命令的 user 來選擇一個(gè)特定的數(shù)據(jù)庫。

示例:

下面是一個(gè)例子,選擇數(shù)據(jù)庫為 test :

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p
Enter password:
mysql> use test;
Database changed
mysql> 

現(xiàn)在,我們已經(jīng)選擇 test 數(shù)據(jù)庫,后續(xù)所有操作將在 test 數(shù)據(jù)庫上執(zhí)行。

注意: 所有的數(shù)據(jù)庫名,表名,表中的字段名稱是區(qū)分大小寫的。所以,我們必須使用適當(dāng)?shù)拿Q,在給定任何SQL命令。

8、MySQL表字段類型

正確地定義的表中的字段在數(shù)據(jù)庫的整體優(yōu)化是非常重要的。我們應(yīng)該只使用真正需要使用類型和字段的大小; 如果知道只使用2個(gè)字符,就不使用10個(gè)字符寬定義一個(gè)字段。這些類型的字段(或列),也被稱為數(shù)據(jù)類型,數(shù)據(jù)存儲(chǔ)這些字段之中。

MySQL使用許多不同的數(shù)據(jù)類型,總體上分為三類:數(shù)字,日期,時(shí)間和字符串類型。

數(shù)字?jǐn)?shù)據(jù)類型

MySQL使用所有標(biāo)準(zhǔn)的ANSI SQL數(shù)字?jǐn)?shù)據(jù)類型,所以,如果在學(xué)習(xí)MySQL之前,有接觸過其它不同的數(shù)據(jù)庫系統(tǒng),那么這些定義看起來很熟悉。下面列出了常見的數(shù)字?jǐn)?shù)據(jù)類型及其說明:

  • INT - 正常大小的整數(shù),可以帶符號(hào)。如果是有符號(hào)的,它允許的范圍是從-2147483648到2147483647。如果是無符號(hào),允許的范圍是從0到4294967295。 可以指定多達(dá)11位的寬度。

  • TINYINT - 一個(gè)非常小的整數(shù),可以帶符號(hào)。如果是有符號(hào),它允許的范圍是從-128到127。如果是無符號(hào),允許的范圍是從0到255,可以指定多達(dá)4位數(shù)的寬度。

  • SMALLINT - 一個(gè)小的整數(shù),可以帶符號(hào)。如果有符號(hào),允許范圍為-32768至32767。如果無符號(hào),允許的范圍是從0到65535,可以指定最多5位的寬度。

  • MEDIUMINT - 一個(gè)中等大小的整數(shù),可以帶符號(hào)。如果有符號(hào),允許范圍為-8388608至8388607。 如果無符號(hào),允許的范圍是從0到16777215,可以指定最多9位的寬度。

  • BIGINT - 一個(gè)大的整數(shù),可以帶符號(hào)。如果有符號(hào),允許范圍為-9223372036854775808到9223372036854775807。如果無符號(hào),允許的范圍是從0到18446744073709551615. 可以指定最多20位的寬度。

  • FLOAT(M,D) - 不能使用無符號(hào)的浮點(diǎn)數(shù)字??梢远x顯示長度(M)和小數(shù)位數(shù)(D)。這不是必需的,并且默認(rèn)為10,2。其中2是小數(shù)的位數(shù),10是數(shù)字(包括小數(shù))的總數(shù)。小數(shù)精度可以到24個(gè)浮點(diǎn)。

  • DOUBLE(M,D) - 不能使用無符號(hào)的雙精度浮點(diǎn)數(shù)??梢远x顯示長度(M)和小數(shù)位數(shù)(D)。 這不是必需的,默認(rèn)為16,4,其中4是小數(shù)的位數(shù)。小數(shù)精度可以達(dá)到53位的DOUBLE。 REAL是DOUBLE同義詞。

  • DECIMAL(M,D) - 非壓縮浮點(diǎn)數(shù)不能是無符號(hào)的。在解包小數(shù),每個(gè)小數(shù)對(duì)應(yīng)于一個(gè)字節(jié)。定義顯示長度(M)和小數(shù)(D)的數(shù)量是必需的。 NUMERIC是DECIMAL的同義詞。

日期和時(shí)間類型

MySQL的日期和時(shí)間數(shù)據(jù)類型包括:

  • DATE - 以YYYY-MM-DD格式的日期,在1000-01-01和9999-12-31之間。 例如,1973年12月30日將被存儲(chǔ)為1973-12-30。

  • DATETIME - 日期和時(shí)間組合以YYYY-MM-DD HH:MM:SS格式,在1000-01-01 00:00:00 到9999-12-31 23:59:59之間。例如,1973年12月30日下午3:30,會(huì)被存儲(chǔ)為1973-12-30 15:30:00。

  • TIMESTAMP - 1970年1月1日午夜之間的時(shí)間戳,到2037的某個(gè)時(shí)候。這看起來像前面的DATETIME格式,無需只是數(shù)字之間的連字符; 1973年12月30日下午3點(diǎn)30分將被存儲(chǔ)為19731230153000(YYYYMMDDHHMMSS)。

  • TIME - 存儲(chǔ)時(shí)間在HH:MM:SS格式。

  • YEAR(M) - 以2位或4位數(shù)字格式來存儲(chǔ)年份。如果長度指定為2(例如YEAR(2)),年份就可以為1970至2069(70?69)。如果長度指定為4,年份范圍是1901-2155,默認(rèn)長度為4。

字符串類型

雖然數(shù)字和日期類型比較有意思,但存儲(chǔ)大多數(shù)數(shù)據(jù)都可能是字符串格式。 下面列出了在MySQL中常見的字符串?dāng)?shù)據(jù)類型。

  • CHAR(M) - 固定長度的字符串是以長度為1到255之間個(gè)字符長度(例如:CHAR(5)),存儲(chǔ)右空格填充到指定的長度。 限定長度不是必需的,它會(huì)默認(rèn)為1。

  • VARCHAR(M) - 可變長度的字符串是以長度為1到255之間字符數(shù)(高版本的MySQL超過255); 例如: VARCHAR(25). 創(chuàng)建VARCHAR類型字段時(shí),必須定義長度。

  • BLOB or TEXT - 字段的最大長度是65535個(gè)字符。 BLOB是“二進(jìn)制大對(duì)象”,并用來存儲(chǔ)大的二進(jìn)制數(shù)據(jù),如圖像或其他類型的文件。定義為TEXT文本字段還持有大量的數(shù)據(jù); 兩者之間的區(qū)別是,排序和比較上存儲(chǔ)的數(shù)據(jù),BLOB大小寫敏感,而TEXT字段不區(qū)分大小寫。不用指定BLOB或TEXT的長度。

  • TINYBLOB 或 TINYTEXT - BLOB或TEXT列用255個(gè)字符的最大長度。不指定TINYBLOB或TINYTEXT的長度。

  • MEDIUMBLOB or MEDIUMTEXT - BLOB或TEXT列具有16777215字符的最大長度。不指定MEDIUMBLOB或MEDIUMTEXT的長度。

  • LONGBLOB 或 LONGTEXT -  BLOB或TEXT列具有4294967295字符的最大長度。不指定LONGBLOB或LONGTEXT的長度。

  • ENUM - 枚舉,這是一個(gè)奇特的術(shù)語列表。當(dāng)定義一個(gè)ENUM,要?jiǎng)?chuàng)建它的值的列表,這些是必須用于選擇的項(xiàng)(也可以是NULL)。例如,如果想要字段包含“A”或“B”或“C”,那么可以定義為ENUM為 ENUM(“A”,“B”,“C”)也只有這些值(或NULL)才能用來填充這個(gè)字段。

8、MySQL創(chuàng)建表

表的創(chuàng)建命令需要:

  • 表的名稱

  • 字段名稱

  • 定義每個(gè)字段(類型、長度等)

語法

下面是通用的SQL語法用來創(chuàng)建MySQL表:

CREATE TABLE table_name (column_name column_type);

現(xiàn)在,我們將在 test 數(shù)據(jù)庫中創(chuàng)建以下表。

create table tutorials_tbl(
   tutorial_id INT NOT NULL AUTO_INCREMENT,
   tutorial_title VARCHAR(100) NOT NULL,
   tutorial_author VARCHAR(40) NOT NULL,
   submission_date DATE,
   PRIMARY KEY ( tutorial_id )
);

在這里,一些數(shù)據(jù)項(xiàng)需要解釋:

  • 字段使用NOT NULL屬性,是因?yàn)槲覀儾幌M@個(gè)字段的值為NULL。 因此,如果用戶將嘗試創(chuàng)建具有NULL值的記錄,那么MySQL會(huì)產(chǎn)生錯(cuò)誤。

  • 字段的AUTO_INCREMENT屬性告訴MySQL自動(dòng)增加id字段下一個(gè)可用編號(hào)。

  • 關(guān)鍵字PRIMARY KEY用于定義此列作為主鍵??梢允褂枚禾?hào)分隔多個(gè)列來定義主鍵。

通過命令提示符來創(chuàng)建表

在mysql>提示符下,創(chuàng)建一個(gè)MySQL表這是很容易的。使用 SQL 命令 CREATE TABLE 來創(chuàng)建表。

下面是一個(gè)例子,創(chuàng)建一個(gè)表: tutorials_tbl: 

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p
Enter password:
mysql> use tutorials;
Database changed
mysql> CREATE TABLE tutorials_tbl(
   -> tutorial_id INT NOT NULL AUTO_INCREMENT,
   -> tutorial_title VARCHAR(100) NOT NULL,
   -> tutorial_author VARCHAR(40) NOT NULL,
   -> submission_date DATE,
   -> PRIMARY KEY ( tutorial_id )
   -> );
Query OK, 0 rows affected (0.16 sec)
mysql>

注: MySQL不會(huì)終止命令,直到給一個(gè)分號(hào)(;)表示SQL命令結(jié)束。

查看創(chuàng)建表的結(jié)果:

9、MySQL刪除表

刪除現(xiàn)有MySQL表這是很容易的,但必須非常小心,當(dāng)刪除表后丟失的數(shù)據(jù)將不能恢復(fù)。

語法

這是用來刪除MySQL表的通用SQL語法:

DROP TABLE table_name ;

從命令行提示符刪除表

這需要只是在 MySQL>提示符下執(zhí)行DROP TABLE SQL命令。

下面是一個(gè)例子,它將刪除表:tutorials_tbl:

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

10、MySQL插入數(shù)據(jù)

想要將數(shù)據(jù)插入到MySQL表,需要使用SQL INSERT INTO命令。 可以通過用mysql>提示符或通過使用像PHP腳本將任何數(shù)據(jù)插入到MySQL表。

語法

這里是INSERT INTO命令將數(shù)據(jù)插入到MySQL表的通用SQL語法:

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

要插入字符串類型數(shù)據(jù),則需要雙或單引號(hào)保留到所有的值,例如:- "value".

這將使用SQL 的INSERT INTO命令將數(shù)據(jù)插入到MySQL表:tutorials_tbl

示例

下面的例子將創(chuàng)建3條記錄到表:tutorials_tbl

root@host# mysql -u root -p password;
Enter password:
mysql> use use;
Database changed
mysql> INSERT INTO tutorials_tbl (tutorial_title, tutorial_author, submission_date) VALUES ("Learn PHP", "Paul", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl
     ->(tutorial_title, tutorial_author, submission_date)
     ->VALUES
     ->("Learn MySQL", "Saya", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl
     ->(tutorial_title, tutorial_author, submission_date)
     ->VALUES
     ->("JAVA Tutorial", "yiibai", '2015-05-06');
Query OK, 1 row affected (0.01 sec)
mysql>

注意: 請(qǐng)注意,所有的箭頭符號(hào)(->)不是SQL命令的一部分; 它表示一個(gè)新行,是由MySQL提示符按下回車鍵沒有給出一個(gè)分號(hào),命令自動(dòng)創(chuàng)建在行尾。

在上面的例子中,未提供 tutorial_id 對(duì)應(yīng)的值,因?yàn)樵趧?chuàng)建表時(shí)它會(huì)自動(dòng)創(chuàng)建,這個(gè)字段我們給了AUTO_INCREMENT選項(xiàng)。因此MySQL會(huì)自動(dòng)分配插入ID的值。 這里, NOW() 是MySQL函數(shù),返回當(dāng)前的日期和時(shí)間。

11、MySQL SELECT查詢

SQL SELECT命令用于從MySQL數(shù)據(jù)庫獲取數(shù)據(jù)。可以在MySQL>提示符使用這個(gè)命令,以及任何像PHP的腳本和語言等。

語法

下面是通用的SQL的SELECT命令語法,從MySQL表獲取數(shù)據(jù):

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • 可以使用分隔的一個(gè)或多個(gè)逗號(hào)從多個(gè)表,以及使用WHERE子句包括各種條件,但WHERE子句是SELECT命令的可選部分

  • 可以在一個(gè)SELECT命令指定讀取一個(gè)或多個(gè)字段

  • 可以指定星號(hào)(*)代替選擇的字段。在這種情況下,將返回所有字段

  • 可以指定任意的條件在 WHERE 子句后面

  • 可以使用OFFSET指定一個(gè)偏移量,SELECT從那里開始返回記錄。默認(rèn)情況下 offset 的值是 0

  • 可以使用LIMIT屬性限制返回的數(shù)量

這將使用SQL SELECT命令從MySQL 表 tutorials_tbl 讀取數(shù)據(jù)

示例

下面的例子將從 tutorials_tbl 表返回所有記錄:

root@host# mysql -u root -p password;
Enter password:
mysql> use test;
Database changed
mysql> SELECT * from tutorials_tbl;
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | Paul            | 2015-07-17      |
|           2 | Learn MySQL    | Saya            | 2015-07-17      |
|           3 | JAVA Tutorial  | yiibai          | 2007-05-06      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.25 sec)
mysql>

12、MySQL WHERE子句

我們已經(jīng)看到使用SQL SELECT命令從MySQL表中獲取數(shù)據(jù)。我們可以用 WHERE子句來篩選出結(jié)果的條件子句。使用WHERE子句,我們可以指定一個(gè)選擇標(biāo)準(zhǔn),從表中選擇所需的記錄。

語法

下面是SELECT命令使用WHERE子句來從MySQL表數(shù)據(jù)的通用SQL語法:

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • 可以使用逗號(hào)分隔一個(gè)或多個(gè)表,以及WHERE子句包括各種條件,但WHERE子句只是SELECT命令的可選部分

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

  • 可以指定一個(gè)以上的條件在使用AND或OR運(yùn)算符中

  • WHERE子句可以用DELETE 或 UPDATE的SQL命令一起,也可以指定一個(gè)條件使用。

WHERE子句就像是if一個(gè)條件在編程語言中, 此子句是用來比較給定值的字段值在MySQL表是否可用。如果從外部給定值等于在MySQL表可用字段值,那么它返回該行。

這里是運(yùn)算符的列表,它可以在WHERE子句中使用。

假設(shè)字段A=10,字段B=20,則:

操作符 描述 示例
= 檢查兩個(gè)操作數(shù)的值是否相等,如果是,則條件變?yōu)檎妗?/td> (A = B) 不為 true.
!= 檢查兩個(gè)操作數(shù)的值是否相等,如果值不相等,則條件變?yōu)檎妗?/td> (A != B) 為 true.
> 檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是,則條件為真。 (A > B) 不為 true.
< 檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是,則條件為真。 (A < B) 為 true.
>= 檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是,則條件為真。 (A >= B) 不為 true.
<= 檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是,則條件變?yōu)檎妗?/td> (A <= B) 為 true.

當(dāng)想要從一個(gè)表中提取所選行,尤其是當(dāng)使用MySQL聯(lián)接的WHERE子句是非常有用的。 聯(lián)接在另一章討論。

搜索使用主鍵進(jìn)行快速搜索記錄是常見的做法。

如果給定的條件不匹配表任何記錄,那么查詢將不會(huì)返回任何行。

使用SQL SELECT命令以及WHERE子句,從MySQL表tutorials_tbl選擇獲取數(shù)據(jù)。

示例

下面的例子將從tutorials_tbl表中作者的名字是yiibai所有記錄返回:

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p password;
Enter password:
mysql> use test;
Database changed
mysql> SELECT * from tutorials_tbl WHERE tutorial_author='yiibai';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           3 | JAVA Tutorial  | yiibai          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)

mysql>

除非執(zhí)行字符串LIKE比較,比較是不區(qū)分大小寫??梢允褂肂INARY關(guān)鍵字使搜索區(qū)分大小寫如下:

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p password;
Enter password:
mysql> use test;
Database changed
mysql> SELECT * from tutorials_tbl \
          WHERE BINARY tutorial_author='yiibai';
Empty set (0.02 sec)

mysql>

13、MySQL UPDATE查詢

可能會(huì)有一個(gè)需要,要在一個(gè)MySQL表中的現(xiàn)有數(shù)據(jù)進(jìn)行修改。可以通過使用SQL UPDATE命令來執(zhí)行??梢孕薷娜魏蜯ySQL表中任何字段的值。

語法

這里是UPDATE命令修改數(shù)據(jù)到MySQL表的通用SQL語法:

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
  • 完全可以更新一個(gè)或多個(gè)字段。

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

  • 可以一次更新一個(gè)表中的值。

當(dāng)想更新表中選定行,WHERE子句是非常有用的。

使用SQL UPDATE命令以及WHERE子句來更新選定數(shù)據(jù)到MySQL表tutorials_tbl。

示例

下面的例子將更新 tutorial_id 為3 的紀(jì)錄中的 tutorial_title 字段。

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p password;
Enter password:
mysql> use test;
Database changed
mysql> UPDATE tutorials_tbl 
    -> SET tutorial_title='Learning JAVA' 
    -> WHERE tutorial_id=3;
Query OK, 1 row affected (0.04 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

14、MySQL DELETE查詢

如果想從任何MySQL表中刪除紀(jì)錄,那么可以使用SQL命令:DELETE FROM. 可以使用這個(gè)命令在MySQL>提示符,以及PHP等腳本的語言。

語法

這里是DELETE命令從一個(gè)MySQL表中刪除數(shù)據(jù)的通用的SQL語法:

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

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

  • 可以一次刪除一個(gè)表中的所有記錄。

當(dāng)要?jiǎng)h除一個(gè)表中選擇特定行,WHERE子句是非常有用的。

使用SQL DELETE命令,在WHERE子句中選定 MySQL 表 tutorials_tbl 的數(shù)據(jù)將被刪除。

示例

下面的例子將刪除 tutorial_tbl表中 tutorial_id為3的一條記錄。

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p password;
Enter password:
mysql> use test;
Database changed
mysql> DELETE FROM tutorials_tbl WHERE tutorial_id=3;
Query OK, 1 row affected (0.23 sec)

mysql>

15、MySQL LIKE子句

我們已經(jīng)看到使用SQL SELECT命令從MySQL表中獲取數(shù)據(jù)。也可以使用WHERE子句來選擇所需的記錄條件子句。

WHERE等于子句號(hào)(=)用來精確匹配工作,如類似 “tutorial_author='yiibai'”。 但也有可能,我們要求過濾掉所有的結(jié)果,tutorial_author應(yīng)包含的名稱:"jay"。這可以通過使用SQL LIKE子句以及WHERE子句來處理。

如果SQL LIKE子句連同 % 字符使用,那么它會(huì)像在UNIX上的元字符(*),列出了所有的文件或目錄在命令提示符下。

如果沒有字符%,LIKE子句是非常相似的等號(hào)在WHERE子句中使用的效果。

語法