- 回顧
上周我們掌握了用SQL語言創(chuàng)建數(shù)據(jù)庫以及數(shù)據(jù)表的方法蛤肌,首先我們嘗試創(chuàng)建數(shù)據(jù)庫和表用于今天的學(xué)習(xí)。
.open demo #以創(chuàng)建的方式打開
-- 創(chuàng)建表格
CREATE TABLE Shohin
(shohin_id CHAR(10) PRIMARY KEY NOT NULL,
shohin_mei VARCHAR(100) NOT NULL,
shohin_bunrui VARCHAR(32) NOT NULL,
hanbai_tanka INTEGER,
shiire_tanka INTEGER,
torokubi DATE);
BEGIN TRANSACTION;-- 開啟事務(wù)
-- 插入數(shù)據(jù)
INSERT INTO Shohin VALUES ('0001','T恤衫','衣服',1000,500,'2009-09-20');
INSERT INTO Shohin VALUES ('0002','打孔器','辦公用品',500,320,'2009-09-11');
INSERT INTO Shohin VALUES ('0003','運(yùn)動T恤','衣服',4000,2800,NULL);
INSERT INTO Shohin VALUES ('0004','菜刀','廚房用具',3000,2800,'2009-09-20');
INSERT INTO Shohin VALUES ('0005','高壓鍋','廚房用具',6800,5000,'2009-01-15');
INSERT INTO Shohin VALUES ('0006','叉子','廚房用具',500,NULL,'2009-09-20');
INSERT INTO Shohin VALUES ('0007','擦菜板','廚房用具',880,790,'2008-04-28');
INSERT INTO Shohin VALUES ('0008','圓珠筆','辦公用品',100,NULL,'2009-11-11');
COMMIT; -- 提交數(shù)據(jù)
查詢基礎(chǔ)
- 從表中查詢數(shù)據(jù)時(shí)需要使用SELECT語句冀膝,表示從表中選出必要數(shù)據(jù)的意思阿纤。
- 對于創(chuàng)建好的數(shù)據(jù)表雾叭,我們首先肯定希望整體了解數(shù)據(jù)樣式。
SELECT * FROM Shohin;
很多數(shù)據(jù)庫會顯示列名竞慢,sqlite好像不會
- 有些時(shí)候先紫,比如數(shù)據(jù)量過大或者特定的任務(wù)等情況,我們需要選取特定的某列或多列來進(jìn)行查看筹煮。
SELECT shohin_mei FROM Shohin;
SELECT shohin_id,shohin_mei,shohin_bunrui FROM Shoin;
- 對于我們例子中表的列名遮精,像shohin_id,shohin_mei,shiire_tanka, ···,意義不明確不直觀败潦,容易影響我們對輸出結(jié)果的理解本冲。(很多數(shù)據(jù)庫查詢結(jié)果的第一行都是列名),因此我們可以在查詢語句中給列設(shè)定別名劫扒,這樣輸出結(jié)果的第一列就是我們設(shè)定的別名了檬洞。
SELECT shohin_id AS id,
shohin_mei AS name,
shiire_tanka AS "進(jìn)貨單價(jià)" -- 修改別名為中文時(shí)必要加雙引號(單引號不行)
FROM Shohin;
- 刪除重復(fù)信息,就好比如果我們想要知道所有的商品都屬于哪幾種時(shí)應(yīng)該怎么做呢沟饥?
SELECT DISTINCT shohin_bunrui FROM Shohin;
當(dāng)然我們也可以對多列甚至所有列進(jìn)行匹配尋找重復(fù)項(xiàng)然后刪除添怔。
- 有些時(shí)候,我們可能希望查詢的并不是某些列的所有數(shù)據(jù)贤旷,而是這些列中滿足某些條件的數(shù)據(jù)广料,這是我們應(yīng)該使用WHERE語句。
SELECT shohin_mei,shohin_bunrui
FROM Shohin
WHERE shohin_bunrui = '衣服';
- SQL語句中可以使用計(jì)算表達(dá)式(運(yùn)算符)或者常數(shù)(字符串常數(shù)幼驶、日期常數(shù)艾杏、數(shù)字常數(shù)),比如現(xiàn)在希望可以將商品盅藻、單價(jià)(hanbai_tanka)以及單價(jià)的兩倍打印出來购桑。
SELECT shohin_mei,hanbai_tanka,
hanbai_tanka * 2 AS hanbai_tanka_x2,
38 AS id
FROM Shohin;
- 比較運(yùn)算符汹族、邏輯運(yùn)算符
可用于WHERE語句判斷條件時(shí)使用,=其兴、>顶瞒、<、<>元旬、>=榴徐、<=、AND匀归、OR坑资、NOT。舉幾個簡單例子穆端。
SELECT shohin_mei FROM Shohin
WHERE shiire_tanka <> 2800;
SELECT shohin_mei,shohin_bunrui FROM Shohin
WHERE shohin_bunrui = '辦公用品'
AND (torokubi = '2009-09-11'
OR torokubi = '2009-09-20');
- 特殊的NULL值
當(dāng)表中數(shù)據(jù)空缺時(shí)袱贮,表示為NULL。請記住所有包含NULL的算術(shù)運(yùn)算体啰,結(jié)果都為NULL攒巍,同樣的NULL也不能進(jìn)行比較運(yùn)算。那我們怎么篩選數(shù)據(jù)表中的NULL荒勇?可以使用IS NULL或者IS NOT NULL運(yùn)算符柒莉。
SELECT shohin_mei,shiire_tanka
FROM Shohin
WHERE shiire_tanka IS NULL;
- SQL的邏輯運(yùn)算為三值邏輯,包括真沽翔,假和UNKNOWN(NULL)兢孝。