MySQL 創(chuàng)建數(shù)據(jù)庫及簡單增刪改查

MySQL 創(chuàng)建數(shù)據(jù)庫及簡單增刪改查

我們可以在登陸 MySQL 服務(wù)后,使用 create 命令創(chuàng)建數(shù)據(jù)庫爷辙,語法如下:

CREATE DATABASE 數(shù)據(jù)庫名;

登入:

Enter password: ***********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.22-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, 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 current input statement.

mysql>mysql> CREATE DATABASE IF NOT EXISTS CODES DEFAULT CHARSET utf8 COLLATE utf8_general_ci;//創(chuàng)建數(shù)據(jù)庫

輸出結(jié)果:

mysql> CREATE DATABASE IF NOT EXISTS CODES DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql>

創(chuàng)建數(shù)據(jù)庫沪斟,該命令的作用:

    1. 如果數(shù)據(jù)庫不存在則創(chuàng)建静檬,存在則不創(chuàng)建帘营。
    1. 創(chuàng)建CODES數(shù)據(jù)庫,并設(shè)定編碼集為utf8

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

使用普通用戶登陸 MySQL 服務(wù)器翩活,你可能需要特定的權(quán)限來創(chuàng)建或者刪除 MySQL 數(shù)據(jù)庫阱洪,所以我們這邊使用 root 用戶登錄,root 用戶擁有最高權(quán)限菠镇。

在刪除數(shù)據(jù)庫過程中冗荸,務(wù)必要十分謹(jǐn)慎,因?yàn)樵趫?zhí)行刪除命令后利耍,所有數(shù)據(jù)將會(huì)消失蚌本。

drop 命令刪除數(shù)據(jù)庫

drop 命令格式:

drop database <數(shù)據(jù)庫名>;

例如刪除名為 RUNOOB 的數(shù)據(jù)庫:

mysql> drop database CODES;

執(zhí)行結(jié)果:

mysql> drop database CODES;
Query OK, 0 rows affected (0.01 sec)

mysql>

MySQL 選擇數(shù)據(jù)庫

在你連接到 MySQL 數(shù)據(jù)庫后,可能有多個(gè)可以操作的數(shù)據(jù)庫堂竟,所以你需要選擇你要操作的數(shù)據(jù)庫。


從命令提示窗口中選擇MySQL數(shù)據(jù)庫

在 mysql> 提示窗口中可以很簡單的選擇特定的數(shù)據(jù)庫玻佩。你可以使用SQL命令來選擇指定的數(shù)據(jù)庫出嘹。

實(shí)例

以下實(shí)例選取了數(shù)據(jù)庫 CODES:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| codes              |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| tuberonion         |
| world              |
+--------------------+
8 rows in set (0.00 sec)

mysql> USE CODES;
Database changed
mysql>

執(zhí)行以上命令后,你就已經(jīng)成功選擇了 RUNOOB 數(shù)據(jù)庫咬崔,在后續(xù)的操作中都會(huì)在 RUNOOB 數(shù)據(jù)庫中執(zhí)行税稼。

注意:所有的數(shù)據(jù)庫名烦秩,表名,表字段都是區(qū)分大小寫的郎仆。所以你在使用SQL命令時(shí)需要輸入正確的名稱只祠。

MySQL 數(shù)據(jù)類型

MySQL中定義數(shù)據(jù)字段的類型對你數(shù)據(jù)庫的優(yōu)化是非常重要的胧瓜。

MySQL支持多種類型恶座,大致可以分為三類:數(shù)值键畴、日期/時(shí)間和字符串(字符)類型莺丑。


數(shù)值類型

MySQL支持所有標(biāo)準(zhǔn)SQL數(shù)值數(shù)據(jù)類型孔轴。

這些類型包括嚴(yán)格數(shù)值數(shù)據(jù)類型(INTEGER寿冕、SMALLINT庭瑰、DECIMAL和NUMERIC)扎谎,以及近似數(shù)值數(shù)據(jù)類型(FLOAT桂躏、REAL和DOUBLE PRECISION)钻趋。

關(guān)鍵字INT是INTEGER的同義詞,關(guān)鍵字DEC是DECIMAL的同義詞剂习。

BIT數(shù)據(jù)類型保存位字段值蛮位,并且支持MyISAM、MEMORY鳞绕、InnoDB和BDB表失仁。

作為SQL標(biāo)準(zhǔn)的擴(kuò)展,MySQL也支持整數(shù)類型TINYINT猾昆、MEDIUMINT和BIGINT陶因。下面的表顯示了需要的每個(gè)整數(shù)類型的存儲(chǔ)和范圍。

類型 大小 范圍(有符號) 范圍(無符號) 用途
TINYINT 1 字節(jié) (-128垂蜗,127) (0楷扬,255) 小整數(shù)值
SMALLINT 2 字節(jié) (-32 768,32 767) (0贴见,65 535) 大整數(shù)值
MEDIUMINT 3 字節(jié) (-8 388 608烘苹,8 388 607) (0,16 777 215) 大整數(shù)值
INT或INTEGER 4 字節(jié) (-2 147 483 648片部,2 147 483 647) (0镣衡,4 294 967 295) 大整數(shù)值
BIGINT 8 字節(jié) (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0档悠,18 446 744 073 709 551 615) 極大整數(shù)值
FLOAT 4 字節(jié) (-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) 單精度 浮點(diǎn)數(shù)值
DOUBLE 8 字節(jié) (-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) 雙精度 浮點(diǎn)數(shù)值
DECIMAL 對DECIMAL(M,D) 授滓,如果M>D琳水,為M+2否則為D+2 依賴于M和D的值 依賴于M和D的值 小數(shù)值

日期和時(shí)間類型

表示時(shí)間值的日期和時(shí)間類型為DATETIME、DATE褒墨、TIMESTAMP炫刷、TIME和YEAR。

每個(gè)時(shí)間類型有一個(gè)有效值范圍和一個(gè)"零"值郁妈,當(dāng)指定不合法的MySQL不能表示的值時(shí)使用"零"值浑玛。

TIMESTAMP類型有專有的自動(dòng)更新特性,將在后面描述噩咪。

類型 大小 (字節(jié)) 范圍 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 時(shí)間值或持續(xù)時(shí)間
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 混合日期和時(shí)間值
TIMESTAMP 4 1970-01-01 00:00:00/2038 結(jié)束時(shí)間是第 2147483647 秒顾彰,北京時(shí)間 2038-1-19 11:14:07,格林尼治時(shí)間 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和時(shí)間值胃碾,時(shí)間戳

字符串類型

字符串類型指CHAR涨享、VARCHAR、BINARY仆百、VARBINARY厕隧、BLOB、TEXT俄周、ENUM和SET吁讨。該節(jié)描述了這些類型如何工作以及如何在查詢中使用這些類型。

類型 大小 用途
CHAR 0-255字節(jié) 定長字符串
VARCHAR 0-65535 字節(jié) 變長字符串
TINYBLOB 0-255字節(jié) 不超過 255 個(gè)字符的二進(jìn)制字符串
TINYTEXT 0-255字節(jié) 短文本字符串
BLOB 0-65 535字節(jié) 二進(jìn)制形式的長文本數(shù)據(jù)
TEXT 0-65 535字節(jié) 長文本數(shù)據(jù)
MEDIUMBLOB 0-16 777 215字節(jié) 二進(jìn)制形式的中等長度文本數(shù)據(jù)
MEDIUMTEXT 0-16 777 215字節(jié) 中等長度文本數(shù)據(jù)
LONGBLOB 0-4 294 967 295字節(jié) 二進(jìn)制形式的極大文本數(shù)據(jù)
LONGTEXT 0-4 294 967 295字節(jié) 極大文本數(shù)據(jù)

CHAR 和 VARCHAR 類型類似峦朗,但它們保存和檢索的方式不同建丧。它們的最大長度和是否尾部空格被保留等方面也不同。在存儲(chǔ)或檢索過程中不進(jìn)行大小寫轉(zhuǎn)換波势。

BINARY 和 VARBINARY 類似于 CHAR 和 VARCHAR翎朱,不同的是它們包含二進(jìn)制字符串而不要非二進(jìn)制字符串。也就是說尺铣,它們包含字節(jié)字符串而不是字符字符串拴曲。這說明它們沒有字符集,并且排序和比較基于列值字節(jié)的數(shù)值值凛忿。

BLOB 是一個(gè)二進(jìn)制大對象澈灼,可以容納可變數(shù)量的數(shù)據(jù)。有 4 種 BLOB 類型:TINYBLOB侄非、BLOB蕉汪、MEDIUMBLOB 和 LONGBLOB。它們區(qū)別在于可容納存儲(chǔ)范圍不同逞怨。

有 4 種 TEXT 類型:TINYTEXT者疤、TEXT、MEDIUMTEXT 和 LONGTEXT叠赦。對應(yīng)的這 4 種 BLOB 類型驹马,可存儲(chǔ)的最大長度不同,可根據(jù)實(shí)際情況選擇除秀。

MySQL關(guān)鍵字 含義
NULL 數(shù)據(jù)列可包含NULL值
NOT NULL 數(shù)據(jù)列不允許包含NULL值
DEFAULT 默認(rèn)值
PRIMARY KEY 主鍵
AUTO_INCREMENT 自動(dòng)遞增糯累,適用于整數(shù)類型
UNSIGNED 無符號
CHARACTER SET name 指定一個(gè)字符集

MySQL 5.0 以上的版本:

1、一個(gè)漢字占多少長度與編碼有關(guān):

UTF-8:一個(gè)漢字=3個(gè)字節(jié)

GBK:一個(gè)漢字=2個(gè)字節(jié)

2册踩、varchar(n) 表示 n 個(gè)字符泳姐,無論漢字和英文,Mysql 都能存入 n 個(gè)字符暂吉,僅是實(shí)際字節(jié)長度有所區(qū)別

3胖秒、MySQL 檢查長度,可用 SQL 語言來查看:

select LENGTH(fieldname) from tablename

例如慕的,我查詢我自己數(shù)據(jù)庫中(此數(shù)據(jù)庫阎肝,我并未給出):

mysql> SELECT * FROM ht_app;
+----------------------+---------------------+---------------------+-------------+----------------------------------+--------------------------------------------------------+----------------+---------------------------------------------------+------------------+---------------------------------------------------+
| app_id               | gmt_create          | gmt_modified        | app_version | app_md5                          | app_url                                                | app_picture_id | app_picture_url                                   | login_picture_id | login_picture_url                                 |
+----------------------+---------------------+---------------------+-------------+----------------------------------+--------------------------------------------------------+----------------+---------------------------------------------------+------------------+---------------------------------------------------+
| com.hengtong.henchat | 2018-06-14 13:53:50 | 2018-06-28 13:53:54 | 1.0.1       | 29F85D405C47544B69CDC8948878BB5E | http://oo94hcyew.bkt.clouddn.com/app-version-1.0.1.apk | 20180622.png   | G:\git\TransactionHT\src\main\resources\pictures\ | 20180621.png     | G:\git\TransactionHT\src\main\resources\pictures\ |
+----------------------+---------------------+---------------------+-------------+----------------------------------+--------------------------------------------------------+----------------+---------------------------------------------------+------------------+---------------------------------------------------+
1 row in set (0.01 sec)

mysql> SELECT LENGTH(app_id) FROM ht_app;
+----------------+
| LENGTH(app_id) |
+----------------+
|             20 |
+----------------+
1 row in set (0.00 sec)

mysql>

MySQL 創(chuàng)建數(shù)據(jù)表

創(chuàng)建MySQL數(shù)據(jù)表需要以下信息:

  • 表名
  • 表字段名
  • 定義每個(gè)表字段

語法

以下為創(chuàng)建MySQL數(shù)據(jù)表的SQL通用語法:

CREATE TABLE table_name (column_name column_type);

以下例子中我們將在 CODES 數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表runoob_tbl:

CREATE TABLE IF NOT EXISTS `codes_user`(
   `user_id` INT UNSIGNED AUTO_INCREMENT,
   `user_title` VARCHAR(100) NOT NULL,
   `user_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `user_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

實(shí)例解析:

  • 如果你不想字段為 NULL 可以設(shè)置字段的屬性為 NOT NULL, 在操作數(shù)據(jù)庫時(shí)如果輸入該字段的數(shù)據(jù)為NULL 肮街,就會(huì)報(bào)錯(cuò)风题。

  • AUTO_INCREMENT定義列為自增的屬性,一般用于主鍵嫉父,數(shù)值會(huì)自動(dòng)加1沛硅。

  • PRIMARY KEY關(guān)鍵字用于定義列為主鍵。 您可以使用多列來定義主鍵熔号,列間以逗號分隔稽鞭。

  • ENGINE 設(shè)置存儲(chǔ)引擎,CHARSET 設(shè)置編碼引镊。


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

通過 mysql> 命令窗口可以很簡單的創(chuàng)建MySQL數(shù)據(jù)表朦蕴。你可以使用 SQL 語句 CREATE TABLE 來創(chuàng)建數(shù)據(jù)表。

實(shí)例

以下為創(chuàng)建數(shù)據(jù)表 codes_user實(shí)例:

mysql> USE CODES;
Database changed
mysql> SHOW TABLES;
Empty set (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS `codes_user`(
    ->    `user_id` INT UNSIGNED AUTO_INCREMENT,
    ->    `user_title` VARCHAR(100) NOT NULL,
    ->    `user_author` VARCHAR(40) NOT NULL,
    ->    `submission_date` DATE,
    ->    PRIMARY KEY ( `user_id` )
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.03 sec)

mysql> SHOW TABLES;
+-----------------+
| Tables_in_codes |
+-----------------+
| codes_user      |
+-----------------+
1 row in set (0.00 sec)

mysql>

注意:MySQL命令終止符為分號 (;) 弟头。

MySQL 刪除數(shù)據(jù)表

MySQL中刪除數(shù)據(jù)表是非常容易操作的吩抓, 但是你再進(jìn)行刪除表操作時(shí)要非常小心,因?yàn)閳?zhí)行刪除命令后所有數(shù)據(jù)都會(huì)消失赴恨。

語法

以下為刪除MySQL數(shù)據(jù)表的通用語法:

DROP TABLE table_name ;

在命令提示窗口中刪除數(shù)據(jù)表

在mysql>命令提示窗口中刪除數(shù)據(jù)表SQL語句為 DROP TABLE

實(shí)例

以下實(shí)例刪除了數(shù)據(jù)表codes_user:


Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> DROP TABLE codes_user
Query OK, 0 rows affected (0.0 sec)
mysql>

刪除表內(nèi)數(shù)據(jù)疹娶,用 delete。格式為:

delete from 表名 where 刪除條件;

實(shí)例:刪除學(xué)生表內(nèi)姓名為張三的記錄伦连。

delete from  student where  T_name = "張三";

清除表內(nèi)數(shù)據(jù)雨饺,保存表結(jié)構(gòu)钳垮,用 truncate。格式為:

truncate table 表名;

實(shí)例:清除學(xué)生表內(nèi)的所有數(shù)據(jù)额港。

truncate  table  student;

刪除表用 drop饺窿,就是啥都沒了。格式為:

drop  table  表名;

實(shí)例:刪除學(xué)生表移斩。

drop table student;

1肚医、當(dāng)你不再需要該表時(shí), 用 drop;

2向瓷、當(dāng)你仍要保留該表肠套,但要?jiǎng)h除所有記錄時(shí), 用 truncate;

3猖任、當(dāng)你要?jiǎng)h除部分記錄時(shí)你稚, 用 delete。

MySQL 刪除表的幾種情況:

1朱躺、drop table table_name : 刪除表全部數(shù)據(jù)和表結(jié)構(gòu)入宦,立刻釋放磁盤空間,不管是 Innodb 和 MyISAM;

實(shí)例室琢,刪除學(xué)生表:

drop table student;

2乾闰、truncate table table_name : 刪除表全部數(shù)據(jù),保留表結(jié)構(gòu)盈滴,立刻釋放磁盤空間 涯肩,不管是 Innodb 和 MyISAM;

實(shí)例,刪除學(xué)生表:

truncate table student;

3巢钓、delete from table_name : 刪除表全部數(shù)據(jù)病苗,表結(jié)構(gòu)不變,對于 MyISAM 會(huì)立刻釋放磁盤空間症汹,InnoDB 不會(huì)釋放磁盤空間;

實(shí)例硫朦,刪除學(xué)生表:

delete from student;

4、delete from table_name where xxx : 帶條件的刪除背镇,表結(jié)構(gòu)不變咬展,不管是 innodb 還是 MyISAM 都不會(huì)釋放磁盤空間;

實(shí)例,刪除學(xué)生表中姓名為 "張三" 的數(shù)據(jù):

delete from student where T_name = "張三";

5瞒斩、delete 操作以后破婆,使用 optimize table table_name 會(huì)立刻釋放磁盤空間,不管是 innodb 還是 myisam;

實(shí)例胸囱,刪除學(xué)生表中姓名為 "張三" 的數(shù)據(jù):

delete from student where T_name = "張三";

實(shí)例祷舀,釋放學(xué)生表的表空間:

optimize table student;

6、delete from 表以后雖然未釋放磁盤空間,但是下次插入數(shù)據(jù)的時(shí)候裳扯,仍然可以使用這部分空間抛丽。

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

MySQL 表中使用 INSERT INTO SQL語句來插入數(shù)據(jù)。

你可以通過 mysql> 命令提示窗口中向數(shù)據(jù)表中插入數(shù)據(jù)饰豺,或者通過PHP腳本來插入數(shù)據(jù)铺纽。

語法

以下為向MySQL數(shù)據(jù)表插入數(shù)據(jù)通用的 INSERT INTO SQL語法:

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

如果數(shù)據(jù)是字符型,必須使用單引號或者雙引號哟忍,如:"value"。


通過命令提示窗口插入數(shù)據(jù)

以下我們將使用 SQL INSERT INTO 語句向 MySQL 數(shù)據(jù)表 codes_user插入數(shù)據(jù)

實(shí)例

以下實(shí)例中我們將向 codes_user表插入三條數(shù)據(jù):

mysql> INSERT INTO codes_user  (user_title, user_author, submission_date) VALUES ("學(xué)習(xí) 雷鋒", "好榜樣", NOW());
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> INSERT INTO codes_user  (user_title, user_author, submission_date) VALUES ("學(xué)習(xí) 劉胡蘭", "好榜樣", NOW());
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> INSERT INTO codes_user  (user_title, user_author, submission_date) VALUES ("JAVA JDBC", "好棒羊", '2014-08-06');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT *FROM codes_user;
+---------+------------------+-------------+-----------------+
| user_id | user_title       | user_author | submission_date |
+---------+------------------+-------------+-----------------+
|       1 | 學(xué)習(xí) 雷鋒        | 好榜樣      | 2019-01-11      |
|       2 | 學(xué)習(xí) 劉胡蘭      | 好榜樣      | 2019-01-11      |
|       3 | JAVA JDBC        | 好棒羊      | 2014-08-06      |
+---------+------------------+-------------+-----------------+
3 rows in set (0.00 sec)

mysql>

注意: 使用箭頭標(biāo)記 -> 不是 SQL 語句的一部分陷寝,它僅僅表示一個(gè)新行锅很,如果一條SQL語句太長,我們可以通過回車鍵來創(chuàng)建一個(gè)新行來編寫 SQL 語句凤跑,SQL 語句的命令結(jié)束符為分號 ;爆安。

在以上實(shí)例中,我們并沒有提供 user_id的數(shù)據(jù)仔引,因?yàn)樵撟侄挝覀冊趧?chuàng)建表的時(shí)候已經(jīng)設(shè)置它為 AUTO_INCREMENT(自動(dòng)增加) 屬性扔仓。 所以,該字段會(huì)自動(dòng)遞增而不需要我們?nèi)ピO(shè)置咖耘。實(shí)例中 NOW() 是一個(gè) MySQL 函數(shù)翘簇,該函數(shù)返回日期和時(shí)間。

INSERT 插入多條數(shù)據(jù)

INSERT INTO table_name  (field1, field2,...fieldN)  VALUES  (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;

MySQL 查詢數(shù)據(jù)

MySQL 數(shù)據(jù)庫使用SQL SELECT語句來查詢數(shù)據(jù)儿倒。

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

語法

以下為在MySQL數(shù)據(jù)庫中查詢數(shù)據(jù)通用的 SELECT 語法:

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
  • 查詢語句中你可以使用一個(gè)或者多個(gè)表夫否,表之間使用逗號(,)分割彻犁,并使用WHERE語句來設(shè)定查詢條件。
  • SELECT 命令可以讀取一條或者多條記錄凰慈。
  • 你可以使用星號(*)來代替其他字段汞幢,SELECT語句會(huì)返回表的所有字段數(shù)據(jù)
  • 你可以使用 WHERE 語句來包含任何條件。
  • 你可以使用 LIMIT 屬性來設(shè)定返回的記錄數(shù)微谓。
  • 你可以通過OFFSET指定SELECT語句開始查詢的數(shù)據(jù)偏移量森篷。默認(rèn)情況下偏移量為0。

通過命令提示符獲取數(shù)據(jù)

以下實(shí)例我們將通過 SQL SELECT 命令來獲取 MySQL 數(shù)據(jù)表 runoob_tbl 的數(shù)據(jù):

實(shí)例

以下實(shí)例將返回?cái)?shù)據(jù)表 codes_user的部分記錄:

讀取數(shù)據(jù)表:

mysql> SELECT user_author,user_title,submission_date  FROM codes_user LIMIT 1 OFFSET 1;
+-------------+------------------+-----------------+
| user_author | user_title       | submission_date |
+-------------+------------------+-----------------+
| 好榜樣      | 學(xué)習(xí) 劉胡蘭      | 2019-01-11      |
+-------------+------------------+-----------------+
1 row in set (0.00 sec)

mysql>

MySQL WHERE 子句

我們知道從 MySQL 表中使用 SQL SELECT 語句來讀取數(shù)據(jù)豺型。

如需有條件地從表中選取數(shù)據(jù)疾宏,可將 WHERE 子句添加到 SELECT 語句中。

語法

以下是 SQL SELECT 語句使用 WHERE 子句從數(shù)據(jù)表中讀取數(shù)據(jù)的通用語法:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • 查詢語句中你可以使用一個(gè)或者多個(gè)表触创,表之間使用逗號, 分割坎藐,并使用WHERE語句來設(shè)定查詢條件。
  • 你可以在 WHERE 子句中指定任何條件。
  • 你可以使用 AND 或者 OR 指定一個(gè)或多個(gè)條件岩馍。
  • WHERE 子句也可以運(yùn)用于 SQL 的 DELETE 或者 UPDATE 命令碉咆。
  • WHERE 子句類似于程序語言中的 if 條件,根據(jù) MySQL 表中的字段值來讀取指定的數(shù)據(jù)蛀恩。

以下為操作符列表疫铜,可用于 WHERE 子句中。

下表中實(shí)例假定 A 為 10, B 為 20

操作符 描述 實(shí)例
= 等號双谆,檢測兩個(gè)值是否相等壳咕,如果相等返回true (A = B) 返回false。
<>, != 不等于顽馋,檢測兩個(gè)值是否相等谓厘,如果不相等返回true (A != B) 返回 true。
> 大于號寸谜,檢測左邊的值是否大于右邊的值, 如果左邊的值大于右邊的值返回true (A > B) 返回false竟稳。
< 小于號,檢測左邊的值是否小于右邊的值, 如果左邊的值小于右邊的值返回true (A < B) 返回 true熊痴。
>= 大于等于號他爸,檢測左邊的值是否大于或等于右邊的值, 如果左邊的值大于或等于右邊的值返回true (A >= B) 返回false。
<= 小于等于號果善,檢測左邊的值是否小于于或等于右邊的值, 如果左邊的值小于或等于右邊的值返回true (A <= B) 返回 true诊笤。

如果我們想在 MySQL 數(shù)據(jù)表中讀取指定的數(shù)據(jù),WHERE 子句是非常有用的巾陕。

使用主鍵來作為 WHERE 子句的條件查詢是非痴祷欤快速的。

如果給定的條件在表中沒有任何匹配的記錄惜论,那么查詢不會(huì)返回任何數(shù)據(jù)许赃。


從命令提示符中讀取數(shù)據(jù)

我們將在SQL SELECT語句使用WHERE子句來讀取MySQL數(shù)據(jù)表 runoob_tbl 中的數(shù)據(jù):

實(shí)例

以下實(shí)例將讀取 runoob_tbl 表中 runoob_author 字段值為 Sanjay 的所有記錄:

SQL SELECT WHERE 子句

mysql> SELECT user_title,user_author ,submission_date  FROM codes_user WHERE user_author ='好榜樣' LIMIT 1 OFFSET 1;
+------------------+-------------+-----------------+
| user_title       | user_author | submission_date |
+------------------+-------------+-----------------+
| 學(xué)習(xí) 劉胡蘭      | 好榜樣      | 2019-01-11      |
+------------------+-------------+-----------------+
1 row in set (0.00 sec)

mysql>

MySQL 的 WHERE 子句的字符串比較是不區(qū)分大小寫的。 你可以使用 BINARY 關(guān)鍵字來設(shè)定 WHERE 子句的字符串比較是區(qū)分大小寫的馆类。

如下實(shí)例:

BINARY 關(guān)鍵字

mysql> SELECT user_title,user_author ,submission_date  FROM codes_user WHERE  BINARY  user_author ='好榜樣' LIMIT 1 OFFSET 1;
+------------------+-------------+-----------------+
| user_title       | user_author | submission_date |
+------------------+-------------+-----------------+
| 學(xué)習(xí) 劉胡蘭      | 好榜樣      | 2019-01-11      |
+------------------+-------------+-----------------+
1 row in set (0.00 sec)

mysql>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末混聊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乾巧,更是在濱河造成了極大的恐慌句喜,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沟于,死亡現(xiàn)場離奇詭異咳胃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)旷太,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門展懈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來销睁,“玉大人,你說我怎么就攤上這事存崖《臣牵” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵来惧,是天一觀的道長冗栗。 經(jīng)常有香客問我,道長供搀,這世上最難降的妖魔是什么隅居? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮葛虐,結(jié)果婚禮上胎源,老公的妹妹穿的比我還像新娘。我一直安慰自己挡闰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布掰盘。 她就那樣靜靜地躺著摄悯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪愧捕。 梳的紋絲不亂的頭發(fā)上奢驯,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音次绘,去河邊找鬼瘪阁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛邮偎,可吹牛的內(nèi)容都是我干的管跺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼禾进,長吁一口氣:“原來是場噩夢啊……” “哼豁跑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泻云,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤艇拍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后宠纯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卸夕,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年婆瓜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了快集。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖碍讨,靈堂內(nèi)的尸體忽然破棺而出治力,到底是詐尸還是另有隱情,我是刑警寧澤勃黍,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布宵统,位于F島的核電站,受9級特大地震影響覆获,放射性物質(zhì)發(fā)生泄漏马澈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一弄息、第九天 我趴在偏房一處隱蔽的房頂上張望痊班。 院中可真熱鬧,春花似錦摹量、人聲如沸涤伐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凝果。三九已至,卻和暖如春睦尽,著一層夾襖步出監(jiān)牢的瞬間器净,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工当凡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留山害,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓沿量,卻偏偏與公主長得像浪慌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子朴则,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容