SQL學習記錄

單表

1.一個表是數據組合成行和列的集合。
列是一組特定類型的數據值。
一行是表中的單個記錄。
分號結尾
2.create table celebs(id integer,name text,age integer);
INSERT INTO是一個添加指定行或行的子句。
insert into celebs(id,name,age) values(1,’justin bieber’,21);
SELECT是指示語句是查詢的子句。 每次從數據庫查詢數據時,都將使用SELECT。
SELECT查詢表中所有列的數據。
select *from celebs;
指定查詢數據的列。
SELECT name FROM celebs;
3.UPDATE語句編輯表中的一行。 當您要更改現有記錄時,可以使用UPDATE語句。
update celebs set age=22 where id=1;
select*from celebs;
4.ALTER TABLE語句向表中添加了一個新列。當您要向表中添加列時,可以使用此命令。
ADD COLUMN是一個子句,可讓您向表中添加新列。
twitter_handle是要添加的新列的名稱
TEXT是新列的數據類型
alter table celebs add column twitter_handle text;
select *from celebs;
5.DELETE FROM語句從表中刪除一行或多行。
delete from celebs where twitter_handle is null;
6.通過用逗號分隔列名可以一次查詢多個列。 通過指定名稱imdb_rating,結果集包含一個名稱和imdb_rating列。
SELECT name, imdb_rating FROM movies;
7.SELECT DISTINCT用於返回結果集中的唯一值。 它會濾除所有重複的值。 在這裏,結果集列出了電影表中的每個流派一次。
SELECT DISTINCT指定該語句將是返回指定列中唯一值的查詢
9.過濾查詢的結果是SQL中的一個重要技能。WHERE是一個子句,表示要過濾結果集,僅包含以下條件爲真的行。
10.SELECT * FROM movies WHERE name LIKE ‘Se_en’;
當您想比較類似的值時,LIKE可以是一個有用的操作符。
名稱LIKE Se_en是評估特定模式的名稱列的條件。
Se_en表示具有通配符的模式。 _意味着您可以在這裏替換任何個人角色,而不會破壞模式。 名稱Seven和Se7en都匹配這種模式。
%是一個通配符,匹配該模式中零個或多個缺失的字母。
A%匹配所有名稱以“A”開頭的電影
%a匹配以“a”結尾的所有電影
SELECT * FROM movies WHERE name LIKE ‘%man%’;
您可以在模式之前和之後使用%。 這裏,任何在其名稱中包含單詞“man”的電影將在結果集中返回。 注意,LIKE不區分大小寫。 “蝙蝠俠”和“鋼之男”均出現在結果集中。
11.BETWEEN運算符用於在一定範圍內過濾結果集。 值可以是數字,文本或日期。
SELECT * FROM movies WHERE name BETWEEN ‘A’ AND ‘J’;
有時,您希望在WHERE子句中組合多個條件,使結果集更具體和有用。 這樣做的一個方法是使用AND運算符。
SELECT * FROM movies WHERE genre = ‘comedy’ OR year < 1980;
12.您可以使用ORDER BY對查詢結果進行排序。 對結果進行排序通常會使數據更有用和更易於分析。
ORDER BY是一個子句,表示您想按字母順序或數字排列特定列的結果集。
DESC是SQL中的一個關鍵字,與ORDER BY一起使用,按照降序(從高到低)或Z-A排序結果。 在這裏,它按照IMDb評級將所有電影從最高到最低。
也可以按升序對結果進行排序。 ASC是SQL中的一個關鍵字,與ORDER BY一起使用,以按升序(從低到高或A-Z)排序結果。
SELECT * FROM movies ORDER BY imdb_rating DESC;
13.有時甚至過濾的結果可以在大數據庫中返回數千行。 在這些情況下,重要的是將結果集中的行數加起來。
LIMIT是一個子句,用於指定結果集將具有的最大行數。 在這裏,我們指定結果集不能有三行以上。
14.計算表中行數的最快方法是使用COUNT()函數。
COUNT()是一個函數,它將列的名稱作爲參數,並計算列不爲NULL的行數。 在這裏,我們要計算每一行,所以我們通過*作爲參數。
SELECT COUNT(*) FROM fake_apps;
15.GROUP BY是SQL中僅用於聚合函數的子句。 它與SELECT語句協作使用,以將相同的數據排列成組。
我們的聚合函數是COUNT(),我們將價格作爲參數傳遞給GROUP BY。 SQL將會計算表中每個價格的應用總數。
SELECT price, COUNT(*) FROM fake_apps GROUP BY price;
SELECT price, COUNT(*) FROM fake_apps WHERE downloads > 20000 GROUP BY price;
16.SQL可以輕鬆地使用SUM()在特定列中添加所有值。
SUM()是一個函數,它將列的名稱作爲參數,並返回該列中所有值的總和。 在這裏,它會添加下載列中的所有值。
SELECT SUM(downloads) FROM fake_apps;
select category,sum(downloads) from fake_apps group by category;
17.SELECT MAX(downloads) FROM fake_apps;
您可以使用MAX()在列中找到最大的值。
MAX()是一個將列的名稱作爲參數並返回該列中最大值的函數。 在這裏,我們傳遞下載作爲參數,以便它將返回下載列中最大的值。
MAX()類似,SQL還可以通過使用MIN()函數輕鬆地返回列中的最小值。
SQL使用AVG()函數快速計算特定列的平均值。
18.ROUND()是一個函數,它將列名稱和整數作爲參數。 它將列中的值舍入爲整數指定的小數位數。 SQL首先計算每個價格的平均值,然後將結果舍入到結果集中的兩位小數位。
select price,round(avg(downloads),2) from fake_apps group by price;
總結:聚合函數將多個行組合在一起以形成更有意義的信息的單個值。
COUNT將列的名稱作爲參數,並計算值(s)不爲NULL的行數。
GROUP BY是與聚合函數一起使用的子句,用於組合一個或多個列的數據。
SUM()將列名稱作爲參數,並返回該列中所有值的總和。
MAX()將列名稱作爲參數,並返回該列中的最大值。
MIN()將列名作爲參數,並返回該列中的最小值。
AVG()將列名稱作爲參數,並返回該列的平均值。
ROUND()接受兩個參數,列名和小數位數來舍入該列中的值。

使用SQL查詢來自多個表的信息

1.create table artists(id integer primary key,name text);
主鍵用作給定表中每行或記錄的唯一標識符。 主鍵字面上是記錄的id值。 我們將使用此值將藝術家連接到他們製作的相冊。通過指定id列是PRIMARY KEY,SQL確保:
此列中的任何值都不爲NULL
此列中的每個值都是唯一的
表不能有多個PRIMARY KEY列。
2.外鍵是包含數據庫中另一個表的主鍵的列。 我們使用外鍵和主鍵來連接兩個不同表中的行。 一個表的外鍵保存另一個表的主鍵的值。 與主鍵不同,外鍵不需要是唯一的,可以爲NULL。
這是SQL在兩個表之間鏈接數據的方式。 藝術家表和專輯表之間的關係是藝術家的id值。
select *from artists where id=3;
select*from albums where artist_id=3;
3.查詢多個表的一種方法是使用多個表名以逗號分隔的SELECT語句。 也被稱爲交叉連接。
select albums.name,albums.year,artists.name from albums,artists;
4.select *from albums join artists on albums.artist_id=artists.id;
在SQL中,連接用於組合來自兩個或多個表的行。 SQL中最常見的連接類型是內部連接。如果連接條件爲true,內連接將組合來自不同表的行。 讓我們看看語法,看看它是如何工作的。
SELECT *指定我們的結果集將具有的列。 在這裏,我們希望在兩個表中都包含每一列。
FROM albums指定我們正在查詢的第一個表。
JOIN artists ON指定要使用的連接類型以及第二個表的名稱。 在這裏,我們想做一個內連接,我們要查詢的第二個表是藝術家。
albums.artist_id = artists.id是描述兩個表彼此相關的連接條件。 在這裏,SQL使用專輯表中的外鍵列artist_id將其與藝術家表中的正好一行在id列中具有相同的值進行匹配。 我們知道它只會匹配藝術家表中的一行,因爲id是藝術家的主鍵。
5.select *from albums left join artists on albums.artist_id=artists.id;
外連接也可以組合來自兩個或多個表的行,但與內部連接不同,它們不需要滿足連接條件。 相反,左表中的每一行都會返回到結果集中,如果不滿足連接條件,則使用NULL值來填充右側列中的列。
6.AS是SQL中的一個關鍵字,允許您使用別名重命名列或表。 只要將其放在單引號內,新名稱就可以是任何你想要的。 在這裏,我們要將albums.name列重命名爲“Album”,將artists.name列重命名爲“Artist”。
重要的是要注意,列中沒有在任何一個表中重命名列。 別名只出現在結果集中。
select albums.name as ‘album’,albums.year,artists.name as ‘artist’ from albums
join artists on
albums.artist_id=artists.id
where albums.year>1980;
總結:主鍵是爲表中的行提供唯一標識符的列。 此列中的值必須是唯一的,不能爲NULL。
外鍵是包含數據庫中另一個表的主鍵的列。 它用於標識引用表中的特定行。
連接在SQL中用於組合來自多個表的數據。
如果連接條件爲真,INNER JOIN將組合來自不同表的行。
LEFT OUTER JOIN將返回左側表中的每一行,如果不滿足連接條件,則使用NULL值來填充右側表格中的列。
AS是SQL中的關鍵字,允許您使用別名重命名結果集中的列或表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章