MySQL咋用啊(數據庫基礎操作大全)

數據庫

也叫做數據庫管理系統(Database Management System),簡稱DBMS。是由數據庫及其管理軟件組成的系統,用來集中,結構化的管理數據。

數據庫常見名詞:
數據庫(Database)
數據庫管理系統(Database Management System)[簡稱:DBMS]
數據庫管理員(Database Administrator)[簡稱DBA]
數據庫開發人員(Database Developer)[簡稱DBD]

和在linux中一樣,數據庫中也是通過一條條命令來對數據進行操作的。linux中有命令,而MySQL數據庫是通過SQL語句來對其進行操作的,你想玩MySQL,就得先搞明白這是個啥語句。

對於數據庫和數據表,你可以把其當成是一本書和其中的章節。一個數據庫是一本書,數據庫中的每一個數據表都是一個章節,一個章節中可以有若干內容。

SQL語句

結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統。

SQL從功能上可以分爲3部分:數據定義、數據操縱和數據控制。

結構化查詢語言包含6個部分

1、數據查詢語言(DQL):其語句,也稱爲“數據檢索語句”,用以從表中獲得數據,確定數據怎樣在應用程序給出,使用SELECT來實現。

2、數據操作語言(DML):其語句包括動詞INSERT、UPDATE和DELETE。它們分別用於記錄的添加、修改和刪除。

3、事務控制語言(TCL):它的語句能確保被DML語句影響的表的所有行及時得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存點)命令、ROLLBACK(回滾)命令。

4、數據控制語言(DCL):它的語句通過GRANT或REVOKE實現權限控制,確定單個用戶和用戶組對數據庫對象的訪問。

5、數據定義語言(DDL):其語句包括動詞CREATE,ALTER和DROP。在數據庫中創建新表或修改、刪除表(CREAT TABLE 或 DROP TABLE);爲表加入索引等。

6、指針控制語言(CCL):用於對一個或多個表單獨行的操作。

登錄MySQL

注:數據庫版本8.0.13

對於剛安裝完成的MySQL,默認是空密碼登錄,直接輸入mysql即可進入到數據庫中。

mysql

對於這種直接可以登錄的,都設置了相關的路徑優化,要麼把mysql安裝目錄/bin/*在PATH路徑中創建一個軟連接,要麼將其寫入到了/etc/profile文件中的PATH路徑。

對於沒有優化路徑的數據庫,只能通過絕對路徑的方式進入

/usr/local/mysql/bin/mysql

直接exit退出數據庫

mysql> exit
Bye

設置數據庫管理員密碼

爲了安全考慮,我們需要給root設置一個登錄數據庫密碼(root就是數據庫管理員啊),當然對於練習來說,沒有太大的必要,不過命令還是要知道的。

mysqladmin -u root password "test.com"
#命令關鍵字 -u 指定用戶 password "密碼內容"
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

其中有一個警告,說的是在命令行中顯示明文密碼不安全,這個不用管,密碼已經設置成功了。

再次登錄mysql數據庫測試

mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

數據庫拒絕root訪問,在設置完密碼後,空密碼就無法登錄了。

接下來輸入密碼登錄數據庫中
不安全登錄方式:

mysql -u root -ptest.com 
mysql: [Warning] Using a password on the command line interface can be insecure.
#每次在命令行中輸入密碼都會輸出不安全警告

相對安全登錄方式:

mysql -u root -p
Enter password: 

默認存在數據庫說明

在初始化數據庫後,有四個默認存在的數據庫

mysql> show databases;	#查看數據庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

information_schema:數據庫中的信息數據庫,其中保存着關於MySQL服務器所維護的所有其他數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權 限等。

mysql:存儲數據庫中用戶信息,權限信息及mysql需要使用的控制和管理信息。

performance_schema:主要用於收集數據庫服務器性能參數。

sys:sys庫裏面的表、視圖、函數、存儲過程可以使我們更方便、快捷的瞭解到MySQL的一些信息,比如哪些語句使用了臨時表、哪個SQL沒有使用索引、哪個schema中有冗餘索引、查找使用全表掃描的SQL、查找用戶佔用的IO等,sys庫裏這些視圖中的數據,大多是從performance_schema裏面獲得的。目標是把performance_schema的複雜度降低,讓我們更快的瞭解DB的運行情況。

數據庫基礎操作

DDL語句操作

DDL是數據定義語言的縮寫,簡單來說,就是對數據庫內部的對象進行創建,刪除,修改等操作的語言。它和DML語句的最大區別是DML只是對錶內部數據操作,而不涉及表的定義,結構的修改,更不會涉及其他對象。DDL語句更多地由數據庫管理員(DBA)使用,開發人員一般很少使用。

注:數據庫中默認不嚴格區分大小寫

查看幫助

這是功能簡直是健忘者的福音,和linux中使用命令 --help一樣,在linux中也有這個語法幫助。

語法:help 命令

就拿show來說,看看命令可以跟的參數及語法。

mysql> help show;
Name: 'SHOW'
Description:
SHOW has many forms that provide information about databases, tables,
columns, or status information about the server. This section describes
those following:

SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW CHARACTER SET [like_or_where]
SHOW COLLATION [like_or_where]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
SHOW CREATE DATABASE db_name
SHOW CREATE EVENT event_name
SHOW CREATE FUNCTION func_name
SHOW CREATE PROCEDURE proc_name
SHOW CREATE TABLE tbl_name
SHOW CREATE TRIGGER trigger_name
SHOW CREATE VIEW view_name
SHOW DATABASES [like_or_where]
SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW [STORAGE] ENGINES
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW EVENTS
SHOW FUNCTION CODE func_name
SHOW FUNCTION STATUS [like_or_where]
SHOW GRANTS FOR user
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW MASTER STATUS
SHOW OPEN TABLES [FROM db_name] [like_or_where]
SHOW PLUGINS
SHOW PROCEDURE CODE proc_name
SHOW PROCEDURE STATUS [like_or_where]
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]
SHOW PROFILES
SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW SLAVE HOSTS
SHOW SLAVE STATUS [FOR CHANNEL channel]
SHOW [GLOBAL | SESSION] STATUS [like_or_where]
SHOW TABLE STATUS [FROM db_name] [like_or_where]
SHOW [FULL] TABLES [FROM db_name] [like_or_where]
SHOW TRIGGERS [FROM db_name] [like_or_where]
SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
SHOW WARNINGS [LIMIT [offset,] row_count]

like_or_where:
    LIKE 'pattern'
  | WHERE expr

If the syntax for a given SHOW statement includes a LIKE 'pattern'
part, 'pattern' is a string that can contain the SQL % and _ wildcard
characters. The pattern is useful for restricting statement output to
matching values.

Several SHOW statements also accept a WHERE clause that provides more
flexibility in specifying which rows to display. See
http://dev.mysql.com/doc/refman/8.0/en/extended-show.html.

URL: http://dev.mysql.com/doc/refman/8.0/en/show.html

查看數據庫

使用show databases即可查看數據庫,後面的;是書寫格式,

mysql> show databases;

查看數據庫的幾種方式

正常查看方式:show databases;

以行的方式查看:show databases \G

也可以在shell環境中查看: mysql -e ‘show databases’ -uroot -ptest.com

-e可以輸入sql語句,使用’'擴住,-u輸入用戶名,-p輸入密碼

創建數據庫

語法:create database 數據庫名稱;

創建個庫試試看

mysql> create database test;
Query OK, 0 rows affected (0.07 sec)

出現Query OK字樣就表示執行成功,若出現ERROR字樣,你的語句就出現了錯誤。

在對數據庫命名的時候,名稱中不能有特殊符號,例如:!@#¥%……等等,_例外。也不能以純數字命名,而對字母沒有限制。

如果非要帶有特殊字符或純數字的話,可以使用``將其括住,那樣就創建成功了。

mysql> create database `@_@`;

使用特殊符號創建的庫,查看數據庫存放目錄,我所創建的@_@變成了什麼。

 ls  /data/mysql/data/ 		#內容只列舉了包含創建庫目錄的一些內容
@0040_@0040    binlog.index     ib_logfile0         private_key.pem

@0040_@0040就是我創建的@_@,和在數據庫中的具體名稱不匹配,不建議使用特殊符號。

切換數據庫

語法:use 數據庫名稱;

mysql> use test;

對數據庫的所有操作,都是在進入到數據庫進行的,默認沒有進入任何一個庫中,只能對數據庫進行創建,進入數據庫後,就能添加表,添加數據等數據了。

刪除數據庫

語法:drop database 數據庫名稱;

drop database test;

對於數據的刪除操作需要謹慎使用,以免對數據造成“不可逆”損失,雖說大多數情況下都可以通過二進制文件恢復或通過備份恢復,但誤刪除的恢復還是很麻煩不是,刪除慎用啊!!!

數據表基礎操作

在說明如何創建表之前,要先來了解一下字段類型,類型對於表的創建必不可少,定義了可以存儲什麼類型的數據。

數據類型

數據類型是數據的一種屬性,其可以決定數據的存儲格式,有效範圍和相應的限制。mysql的數據類型包括整數類型,浮點數類型,日期和時間類型,字符串類型和二進制類型。

浮點數型與整數類型和爲一類,字符串類型與二進制類型和爲一類。所以大致可以分爲三類:數值、日期/時間和字符串(字符)類型。

數值類型

類型 大小 範圍 用途
TINYINT 1 字節 (-128,127) 小整數值
SMALLINT 2 字節 (-32 768,32 767) 大整數值
MEDIUMINT 3 字節 (-8 388 608,8 388 607) 大整數值
INT或INTEGER 4 字節 (-2 147 483 648,2 147 483 647) 大整數值
BIGINT 8 字節 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) 極大整數值
FLOAT 4 字節 (-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) 單精度,浮點數值
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) 雙精度,浮點數值

日期和時間類型

類型 大小 範圍 格式 用途
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 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字節 極大文本數據

創建數據表

語法:create table 表名(字符名 類型,字段名 類型,字段名 類型);

在創建表的時候,需要進入到庫中,否則將會報錯,以下是創建一個名爲test_table的表

mysql> use test;	
Database changed
mysql> create table test_table(id int(20),name char(20),age int);

對於字段的數據類型,要根據實際情況來自行選擇,拿我創建的age字段來說,其數據類型爲int,一個人的年齡最多也就130歲,而我給的數據類型範圍極大,這就顯得類型極不合適,而且其大小爲4字節,數據越多,越浪費存儲資源。建議將age改爲TINYINT類型即可,最大爲127,大小爲1字節。當然,自己的寶貝疙瘩,想怎麼定義怎麼定義。

也可爲表指定存儲引擎和字符集在插入語法後面添加即可。

例如:指定存儲引擎爲InnoDB,字符集爲utf8

mysql> create table test2(id int(10),name char(20),age int) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected, 1 warning (0.10 sec)

其實默認存儲引擎和字符集就是InnoDB和utf8,使用show create table 表名即可查看。

查看數據表

使用使用show tables即可查看庫中的表

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test_table     |
+----------------+
1 row in set (0.00 sec)

使用desc 表名來查看錶的結構

mysql> desc test_table;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(20)  | YES  |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

使用show create table 表名可查看創建表執行了哪些命令

mysql> show create table test_table;

修改數據表

修改表名

語法:alter table 表名 rename 新表名;
將創建的test_table表改爲hahaha

mysql> alter table test_table rename hahaha;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| hahaha         |
+----------------+
1 row in set (0.00 sec)

修改表的字段類型

語法:alter table 表名 modify 要修改的字段名要修改的類型;

先看看原有表中的字段類型

mysql> desc hahaha;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(20)  | YES  |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

修改字段name的char(20)字段類型爲char(10)

mysql> alter table hahaha modify name char(10);
Query OK, 0 rows affected (0.46 sec)
Records: 0  Duplicates: 0  Warnings: 0

再次查看錶的結構

mysql> desc hahaha;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(20)  | YES  |     | NULL    |       |
| name  | char(10) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

修改表中的字段類型和字段名稱

語法:alter table 表名 change 原字段名 新字段名 新字段類型;

將字段id名稱改爲uid,新字段類型改爲int(11)

mysql> alter table hahaha change id uid int(11);
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

再次查看數據表結構

mysql> desc hahaha;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| uid   | int(11)  | YES  |     | NULL    |       |
| name  | char(10) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

CHANGE 和MODIFY的區別:

CHANGE 對列進行重命名和更改列的類型,需給定舊的列名稱和新的列名稱、當前的類型。 MODIFY 可以改變列的類型,此時不需要重命名(不需給定新的列名稱)。

在表中添加字段

語法:alter table 表名 add字段名 字段類型;

在hahaha表中添加sex字段

mysql> alter table hahaha add sex enum('M','W');

這個enum字段類型是枚舉,用於限定值的取值範圍,只能在值中選擇一個,是男不是女,是女不是男。

查看錶結構

mysql> desc hahaha;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| uid   | int(11)       | YES  |     | NULL    |       |
| name  | char(10)      | YES  |     | NULL    |       |
| age   | int(11)       | YES  |     | NULL    |       |
| sex   | enum('M','W') | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

sex字段就添加進去了,其類型爲enum。

在表中第一列添加字段

mysql> alter table hahaha add id int(10) first;
Query OK, 0 rows affected (0.19 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc hahaha;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(10)       | YES  |     | NULL    |       |
| uid   | int(11)       | YES  |     | NULL    |       |
| name  | char(10)      | YES  |     | NULL    |       |
| age   | int(11)       | YES  |     | NULL    |       |
| sex   | enum('M','W') | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

在指定字段位置後面添加字段

語法:alter table 表名 add 字段 字段類型 after 指定字段位置;

先看看現在的表結構

mysql> desc hahaha;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(10)       | YES  |     | NULL    |       |
| uid   | int(11)       | YES  |     | NULL    |       |
| name  | char(10)      | YES  |     | NULL    |       |
| age   | int(11)       | YES  |     | NULL    |       |
| sex   | enum('M','W') | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

sex後面添加一個test字段,字段類型爲char(10)

mysql> alter table hahaha add test char(10) after sex;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

再次查看錶結構

mysql> desc hahaha;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(10)       | YES  |     | NULL    |       |
| uid   | int(11)       | YES  |     | NULL    |       |
| name  | char(10)      | YES  |     | NULL    |       |
| age   | int(11)       | YES  |     | NULL    |       |
| sex   | enum('M','W') | YES  |     | NULL    |       |
| test  | char(10)      | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

刪除數據表

刪除表中字段

語法:alter table 表名 drop 字段名;

將表hahaha中的test字段刪除

mysql> alter table hahaha drop test;
Query OK, 0 rows affected (0.10 sec)
Records: 0  Duplicates: 0  Warnings: 0

刪除數據表

格式:drop table 表名;

把我們創建的hahaha表刪除

mysql> drop table hahaha;
Query OK, 0 rows affected (0.36 sec)

查看數據庫中的表

mysql> show tables;
Empty set (0.00 sec)

本來就一個表,刪除了之後什麼都沒得了,還是那句話,刪除操作慎用。

if exists和if no exists

這是個if語句,功能如其名稱,如果存在則執行什麼操作,如果不存在則執行什麼操作,可以避免創建或刪除數據庫時產生的報錯。

語法:創建或刪除語句 if [not] exists 數據庫名稱

如果hahaha數據庫不存在則創建

mysql> create database if not exists hahaha;
Query OK, 1 row affected (0.14 sec)

如果hahaha數據庫存在則刪除

mysql> drop database if exists hahaha;
Query OK, 0 rows affected (0.11 sec)

表中數據操作

DML語句操作

DML操作是指對數據庫中表記錄的操作,主要包括表記錄的插入(insert),更新(update),刪除(delete)和查詢(select),是開發人員日常使用最爲頻繁的操作

插入記錄

語法:insert into 表名 values(字段值1,字段值2,字段值3);

重新創建一個表,用於說明插入字段

mysql> create table staff(id int(20),name char(40),age int);

在其中添加一條記錄

insert into staff values(1,'張三',21);

字符串類型字段在插入的時候需要加上引號,要不然就會輸出錯誤。

也可同時插入多條記錄

語法:insert into 表名 values(記錄1),(記錄2)

mysql> insert into staff values(2,'李四',22),(3,'王五',23);

或者分開插入表記錄

語法:insert into 表名(字段1,字段2)values(值1,值2)

mysql> insert into staff (id,name,age)values(4,'趙六',24);

查詢記錄

DQL語句

語法:select * from 表名稱
注:*號表示表中所有的字段,可將其換成指定字段

有兩種查詢方式,1)是進入數據庫中查詢

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 張三   |   21 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 趙六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

2)在其他庫中查詢表,在剛進入數據庫管理系統中,默認是沒有進入任何庫中的。直接使用select * from staff會產生報錯。

mysql> select * from staff;
ERROR 1046 (3D000): No database selected

這個情況,將表名部分修改一下就OK了。

修改後語法:select * from 庫名稱.表名稱
我們使用那種語法試試看

mysql> select * from test.staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 張三   |   21 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 趙六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

這樣就OK了。

剛纔單獨說明了*是查看所有字段,可以單獨查詢字段記錄。

mysql> select id from test.staff;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
+------+
4 rows in set (0.00 sec)

除非有特殊需求,通常情況下都是查看全部記錄,當然,輸入字段也可實現效果,只不過比較麻煩。

mysql> select id,name,age from test.staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 張三   |   21 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 趙六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

使用select還可以查看一些別的數據,例如:登錄用戶,系統時間等等。

例如:查看時間,用戶和數據庫

mysql> select now(),user(),database();
+---------------------+----------------+------------+
| now()               | user()         | database() |
+---------------------+----------------+------------+
| 2020-04-18 16:05:54 | root@localhost | test       |
+---------------------+----------------+------------+
1 row in set (0.00 sec)

更新記錄

語法:update 表名 set 新字段=新值 where 原字段=原值

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 張三   |   21 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 趙六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

結合實例你就理解如何使用了,例如將id爲1記錄的age更新爲31。

mysql> update staff set age=31 where id=1;

update:語句關鍵字
staff:表名
set:語句關鍵字
age=31:更新字段
where:條件
id=1:原字段

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 張三   |   31 |
|    2 | 李四   |   22 |
|    3 | 王五   |   23 |
|    4 | 趙六   |   24 |
+------+--------+------+
4 rows in set (0.00 sec)

再次查看,字段已經更新了,如果不指定條件,則會對所有記錄的字段進行更改。

例如:將所有記錄的age字段改爲18

mysql> update staff set age=18;
Query OK, 4 rows affected (0.11 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 張三   |   18 |
|    2 | 李四   |   18 |
|    3 | 王五   |   18 |
|    4 | 趙六   |   18 |
+------+--------+------+
4 rows in set (0.00 sec)

同時更新多個字段的值
在set後面寫入更新字段即可,使用,分隔

將趙六的id改爲233,age改爲23

mysql> update staff set id=233,age=23 where name='趙六';
Query OK, 1 row affected (0.09 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 張三   |   18 |
|    2 | 李四   |   18 |
|    3 | 王五   |   18 |
|  233 | 趙六   |   23 |
+------+--------+------+
4 rows in set (0.00 sec)

刪除記錄

語法:delete from 表名 where 字段=值

注:這個其中的where是條件的意思,由你指定刪除什麼條件的字段,此項可以省略,則會刪除所有記錄。

刪除id爲233的記錄

mysql> delete from staff where id=233;
Query OK, 1 row affected (0.05 sec)

mysql> select * from staff;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 張三   |   18 |
|    2 | 李四   |   18 |
|    3 | 王五   |   18 |
+------+--------+------+
3 rows in set (0.00 sec)

刪除所有記錄

mysql> delete from staff ;
Query OK, 3 rows affected (0.01 sec)

mysql> select * from staff;
Empty set (0.00 sec)

命令總結

命令 作用
show 查詢庫和表
create 創建庫和表
use 進入數據庫
drop 刪除庫和表
alter 修改數據表
desc 查詢表結構
insert 插入記錄
select 查詢記錄
update 修改記錄
delete 刪除記錄

若覺得對你有幫助,點贊支持一下哦

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