<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
操作關係型資料庫的程式語言,定義了一套操作關係型資料庫的統一標準,簡稱SQL。
- SQL通用語法
1 . SQL語句可以單行或多行書寫,以分號結尾。
2 . SQL語句可以使用空格/縮排來增強語句的可讀性。
3 . MySQL資料庫的SQL語句不區分大小寫,關鍵字建議使用大寫。
- 註釋
- SQL語句分類
分類 | 說明 |
---|---|
DDL(deifnition) | 資料定義語言(用來定義資料庫物件,資料庫,表,欄位) |
DML(manipulation) | 資料操縱語言(對資料庫 表中的是資料進行增刪改) |
DQL(query) | 資料查詢語言,用來查詢資料庫中表的記錄 |
DCL(control) | 資料控制語言,用來建立資料庫使用者,控制資料庫的存取許可權 |
同一個資料庫中,不能有兩個表的名字相同,表名和列名不能和SQL的關鍵詞重複。
語法:
create table 表名(定義列1, 定義列2, .......);
列 -> 變數名 資料型別
舉例:
mysql> create table if not exists book( -> book_name varchar(32) comment '圖書名稱', -> book_author varchar(32)comment '圖書作者' , -> book_price decimal(12,2) comment '圖書價格', -> book_category varchar(12) comment '圖書分類', -> publish_data timestamp -> )character set utf8mb4; Query OK, 0 rows affected (0.04 sec)
語法:
show tables;
舉例:
mysql> show tables; +--------------------+ | Tables_in_mytestdb | +--------------------+ | book | +--------------------+ 1 row in set (0.00 sec)
語法:
desc 表名;
舉例:
MySQL資料庫中的表結構主要包含以下幾種資訊: 欄位名稱,欄位型別,是否允許為空,索引型別。預設值,擴充資訊
語法:
drop table 表名
舉例 :
mysql> desc test1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(10) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.02 sec) mysql> drop table test1; Query OK, 0 rows affected (0.04 sec) mysql> desc test1; ERROR 1146 (42S02): Table 'mytestdb.test1' doesn't exist
語法:
rename table old_name to new_name;
舉例:
mysql> rename table book to eBook; Query OK, 0 rows affected (0.05 sec) mysql> show tables; +--------------------+ | Tables_in_mytestdb | +--------------------+ | ebook | +--------------------+ 1 row in set (0.00 sec)
CRUD 即增加(Create)、查詢(Retrieve)、更新(Update)、刪除(Delete)四個單詞的首字母縮寫
案例:
-- 建立一張圖書表 mysql> create table if not exists book( -> book_name varchar(32) comment '圖書名稱', -> book_author varchar(32)comment '圖書作者' , -> book_price decimal(12,2) comment '圖書價格', -> book_category varchar(12) comment '圖書分類', -> publish_data timestamp -> )character set utf8mb4;
單行插入(全列)
insert into 表名 values(對應列的參數列); -- 一次插入一行
多行插入(全列)
insert into 表名 values(對應列的實參列表), (對應列的參數列), (對應列的參數列); -- 一次插入多行
指定列插入
values 後面( )中的內容, 個數和型別要和表名後面( )中指定的結構匹配.
未被指定的列會以預設值進行填充.
insert into 表名 (需要插入的列) values(對應列的參數列); -- 一次插入一行 insert into 表名 (需要插入的列) values(對應列的參數列), (), ().... -- 一次插入多行
案例
# 單行輸入 mysql> insert into book values('計算機網路','謝希仁',45,'計算機類','2020-12-25 12:51:00'); Query OK, 1 row affected (0.01 sec) #多行輸入 mysql> insert into book values('計算機組成原理','王峰',45,'硬體類','2020-12-12 12:00:00'), -> ('微機原理','李華',97,'硬體類','2000-12-19 20:00:00'); Query OK, 2 rows affected (0.04 sec) Records: 2 Duplicates: 0 Warnings: 0 #指定列插入 mysql> insert into book(book_name,book_author,publish_data) values ('軟體工程','張三','2020-05-06 12:00:00'); Query OK, 1 row affected (0.02 sec)
插入資料後的表如圖所示:
在MySQL當中 , 多條記錄逐次插入的效率是要低於一次把多條紀錄一起插入的 ,原因如下:
- 網路請求和響應時間開銷 , 每次插入都會有一定的時間開銷.
- 資料庫伺服器是把資料儲存在硬碟上的 , IO操作時,操作的次數帶來的影響大於資料量.
- 每一次sql操作,內部開啟的事務也會佔據一定的開銷.
全列查詢
語法
select * from 表名 -- * 表示萬用字元, 可以匹配表中的所有列.
企業級別的資料庫中慎用, 容易把I/O或者網路頻寬吃滿,如果有外邊的使用者使用者端要通過寬頻存取伺服器時,伺服器就無法做出正確的響應.
範例
select * from book;
指定列查詢
select 列名... from 表名
範例
)mysql> select book_name from book; +----------------+ | book_name | +----------------+ | 計算機網路 | | 計算機組成原理 | | 微機原理 | | 軟體工程 | +----------------+ 4 rows in set (0.01 sec) mysql> select book_author,book_price from book; +-------------+------------+ | book_author | book_price | +-------------+------------+ | 謝希仁 | 45.00 | | 王峰 | 45.00 | | 李華 | 97.00 | | 張三 | NULL | +-------------+------------+ 4 rows in set (0.00 sec)
查詢你欄位為表示式
select 欄位或表示式, 欄位或表示式... from 表名;
範例
-- 查詢圖書漲價10元后所有圖書的名稱作者和價格 mysql> select book_name ,book_author,book_price + 10 from book; +----------------+-------------+-----------------+ | book_name | book_author | book_price + 10 | +----------------+-------------+-----------------+ | 計算機網路 | 謝希仁 | 55.00 | | 計算機組成原理 | 王峰 | 55.00 | | 微機原理 | 李華 | 107.00 | | 軟體工程 | 張三 | NULL | +----------------+-------------+-----------------+ 4 rows in set (0.00 sec)
將表示式或者欄位指定別名查詢
mysql中支援給所查詢的表示式取一個別名 , 使用 as 可以使查詢結果更加直觀 , 程式碼的可讀性也會更強.
select 列名或表示式 as 別名, ... from 表名;
範例
-- 將漲價20元后的圖書價格取為別名newprice mysql> select book_name,book_author,book_price + 20 as newprice from book; +----------------+-------------+----------+ | book_name | book_author | newprice | +----------------+-------------+----------+ | 計算機網路 | 謝希仁 | 65.00 | | 計算機組成原理 | 王峰 | 65.00 | | 微機原理 | 李華 | 117.00 | | 軟體工程 | 張三 | NULL | +----------------+-------------+----------+ 4 rows in set (0.00 sec)
去重查詢
select distinct 列名 from 表名
範例
--book 表中插入一條重複的book_name資料 mysql> insert into book values('計算機網路','張華',89,'計算機類','2020-11-23 11:00:00'); Query OK, 1 row affected (0.00 sec) mysql> select book_name from book; +----------------+ | book_name | +----------------+ | 計算機網路 | | 計算機組成原理 | | 微機原理 | | 軟體工程 | | 計算機網路 | +----------------+ 5 rows in set (0.00 sec) mysql> select distinct book_name from book; +----------------+ | book_name | +----------------+ | 計算機網路 | | 計算機組成原理 | | 微機原理 | | 軟體工程 | +----------------+ 4 rows in set (0.00 sec)
查詢結果當中,沒有了重複的book _ name 元素,達到了去重效果.
排序查詢
select 列名 from 表名 order by 列名 asc(升序)/desc(降序); # 想要排序的列
範例
# 按照書的價格升序進行排列 mysql> select book_name,book_price from book order by book_price asc; +----------------+------------+ | book_name | book_price | +----------------+------------+ | 軟體工程 | NULL | | 計算機網路 | 45.00 | | 計算機組成原理 | 45.00 | | 計算機網路 | 89.00 | | 微機原理 | 97.00 | +----------------+------------+ 5 rows in set (0.00 sec) #按照書的價格降序進行排列 mysql> select book_name,book_price from book order by book_price desc; +----------------+------------+ | book_name | book_price | +----------------+------------+ | 微機原理 | 97.00 | | 計算機網路 | 89.00 | | 計算機網路 | 45.00 | | 計算機組成原理 | 45.00 | | 軟體工程 | NULL | +----------------+------------+ 5 rows in set (0.00 sec)
- 使用排序查詢時 , 升序查詢 asc 可以省略, 即預設為升序排列, null值一定為其中最小的.
- 可以對多個欄位進行排序,優先順序按照書寫的順序進行.
範例
# 查詢按照價格升序 ,年份降序 select name,price,age from book order by price asc,age desc; #查詢按照總成績進行降序 select name,english+math+chinese as total from grade order by total desc;
條件查詢
當我們使用查詢時, 通常具有各種各樣的前提條件 , 此時就需要使用條件查詢來完成.
select 列名.. from 表名..where + 條件
比較運運算元
運運算元 | 說明 |
---|---|
>, >=, <, <= | 大於,大於等於,小於,小於等於 |
= | 等於,null 不安全,例如 null = null 的結果是 null(false) |
<=> | 等於,null 安全,例如 null <=> null 的結果是 true(1) |
!=, <> | 不等於 |
between a0 and a1 | 範圍匹配,[a0, a1],如果 a0 <= value <= a1,返回 true(1) |
in (option, …) | 如果是 option 中的任意一個,返回 true(1) |
is null | 是 null |
is not null | 不是 null |
like | 模糊匹配; % 表示任意多個(包括 0 個)任意字元;_ 表示任意一個字元 |
邏輯運運算元
運運算元 | 說明 |
---|---|
and | 多個條件必須為 true , 結果才為true |
or | 任意一個條件為true 結果才為true |
not | 條件為true , 結果為false |
注:
WHERE條件可以使用表示式,但不能使用別名。
AND的優先順序高於OR,在同時使用時,需要使用小括號()包裹優先執行的部分
案例
-- 查詢圖書價格低於50的圖書作者和圖書名稱 mysql> select book_name,book_author from book where book_price < 50; +----------------+-------------+ | book_name | book_author | +----------------+-------------+ | 計算機網路 | 謝希仁 | | 計算機組成原理 | 王峰 | +----------------+-------------+ 2 rows in set (0.05 sec) -- 查詢圖書價格等於97的圖書作者 mysql> select book_name ,book_author from book where book_price = 97; +-----------+-------------+ | book_name | book_author | +-----------+-------------+ | 微機原理 | 李華 | +-----------+-------------+ 1 row in set (0.00 sec) -- 查詢圖書價格在50 - 100 之間的圖書名稱 mysql> select book_name from book where book_price between 50 and 100; +------------+ | book_name | +------------+ | 微機原理 | | 計算機網路 | +------------+ 2 rows in set (0.02 sec) -- 查詢圖書價格在此範圍內的圖書名稱 mysql> select book_name from book where book_price in (12,45); +----------------+ | book_name | +----------------+ | 計算機網路 | | 計算機組成原理 | +----------------+ 2 rows in set (0.00 sec)
模糊查詢
- % 匹配任意多個(包括 0 個)字元
- _ 匹配嚴格的一個字元
#查詢姓張的作者的書本價格書名. mysql> select book_price,book_name,book_author from book where book_author like '張%'; +------------+------------+-------------+ | book_price | book_name | book_author | +------------+------------+-------------+ | NULL | 軟體工程 | 張三 | | 89.00 | 計算機網路 | 張華 | +------------+------------+-------------+ 2 rows in set (0.00 sec) # 查詢字首為'計算機'字尾為七個字的書籍名稱 mysql> select book_name from book where book_name like '計算機____'; +----------------+ | book_name | +----------------+ | 計算機組成原理 | +----------------+ #查詢字首為'計算機'的書籍名稱並去重 mysql> select distinct book_name from book where book_name like '計算機%'; +----------------+ | book_name | +----------------+ | 計算機網路 | | 計算機組成原理 | +----------------+ 2 rows in set (0.00 sec)
分頁查詢
分頁查詢即將查詢出的結果 , 按頁進行呈現,並不是一次性展現出來,這種模式就是分頁查詢, mysql當中使用limit來實現分頁查詢.
- limit 子句當中接受一個或者兩個引數 , 這兩個引數的值為0 或者正整數
兩個引數的limit子句的用法
select 元素1,元素2 from 表名 limit offset,count; #offset引數指定要返回的第一行的偏移量。第一行的偏移量為0,而不是1。 #count指定要返回的最大行數。
範例:
mysql> select book_author from book limit 2, 3; +-------------+ | book_author | +-------------+ | 李華 | | 張三 | | 張華 | +-------------+ 3 rows in set (0.02 sec) #表示獲取列表當中偏移量為2(表示從第3行開始), 最大行數為3的作者名稱
帶有一個引數的limit子句的用法
select 列名1.列名2 from 表名 limit count; # 表示從結果集的開頭返回的最大行數為count; # 獲取前count行的記錄
等同於
select 列名1 ,列名2 from 表名 limit 0 , count; # 第一行的偏移量為0
範例
mysql> select book_price from book limit 5; +------------+ | book_price | +------------+ | 45.00 | | 45.00 | | 97.00 | | NULL | | 89.00 | +------------+ 5 rows in set (0.00 sec) # 獲取表中前五行的圖書價格 , 最大行數為5
limit 結合 order by 語句 和其他條件可以獲取n個最大或者最小值
select book_name,book_price from book order by book_price desc limit 3; #獲取價格前三高的圖書名稱和圖書價格 mysql> select book_price,book_name from book order by book_price desc limit 3; +------------+------------+ | book_price | book_name | +------------+------------+ | 97.00 | 微機原理 | | 89.00 | 計算機網路 | | 45.00 | 計算機網路 | +------------+------------+ 3 rows in set (0.01 sec)
使用limit 獲取第n高個最大值
偏移量從
0
開始,所以要指定從n - 1 開始,然後取一行記錄
#範例:獲取價格第二高的圖書名稱 mysql> select book_name from book order by book_price desc limit 1,1; +------------+ | book_name | +------------+ | 計算機網路 | +------------+ 1 row in set (0.00 sec)
MySQL當中使用update關鍵字來對資料進行修改 , 既可以修改單列又可以修改多列.
update 表名 set 列名1 = 值 , 列名2 = 值 ... where 限制條件下修改
SET
子句指定要修改的列和新值。要更新多個列,請使用以逗號分隔的列表。以字面值,表示式或子查詢的形式在每列的賦值中來提供要設定的值。
第三,使用WHERE子句中的條件指定要更新的行。WHERE
子句是可選的。 如果省略WHERE
子句,則UPDATE
語句將更新表中的所有行。
範例:
#將書名為'軟體工程'的圖書價格修改為66元 mysql> update book set book_price = 66 where book_name = '軟體工程'; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select book_price from book where book_name = '軟體工程'; +------------ | book_price | +------------+ | 66.00 | +------------+ 1 row in set (0.00 sec) #將所有的圖書價格修改為原來的二倍 mysql> update book set book_price = 2 * book_price; Query OK, 5 rows affected (0.02 sec) Rows matched: 5 Changed: 5 Warnings: 0 #更新成功 mysql> select book_price from book; +------------+ | book_price | +------------+ | 90.00 | | 90.00 | | 194.00 | | 132.00 | | 178.00 | +------------+ 5 rows in set (0.00 sec)
要從表中刪除資料,需要使用delete 語句, delete 語句的 用法如下
delete from 表名 where + 條件
首先指定需要刪除資料的表,其次使用條件指定where子句中刪除的行記錄, 如果行匹配條件,這些行記錄將會刪除.
WHERE
子句是可選的。如果省略WHERE
子句,DELETE
語句將刪除表中的所有行 , 請注意,一旦刪除資料,它就會永遠消失。因此,在執行DELETE
語句之前,應該先備份資料庫,以防萬一要找回刪除過的資料。
範例
#刪除圖書表中圖書單價大於150的圖書記錄 mysql> delete from book where book_price > 150; Query OK, 2 rows affected (0.01 sec) mysql> select book_price from book; +------------+ | book_price | +------------+ | 90.00 | | 90.00 | | 132.00 | +------------+ 3 rows in set (0.00 sec)
MySQL中delete 語句也可以結合limit語句 和 order by 語句來控制刪除的數量和條件
到此這篇關於MySQL表的CURD操作的文章就介紹到這了,更多相關MySQL表CURD操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45