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ù)庫沪斟,該命令的作用:
- 如果數(shù)據(jù)庫不存在則創(chuàng)建静檬,存在則不創(chuàng)建帘营。
- 創(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>