SQLã®å§ãæ¹ â åå3ä»¶ããã180å以äžããåãåºã
3ä»¶ã®ååãããæ¡ä»¶ã«åã2ä»¶ãåãåºã
- SQLiteã«åå3ä»¶ãç»é²ãã
- WHEREãšORDER BYã§åãåºã
- COUNTã»SUMã»JOINã®çµæã確èªãã
- 倿Žå¯Ÿè±¡ãšãã©ã³ã¶ã¯ã·ã§ã³ã確èªãã
æåã®ãŽãŒã«ïŒããããšçä¹³ã®2è¡ãåºã
SQLiteå
ŒΎ
åžã®ãèªåã®OSã«åãã³ãã³ãã©ã€ã³ããŒã«ãçšæããŸããWindows㯠sqlite-tools-win-x64 ãªã©CPUã«åããã®ãå±éããsqlite3.exe ã®ãããã©ã«ããPATHã«è¿œå ããããå±éå
ãã .\sqlite3.exe :memory: ãå®è¡ããŸããPATHãéã£ãŠããmacOS/Linuxãªã©ã§ã¯æ¬¡ã§èµ·åã§ããŸãã
sqlite3 :memory:
ãããã㯠sqlite> ã®ç»é¢ãžå
¥åããŸããã³ãã³ãã®æ«å°Ÿã® ; ãŸã§ã1ã€ã®SQLã§ãã.headers ãªã©ãããã§å§ãŸãåœä»€ã¯SQLite CLIçšã§ãSQLãã®ãã®ã§ã¯ãããŸããã
1. ååã3ä»¶å ¥ãã
.headers on
.mode column
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
price INTEGER NOT NULL
);
INSERT INTO products (id, name, price) VALUES
(1, 'ããã', 120),
(2, 'ããã', 180),
(3, 'çä¹³', 250);
SELECT name, price
FROM products
WHERE price >= 180
ORDER BY price, id;
çµæã¯ ããã180ãçä¹³250 ã®2è¡ããã®ç·Žç¿ã®priceã¯åãè¡šãæŽæ°ã§ããSQLãèªåã§éè²šãæ±ºããããã§ã¯ãããŸããã
2. ä»¶æ°ãšåèšã確ããã
SELECT COUNT(*) AS items, SUM(price) AS total_yen
FROM products
WHERE price >= 180;
items = 2ãtotal_yen = 430 ãªãæåãéèšåã«å¯Ÿè±¡ã®è¡ã確èªãããšãæ¡ä»¶ã®ééãã«ãæ°ã¥ãããããªããŸããã«ããŽãªå¥ã®éèšãžé²ããšãã¯ãã«ããŽãªåãš GROUP BY ã远å ããŸãã
泚æè¡šãäœããåååãšã€ãªãã
次ã®ã³ãŒããåãç·Žç¿çšããŒã¿ããŒã¹ã§å®è¡ããŸããäœ¿ãæ³šæè¡šãäœããšããããèŒããŠããŸãã
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
product_id INTEGER NOT NULL,
quantity INTEGER NOT NULL
);
INSERT INTO orders (id, product_id, quantity) VALUES
(1, 2, 2),
(2, 3, 1);
SELECT p.name, o.quantity, p.price * o.quantity AS total_yen
FROM orders AS o
INNER JOIN products AS p ON p.id = o.product_id
ORDER BY o.id;
çµæã¯ ãããã»2ã»360ãçä¹³ã»1ã»250ãp ãš o ã¯è¡šã®çãå¥åã§ãããã®äŸã§ã¯ååidãäž»ããŒãªã®ã§1ã€ã®æ³šæã«1ã€ã®ååãäžèŽããŸããINNER JOINã¯äžèŽããªã泚æãçµæãžå«ããŸããããã®ç·Žç¿ã«ã¯å€éšããŒå¶çŽãä»ããŠããªããããååšããªãååIDã®ç»é²ãããŒã¿ããŒã¹ãæåŠããèšèšã§ã¯ãããŸããã
å€ãå€ããåã«ã察象ãèªã
次ãé çªã«å®è¡ãããšããããã®å€æ®µã120â130ãžå€ããæåŸã«æ»ããŸãã
SELECT id, name, price FROM products WHERE id = 1;
BEGIN;
UPDATE products SET price = 130 WHERE id = 1;
SELECT id, name, price FROM products WHERE id = 1;
ROLLBACK;
SELECT id, name, price FROM products WHERE id = 1;
æåŸã120ãªãæ»ã£ãŠããŸããCOMMIT ãªã倿Žã確å®ããŸããROLLBACKã¯ããã§ã«ç¢ºå®ããéå»ã®å€æŽãäœã§ãæ»ãããã®ã§ã¯ãããŸãããDELETEã察象æ¡ä»¶ãå
ã«SELECTã§ç¢ºãããŸããããWHEREãçããšå
šè¡ã察象ã«ãªããŸãã
ã€ãŸããããšããšæ¬¡ã®äžæ©
...>ã®ãŸãŸé²ãŸãªãïŒææ«ã®;ãéããŠããªãåŒçšç¬Šãæ¬åŒ§ã確èªãããtable already existsïŒåãCREATEã2åå®è¡ããŠããªãã確èªãããããçŽããªã.quitã§çµäºããæ°ããã¡ã¢ãªäžã®ç·Žç¿ãéå§ããã- NULLãæ€çŽ¢ãããïŒ
= NULLã§ã¯ãªãIS NULLãæªå ¥åãªã©ãæ±ãå€ã§ã0ã空æåãšã¯åºå¥ããã - é çªãäžäœä»¶æ°ã決ãããïŒ
ORDER BYãšSQLiteã®LIMITãæç€ºãããSQL補åã«ãã£ãŠæ§æãéãå Žåãããã
çµäºã¯ .quitãä»åã®ã¡ã¢ãªäžã®ããŒã¿ã¯æ¶ããŸããæ®ãç·Žç¿ã§ã¯ sqlite3 practice.db ãšãã¡ã€ã«åãæå®ããŸãã玢åŒã¯æ€çŽ¢ã®å©ãã«ãªãå ŽåããããŸãããåžžã«äžç¬ã«ãªãä¿èšŒã§ã¯ãªããæžã蟌ã¿ã®è² æ
ããããŸããããŒã¿éã»æ¡ä»¶ã»å®è¡èšç»ã§å€æããŸãã
次ã¯DuckDBå ¥éã§CSVã®éèšãPythonå ¥éã§ã¢ããªåŽã®åŠçãžãSQLiteãšDuckDBã®æ¯èŒãçšééžã³ã®åèã«ãªããŸãã
åèè³æ
2026幎10æ9æ¥ç¢ºèªã
- SQLite â Quickstart â CLIå°å ¥ãšè¡šã»ããŒã¿äœæ
- SQLite â SELECT â WHEREã»éèšã»çµåã»é åºã®æ¡ä»¶
- SQLite â Transactions â BEGINã»COMMITã»ROLLBACK
- SQLite â CLI â ã¡ã¢ãªäžã®DBãšãããåœä»€
- SQLite â Expressions â NULLãšIS