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中的关键字,允许您使用别名重命名结果集中的列或表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值