日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MySQL入門教程7 —— 常用數據庫查詢的示例

瀏覽:26日期:2023-10-17 15:17:55

下面是一些學習如何用MySQL解決一些常見問題的例子。

在一些例子中,使用數據庫表“shop”來儲存某個商人(經銷商)的每件物品(物品號)的價格。假定每個商人對每項物品有一個固定價格,那么(物品,商人)即為該記錄的主關鍵字。

啟動命令行工具mysql并選擇數據庫:

shell> mysql your-database-name

(在大多數MySQL中,你可以使用test數據庫)。

你可以使用以下語句創建示例表:

mysql> CREATE TABLE shop ( -> article INT(4) UNSIGNED ZEROFILL DEFAULT ’0000’ NOT NULL, -> dealer CHAR(20) DEFAULT ’’ NOT NULL, -> price DOUBLE(16,2) DEFAULT ’0.00’ NOT NULL, -> PRIMARY KEY(article, dealer)); mysql> INSERT INTO shop VALUES -> (1,’A’,3.45),(1,’B’,3.99),(2,’A’,10.99),(3,’B’,1.45), -> (3,’C’,1.69),(3,’D’,1.25),(4,’D’,19.95);

執行語句后,表應包含以下內容:

mysql> SELECT * FROM shop; +---------+--------+-------+| article | dealer | price |+---------+--------+-------+| 0001 | A | 3.45 || 0001 | B | 3.99 || 0002 | A | 10.99 || 0003 | B | 1.45 || 0003 | C | 1.69 || 0003 | D | 1.25 || 0004 | D | 19.95 |+---------+--------+-------+1. 列的最大值

“最大的物品號是什么?”

SELECT MAX(article) AS article FROM shop;+---------+| article |+---------+| 4 |+---------+2. 擁有某個列的最大值的行

任務:找出最貴物品的編號、銷售商和價格。這很容易用一個子查詢做到:

SELECT article, dealer, priceFROM shopWHERE price=(SELECT MAX(price) FROM shop);

另一個解決方案是按價格降序排序所有行并用MySQL特定LIMIT子句只得到第一行:

SELECT article, dealer, priceFROM shopORDER BY price DESCLIMIT 1;

:如果有多項最貴的物品( 例如每個的價格為19.95),LIMIT解決方案僅僅顯示其中一個!

3. 列的最大值:按組

任務:每項物品的的最高價格是多少?

SELECT article, MAX(price) AS priceFROM shopGROUP BY article+---------+-------+| article | price |+---------+-------+| 0001 | 3.99 || 0002 | 10.99 || 0003 | 1.69 || 0004 | 19.95 |+---------+-------+4. 擁有某個字段的組間最大值的行

任務:對每項物品,找出最貴價格的物品的經銷商。

可以用這樣一個子查詢解決該問題:

SELECT article, dealer, priceFROM shop s1WHERE price=(SELECT MAX(s2.price) FROM shop s2 WHERE s1.article = s2.article);5. 使用用戶變量

你可以清空MySQL用戶變量以記錄結果,不必將它們保存到客戶端的臨時變量中。

例如,要找出價格最高或最低的物品的,其方法是:

mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop; mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price; +---------+--------+-------+| article | dealer | price |+---------+--------+-------+| 0003 | D | 1.25 || 0004 | D | 19.95 |+---------+--------+-------+6. 使用外鍵

在MySQL中,InnoDB表支持對外部關鍵字約束條件的檢查。

只是聯接兩個表時,不需要外部關鍵字。對于除InnoDB類型的表,當使用REFERENCES tbl_name(col_name)子句定義列時可以使用外部關鍵字,該子句沒有實際的效果,只作為備忘錄或注釋來提醒,你目前正定義的列指向另一個表中的一個列。執行該語句時,實現下面很重要:

· MySQL不執行表tbl_name 中的動作,例如作為你正定義的表中的行的動作的響應而刪除行;換句話說,該句法不會致使ON DELETE或ON UPDATE行為(如果你在REFERENCES子句中寫入ON DELETE或ON UPDATE子句,將被忽略)。

· 該句法可以創建一個column;但不創建任何索引或關鍵字。

· 如果用該句法定義InnoDB表,將會導致錯誤。

你可以使用作為聯接列創建的列,如下所示:

CREATE TABLE person ( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, name CHAR(60) NOT NULL, PRIMARY KEY (id));CREATE TABLE shirt ( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, style ENUM(’t-shirt’, ’polo’, ’dress’) NOT NULL, color ENUM(’red’, ’blue’, ’orange’, ’white’, ’black’) NOT NULL, owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id), PRIMARY KEY (id));INSERT INTO person VALUES (NULL, ’Antonio Paz’);SELECT @last := LAST_INSERT_ID();INSERT INTO shirt VALUES(NULL, ’polo’, ’blue’, @last),(NULL, ’dress’, ’white’, @last),(NULL, ’t-shirt’, ’blue’, @last);INSERT INTO person VALUES (NULL, ’Lilliana Angelovska’);SELECT @last := LAST_INSERT_ID();INSERT INTO shirt VALUES(NULL, ’dress’, ’orange’, @last),(NULL, ’polo’, ’red’, @last),(NULL, ’dress’, ’blue’, @last),(NULL, ’t-shirt’, ’white’, @last);SELECT * FROM person;+----+---------------------+| id | name|+----+---------------------+| 1 | Antonio Paz || 2 | Lilliana Angelovska |+----+---------------------+SELECT * FROM shirt;

+----+---------+--------+-------+| id | style | color | owner |+----+---------+--------+-------+| 1 | polo | blue | 1 || 2 | dress | white | 1 || 3 | t-shirt | blue | 1 || 4 | dress | orange | 2 || 5 | polo | red | 2 || 6 | dress | blue | 2 || 7 | t-shirt | white | 2 |+----+---------+--------+-------+

SELECT s.* FROM person p, shirt sWHERE p.name LIKE ’Lilliana%’AND s.owner = p.idAND s.color <> ’white’;

+----+-------+--------+-------+| id | style | color | owner |+----+-------+--------+-------+| 4 | dress | orange | 2 || 5 | polo | red | 2 || 6 | dress | blue | 2 |+----+-------+--------+-------+

按照這種方式使用,REFERENCES子句不會顯示在SHOW CREATE TABLE或DESCRIBE的輸出中:

SHOW CREATE TABLE shirtG*************************** 1. row ***************************Table: shirtCreate Table: CREATE TABLE `shirt` (`id` smallint(5) unsigned NOT NULL auto_increment,`style` enum(’t-shirt’,’polo’,’dress’) NOT NULL,`color` enum(’red’,’blue’,’orange’,’white’,’black’) NOT NULL,`owner` smallint(5) unsigned NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1

在列定義中,按這種方式使用REFERENCES作為注釋或“提示”適用于表MyISAM和BerkeleyDB。

7. 根據兩個鍵搜索

可以充分利用使用單關鍵字的OR子句,如同AND的處理。

一個比較靈活的例子是尋找兩個通過OR組合到一起的關鍵字:

SELECT field1_index, field2_index FROM test_tableWHERE field1_index = ’1’ OR field2_index = ’1’

該情形是已經優化過的。

還可以使用UNION將兩個單獨的SELECT語句的輸出合成到一起來更有效地解決該問題。

每個SELECT只搜索一個關鍵字,可以進行優化:

SELECT field1_index, field2_index FROM test_table WHERE field1_index = ’1’UNIONSELECT field1_index, field2_index FROM test_table WHERE field2_index = ’1’;8. 根據天計算訪問量

下面的例子顯示了如何使用位組函數來計算每個月中用戶訪問網頁的天數。

CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL, day INT(2) UNSIGNED ZEROFILL);INSERT INTO t1 VALUES(2000,1,1),(2000,1,20),(2000,1,30),(2000,2,2), (2000,2,23),(2000,2,23);

示例表中含有代表用戶訪問網頁的年-月-日值。可以使用以下查詢來確定每個月的訪問天數:

SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1 GROUP BY year,month;

將返回:

+------+-------+------+| year | month | days |+------+-------+------+| 2000 | 01 | 3 || 2000 | 02 | 2 |+------+-------+------+

該查詢計算了在表中按年/月組合的不同天數,可以自動去除重復的詢問。

9. 使用AUTO_INCREMENT

可以通過AUTO_INCREMENT屬性為新的行產生唯一的標識:

CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) );INSERT INTO animals (name) VALUES (’dog’),(’cat’),(’penguin’), (’lax’),(’whale’),(’ostrich’);SELECT * FROM animals;

將返回:

+----+---------+| id | name |+----+---------+| 1 | dog || 2 | cat || 3 | penguin || 4 | lax || 5 | whale || 6 | ostrich |+----+---------+

你可以使用LAST_INSERT_ID()SQL函數或mysql_insert_id() C API函數來查詢最新的AUTO_INCREMENT值。這些函數與具體連接有關,因此其返回值不會被其它執行插入功能的連接影響。

注釋:對于多行插入,LAST_INSERT_ID()和mysql_insert_id()從插入的第一行實際返回AUTO_INCREMENT關鍵字。在復制設置中,通過該函數可以在其它服務器上正確復制多行插入。

對于MyISAM和BDB表,你可以在第二欄指定AUTO_INCREMENT以及多列索引。此時,AUTO_INCREMENT列生成的值的計算方法為:MAX(auto_increment_column) + 1 WHERE prefix=given-prefix。如果想要將數據放入到排序的組中可以使用該方法。

CREATE TABLE animals ( grp ENUM(’fish’,’mammal’,’bird’) NOT NULL, id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (grp,id));INSERT INTO animals (grp,name) VALUES (’mammal’,’dog’),(’mammal’,’cat’), (’bird’,’penguin’),(’fish’,’lax’),(’mammal’,’whale’), (’bird’,’ostrich’);SELECT * FROM animals ORDER BY grp,id;

將返回:

+--------+----+---------+| grp | id | name |+--------+----+---------+| fish | 1 | lax || mammal | 1 | dog || mammal | 2 | cat || mammal | 3 | whale || bird | 1 | penguin || bird | 2 | ostrich |+--------+----+---------+

請注意在這種情況下(AUTO_INCREMENT列是多列索引的一部分),如果你在任何組中刪除有最大AUTO_INCREMENT值的行,將會重新用到AUTO_INCREMENT值。對于MyISAM表也如此,對于該表一般不重復使用AUTO_INCREMENT值。

如果AUTO_INCREMENT列是多索引的一部分,MySQL將使用該索引生成以AUTO_INCREMENT列開始的序列值。。例如,如果animals表含有索引PRIMARY KEY (grp, id)和INDEX(id),MySQL生成序列值時將忽略PRIMARY KEY。結果是,該表包含一個單個的序列,而不是符合grp值的序列。

要想以AUTO_INCREMENT值開始而不是1,你可以通過CREATE TABLE或ALTER TABLE來設置該值,如下所示:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧洲美洲av| 国产亚洲人成a在线v网站| 午夜国产欧美理论在线播放| 国产精品啊啊啊| 日本午夜精品视频在线观看| 成人亚洲一区二区| 久久国产乱子精品免费女| 日本不卡高清视频| 国产亚洲精aa在线看| 欧美日韩一区二区三区四区在线观看| 亚洲精品综合| 日本在线成人| 欧美日韩a区| 国产欧美成人| 日韩成人精品一区| 国产精品毛片| 国产欧美日韩综合一区在线播放| 老色鬼精品视频在线观看播放| 成人日韩av| 91精品蜜臀一区二区三区在线| 久久精品资源| 欧美天堂视频| 欧美专区在线| 嫩草伊人久久精品少妇av杨幂 | 精品视频自拍| 精品国模一区二区三区| 亚洲欧美日韩在线观看a三区| 黄色欧美日韩| 91精品丝袜国产高跟在线| 国产精品va视频| 久久都是精品| 亚洲成av在线| 日韩一区二区三区在线看| 日本视频一区二区| 精品一区二区男人吃奶| 91精品一区二区三区综合在线爱| 欧美日韩亚洲一区在线观看| 精品1区2区3区4区| 精品网站999| 日韩国产欧美三级| 青青青免费在线视频| 亚洲精品123区| 欧美黑人巨大videos精品| 亚洲美洲欧洲综合国产一区 | 91九色精品| 日韩av一区二区三区| 麻豆国产欧美日韩综合精品二区| 久久尤物视频| 日本免费一区二区视频| 日韩影院精彩在线| 精品国产91| 亚洲天堂av资源在线观看| 国产欧美日韩精品高清二区综合区 | 日韩在线欧美| 日本一不卡视频| 国产美女高潮在线观看| 一级成人国产| 久久久久观看| 中文字幕日本一区| 黄页网站一区| 欧美日韩高清| 国产一区二区视频在线看| 免费一级片91| 亚洲电影在线一区二区三区| 激情黄产视频在线免费观看| 国产一区二区三区视频在线| 最新国产精品| 精品在线播放| 国产精品久久久久久久免费观看| 亚洲欧美日韩一区在线观看| 美女网站一区| 国产一区二区三区久久久久久久久| 丝袜美腿亚洲一区二区图片| 深夜视频一区二区| 91久久久精品国产| 石原莉奈在线亚洲三区| 伊人久久成人| 亚洲综合日韩| 日韩精品一二区| 伊人www22综合色| 亚洲精品无吗| 国产精品亚洲四区在线观看 | 欧美天堂亚洲电影院在线观看| 欧美一区三区| 久久高清国产| 亚洲开心激情| 久久国产欧美日韩精品| 国产成人免费精品| 久久天堂精品| 亚洲美女久久| 欧美天堂一区二区| 亚洲性视频h| 老牛影视一区二区三区| 蜜臀久久99精品久久久久宅男 | 美女视频黄 久久| 国产精品入口久久| 亚洲午夜在线| 欧美午夜三级| 日韩国产专区| 国产精品自拍区| 亚洲综合中文| 亚洲精品乱码日韩| 久久亚洲一区| 美国三级日本三级久久99 | 综合激情婷婷| 亚洲三级av| 亚洲精品国产精品粉嫩| 欧美精品一区二区久久| 欧美日韩免费观看一区=区三区| 美女少妇全过程你懂的久久| 久久精品青草| 中文字幕日韩亚洲| 日韩精品电影一区亚洲| 美女国产一区二区三区| 91久久视频| 国产精品高颜值在线观看| 亚洲精品亚洲人成在线观看| 国产韩日影视精品| 在线看片福利| 国产一区精品福利| 欧美sm一区| 久久国产精品亚洲77777| 亚洲男人在线| 亚洲午夜天堂| 国产精品免费不| 亚洲黄色在线| 欧美日韩精品免费观看视频完整| 在线看片福利| 成人午夜毛片| 日韩大片在线| 亚洲精品一级二级| 肉色欧美久久久久久久免费看 | 香蕉成人av| 日韩国产在线观看一区| 蜜臀av亚洲一区中文字幕| 久久精品主播| 日韩av二区在线播放| 99成人在线视频| 日韩高清电影免费| 欧美日韩免费观看视频| 蜜臀av一区二区在线免费观看| 国产一区二区三区天码| 国产一区91| 樱桃视频成人在线观看| 欧美日韩18| 欧美日韩免费观看一区=区三区| 麻豆国产精品777777在线| 国产亚洲在线观看| 亚洲精品三级| 首页亚洲欧美制服丝腿| 超碰成人av| 亚洲综合国产| 中国女人久久久| 黄色不卡一区| 蜜桃av在线播放| 精品国产麻豆| 麻豆一区二区三| 日韩高清在线不卡| 视频在线观看一区| 久久精品二区三区| 四虎影视精品| 91精品精品| 亚洲成人日韩| 欧美精品资源| 国产日韩欧美在线播放不卡| 日韩成人在线看| 狂野欧美性猛交xxxx| 免费的成人av| 久久中文字幕av| 精品一区二区三区中文字幕 | 国产精品成人国产| 欧美日韩xxxx| 亚洲专区一区| 国产精品高清一区二区| 久久久久蜜桃| 精品国产一级| 激情五月综合| 欧美一区成人| 欧美日韩精品免费观看视欧美高清免费大片 | 中文字幕日韩高清在线| 成人高清一区| 亚洲精品第一| 亚洲成人一区| 亚洲五月综合| 欧美黄页在线免费观看| 国产精品av久久久久久麻豆网| 美美哒免费高清在线观看视频一区二区| 国产另类在线| 日本欧美在线看| 国产精品亲子伦av一区二区三区| 丰满少妇一区| 最近国产精品视频| 成午夜精品一区二区三区软件| 国精品一区二区| 91精品国产福利在线观看麻豆| 免费视频一区二区三区在线观看| 国产乱子精品一区二区在线观看| 欧美二区视频| 福利在线一区| 91精品国产91久久久久久黑人|