За да изберете данни от база данни на SQLite, използвайте SELECT
изявление.
Когато използвате този израз, вие посочвате от кои таблици/и да изберете данни, както и колоните, които да се върнат от заявката.
Можете също да предоставите допълнителни критерии за допълнително стесняване на данните, които се връщат.
Прост SELECT
Изявление
Вече използвахме SELECT
изявление преди това, когато вмъкнахме данни.
Изявлението, което използвахме, беше следното:
SELECT * FROM Artists;
Това е съвсем разбираемо - казва на SQLite да избере всички колони от
Изпълнители
маса. Звездичката (*
) е съкратен начин да се каже "всички колони". Това ни спестява изписването на имената на всички колони.
Следователно тази заявка връща всички записи и всички колони. Като това:
1|Joe Satriani 2|Steve Vai 3|The Tea Party 4|Noiseworks 5|Wayne Jury 6|Mr Percival 7|Iron Maiden 8|Atmasphere 9|Ian Moss 10|Magnum 11|Strapping Young Lad 12|Slayer 13|Primus 14|Pat Metheny 15|Frank Gambale 16|Frank Zappa 17|The Wiggles
Форматиране
Нека форматираме изхода, така че нашите резултати да са малко по-лесни за четене.
Използвайте колони
Можете да използвате .mode
за да промените изходния режим. Горният пример използва .mode list
, което показва резултатите като списък.
Нека променим режима, за да използваме колони.
.mode column
Когато направите това, може да се наложи да коригирате ширините на колоните (всички данни, които са твърде широки за колоната, ще бъдат съкратени).
Коригирайте ширините на колоните
За да регулирате ширините на колоните, използвайте .width
команда, последвана от ширини за всяка колона.
Следният пример задава първата колона на 12
и втората колона на 20
.
.width 12 20
Добавяне на заглавки
Можете също да използвате .headers off
за да укажете дали да се показват заглавки на колони или не.
За да покажете заглавки, използвайте това:
.headers on
Можете да ги премахнете с изключени .headers off
.
Показване на настройките
Можете да прегледате тези и други настройки по всяко време, като напишете .show
sqlite> .show echo: off eqp: off explain: off headers: on mode: column nullvalue: "" output: stdout separator: "|" stats: off width: 12 20
Нов формат
Ето как изглежда предишният пример с режим на колони и заглавки:
ArtistId ArtistName ---------- ------------ 1 Joe Satriani 2 Steve Vai 3 The Tea Part 4 Noiseworks 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum 11 Strapping Yo 12 Slayer 13 Primus 14 Pat Metheny 15 Frank Gambal 16 Frank Zappa 17 The Wiggles
WHERE
Клауза
Можете да използвате WHERE
клауза за стесняване на резултатите. Клаузата ви позволява да зададете конкретни критерии, за които да приложите към заявката.
Например, можете да посочите, че трябва да се връщат само записи, където определено поле съдържа определена стойност.
Ето един много конкретен пример. Той указва, че само записът с ArtistId равно на 6 трябва да се върне:
SELECT * FROM Artists WHERE ArtistId = 6;
Резултат:
ArtistId ArtistName ------------ -------------------- 6 Mr Percival
За да намерите всички изпълнители, чието име започва с буквата "S", можете да направите това:
SELECT * FROM Artists WHERE ArtistName LIKE 'S%';
Резултат:
ArtistId ArtistName ------------ -------------------- 2 Steve Vai 11 Strapping Young Lad 12 Slayer
Знакът на процента (%
) е заместващ знак, който може да се използва за определяне на всеки знак. И така, в този пример уточняваме, че името на художника трябва да бъде като този модел (т.е. моделът, започващ с буквата
S
и следване с всеки друг знак).
Друг пример за използване на WHERE
клауза е за извличане на диапазон от стойности. Например, можем да търсим записи, в които стойността е по-малка от число, по-голяма от число или в определен диапазон.
Ето пример за избиране само на тези записи с ArtistId по-малко от число:
SELECT * FROM Artists WHERE ArtistId < 6;
Резултат:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury
Ето пример за избиране само на тези записи с ArtistId в определен диапазон:
SELECT * FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Резултат:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum
Избиране на колони
Можете да посочите, че само определени колони се връщат в набора от резултати. Просто напишете имената на колоните в заявката. Имената на няколко колони трябва да бъдат разделени със запетая.
Добра практика е да изберете само онези колони, от които се нуждаете. Използване на *
, макар и удобен, може да причини допълнителни разходи, ако връща повече колони, отколкото е необходимо.
Така че нека стартираме отново същата заявка, но този път изберете само Име на изпълнител колона:
SELECT ArtistName FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Резултат:
ArtistName ------------ Wayne Jury Mr Percival Iron Maiden Atmasphere Ian Moss Magnum
ORDER BY
Клауза
Можете да използвате ORDER BY
клауза за ограничаване на броя на върнатите записи.
Можете да добавите ASC
за възходящ ред или DESC
за низходящ ред. Ако не добавите нищо, той ще използва възходящо ниво.
Тук поръчваме по Име на изпълнител поле във възходящ ред:
SELECT * FROM Artists ORDER BY ArtistName;
Резултат:
ArtistId ArtistName ------------ -------------------- 8 Atmasphere 15 Frank Gambale 16 Frank Zappa 9 Ian Moss 7 Iron Maiden 1 Joe Satriani 10 Magnum 6 Mr Percival 4 Noiseworks 14 Pat Metheny 13 Primus 12 Slayer 2 Steve Vai 11 Strapping Young Lad 3 The Tea Party 17 The Wiggles 5 Wayne Jury
И ако преминем към низходящ ред:
SELECT * FROM Artists ORDER BY ArtistName DESC;
Резултат:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 17 The Wiggles 3 The Tea Party 11 Strapping Young Lad 2 Steve Vai 12 Slayer 13 Primus 14 Pat Metheny 4 Noiseworks 6 Mr Percival 10 Magnum 1 Joe Satriani 7 Iron Maiden 9 Ian Moss 16 Frank Zappa 15 Frank Gambale 8 Atmasphere
LIMIT
Клауза
Можете да използвате LIMIT
клауза за ограничаване на броя на върнатите записи. Това може да бъде удобно, ако вашата таблица съдържа голям брой записи, но искате да видите само шепа.
Тук ограничаваме набора от запис до само пет записа:
SELECT * FROM Artists LIMIT 5;
Резултат:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury