查看原文
其他

软件应用丨一文搞定SQL增删查改和函数使用

数据Seminar 2021-06-03

The following article is from DC黑板报 Author 逗汁儿


推荐语:随着大规模微观数据和网络爬虫技术的普及,传统的数据存储方式已无法满足经济学研究的需要。为进一步提高存储数据的读写效率,上世纪60年代后,数据库的概念慢慢的出现,从层次数据库、网状数据库,一直发展到如今的关系数据库(详情可参见软件应用|经济学专业学习Python之数据存储篇)。SQL语言是结构化查询语言(Structured Query Language)的简称,是一种面向数据库查询和程序设计的语言,主要用于存取数据以及查询、更新和管理关系数据库系统。因此,掌握SQL语言是大数据时代使用关系数据库的必备技能之一。本文结合具体例子,简单地介绍了“增”、“删”、“改”、“查”等SQL基础知识,以及一些基础的SQL函数,可作为SQL语言学习的入门材料。


——施丹燕



SQL是结构化查询语句(Structured Query Language)的缩写,它使我们具备可以访问并操作数据库的能力。



SQL相关基础语法


常用的SQL语句功能包括增删改查。

首先我们要创建一张数据表。


创建表

语法:CREATE TABLE 表名(列名1 列类型,列名2 列类型)
这是一个空的数据库,下面建立一个表:
CREATE TABLE celebs(id INTEGER, name TEXT, ageINTEGER);左右滑动查看更多
查看下数据:

数据表名字,列名及类型都出现了。


插入数据

语法:INSERT INTO 表名(列1,列2,……)VALUES(值)
INSERT INTO celebs(id,name,age) VALUES(1,'JustinBieber',22);

左右滑动查看更多

这里面也可以不用指代列名,而直接使用表名也可以,


ALTER操作列

ALTER具有添加、修改、删除列的功能。

  • 增加列

语法:ALTER TABLE 表名 ADD COLUMN 列名 类型
ALTER TABLE celebs ADD COLUMN birthday INT;

左右滑动查看更多

字段类型:
  • 删除列

为了演示,我们新增加一个列birthday2:
语法:ALTERTABLE 表名 DROP COLUMN 列名
ALTER TABLE celebs DROP COLUMN birthday2;

左右滑动查看更多

  • 更改列列名

语法:ALTER TABLE 表名 CHANGE 列名 新列名 BIGINT NOT NULL  COMMENT '注释信息';
ALTER TABLE celebs CHANGE id number BIGINTNOT NULL COMMENT 'id变number';

左右滑动查看更多

  • 改变表名

语法:ALTER TABLE 表名字 RENAME 表新名字;

ALTER TABLE celebs RENAME celeb;

左右滑动查看更多


改数据

语法:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
将年龄为25岁的同学所在城市改为SH:
UPDATE celebs2 SET city = 'SH' WHERE age =25

左右滑动查看更多


删数据

删除数据库中的某数据:DELETE FROM 表名称WHERE 列名称 = 值
删掉库中firstname 是Justinlastname 是Z的同学:

说完了增、删、改,我们就要聊一聊查了,增删一般都是数据库工程师的操作,而数据分析师最常用的就是查了。


查数据

SELECT 列名 FROM 表名
(1)查询全表,可以用*代替列名查询全表
SELECT * FROM celebs;

左右滑动查看更多

(2)查询指定列的表
SELECT name FROM celebs;

左右滑动查看更多

select语句是整个SQL的基础了,所以我们可以在各种地方看到它。

(3)有条件的从表中选取数据
  • WHERE语句

语法:SELECT列名称 FROM 表名称 WHERE 列 运算符值
查找年龄在22岁的同学:
SELECT* FROM celebs2 WHERE age = 22;

左右滑动查看更多

  • AND OR语句

AND是两个条件都符合的时候显示,OR是任意一个符合的时候就显示。
语法:SELECT 列名称 FROM 表名称 WHERE 列1 运算符 值1 AND列2 运算符 值2
语法:SELECT 列名称 FROM 表名称 WHERE 列1 运算符 值1 OR 列2 运算符 值2
查找年龄在22岁并且城市在BJ的同学:
SELECT * FROMcelebs2 WHERE age = 22 AND city = 'BJ';

左右滑动查看更多

查找城市在BJ或者TJ的所有同学:
SELECT * FROMcelebs2 WHERE city = 'TJ' OR city = 'BJ';

左右滑动查看更多

查找城市在BJ或者TJ,并且年龄在26岁的同学:
SELECT * FROMcelebs2 WHERE (city = 'TJ' OR city = 'BJ' ) AND age = 26;

左右滑动查看更多

  • BETWEEN…AND…

选取介于两者之间的值使用。
语法:SELECT 行名 FROM 表名 WHERE 行名 BETWEEN 值1AND 值2
查找年龄在22-23之间的同学:
SELECT * FROMcelebs2 WHERE age BETWEEN 22 AND 23;

左右滑动查看更多

  • 多值查询

SELECT 列名FROM 表名 WHERE 列名 IN(值1,值2,...)
查找lastname 为A和AA 的同学:
SELECT * FROMcelebs2 WHERE lastname IN ('A','AA');

左右滑动查看更多

(4)排序
  • ORDER BY顺序排序

语法:SELECT 列名 FROM 表名 ORDER BY 列名
利用年龄对表进行排序:
SELECT * FROMcelebs2 ORDER BY age;

左右滑动查看更多

  • ORDER BY DESC 反序排序

语法:SELECT 列名 FROM 表名 ORDER BY 列名 DESC
SELECT * FROMcelebs2 ORDER BY age DESC;

左右滑动查看更多

(5)去除重复值
很多时候我们不想看到重复的数据量,这时候就用到DISTINCT语句了。
语法:SELECT DISTINCT 列名称 FROM 表名称
表中的4具有一个重复值,但是我想看不重复的有哪些呢?
SELECT DISTINCT *FROM celebs2 ORDER BY id;

左右滑动查看更多




SQL常用函数


SQL和Excel一样,也具有一些方便操作的函数,下面我们就说一些常用的SQL函数吧。

平均值函数 AVG()

语法:SELECTAVG(列名) FROM 表名
求同学们的年龄的平均值,NULL值不计入:
SELECT AVG(age) FROM celebs2;

左右滑动查看更多

值就求出来了。


统计函数 COUNT()

  • 返回指定列值数目

语法:SELECT COUNT(列名)FROM 表名
看看age有多少个值:
SELECT COUNT(age) FROM celebs2;

左右滑动查看更多

age没有缺失值,所以和全部的是一样的。
  • 返回所有的值数目

语法:SELECT COUNT(*) FROM 表名
SELECT COUNT(*) FROM celebs2;

左右滑动查看更多

  • 返回不同值数目

语法:SELECT COUNT(DISTINCT 列名) FROM 表名
看看一共有多少种不同的年龄:
SELECT COUNT(DISTINCT age) FROM celebs2;

左右滑动查看更多


最大值函数 max()

语法:SELECT MAX(column_name) FROM table_name
想看看年龄最大是多少岁:
SELECT MAX(age) FROM celebs2;

左右滑动查看更多


最小值函数 min()

语法:SELECT MINX(column_name) FROMtable_name
看看年龄最小多少岁:
SELECT MIN(age) FROM celebs2;

左右滑动查看更多


HAVING子句

WHERE关键字不能和一些函数一起使用,所以要通过HAVING作为媒介。
语法:SELECT列名, 函数(列名) FROM 表名 WHERE 列名 运算符 值 GROUP BY 列名 HAVING 函数(列名) 运算符 值
用一个新库,原表为:
希望查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额:
SELECT Customer,SUM(OrderPrice) FROMtest001 WHERE Customer='Bush' OR Customer='Adams' GROUP BY Customer HAVINGSUM(OrderPrice)>1500;

左右滑动查看更多

结果:
OK,上面就是这个SQL的基础内容和函数啦~你学会了吗?






►一周热文

软件应用丨为什么Python是数据科学领域最受欢迎的语言之一?

欣闻丨2月12日,新增确诊病例数下降48.2%!还有哪些好消息?

欣闻|2月11日,从确诊到治愈,我们看到了越来越多好消息

欣闻丨2月10日,好消息如期而至,来看看今天有哪些?!

欣闻丨除了确诊人数又降了之外,还有这些好消息等着你……

欣闻丨关于疫情的九条好消息,陪你安心过元宵

老姚专栏丨透过流感事件理解贝叶斯推理














数据Seminar




这里是大数据、分析技术与学术研究的三叉路口




作者:逗汁儿出处:DC黑板报推荐:威武哥(叶武威)编辑:青酱





    欢迎扫描👇二维码添加关注    


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存