-
sql语句大全之SQL基础语法
简介
SQL是Structured Query Language的缩写,翻译过来就是结构化查询语言。SQL是用于管理关系型数据库而设计的语言。关系型数据库是值将数据组织在一张张表中形式的数据库。常见的关系型数据有:SQLite,MYSQL,Oracle DB,SQL Server,PostgreSQL。与关系型数据库对应的就是非关系型数据库(NoSQL)了,常见的有:Redis,MongoDB,CouchDB,LevelDB
关系型数据库与非关系型数据库区别,引用一段来之知乎的回答:
1.实质。 非关系型数据库的实质:非关系型数据库产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来大幅度提高产品性能。
2.价格。目前基本上大部分主流的非关系型数据库都是免费的。而比较有名气的关系型数据库,比如Oracle、DB2、MSSQL是收费的。虽然Mysql免费,但它需要做很多工作才能正式用于生产。
3.功能。 实际开发中,有很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高、成本更低的非关系型数据库当然是更明智的选择。
作者:pig pig
链接:https://www.zhihu.com/question/24225007/answer/32091571
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
SQL操作
为了便于描述假设存在一个表,该表的名称是celebs,该表有四列。在SQL中表是由行和列组成,但是表按照列名进行分类。
id name age twitter_handle
INTEGER TEXT INTEGER TEXT
SELECT
毋庸置疑,SELECT是SQL里最常用的语句了,SELECT用于从表中选取列,结果被存储在一个结果集中。
//选择所有列
SELECT * FROM celebs;
1
2
//选择name这一列
SELECT name FROM celebs;
1
2
CREATE TABLE
CREATE TABLE用来创建一个表
//创建一个表,表的名称为table_name,该表有三列,列名分别为column_1,column_2,column_3.列中的数据类型分别为整形,文本,文本
CREATE TABLE table_name (
column_1 INTEGER,
column_2 TEXT,
column_3 TEXT
);
1
2
3
4
5
6
INSERT INTO
INSERT INTO用于向列中插入值
//分别向列id, name, age中插入 1, 'Justin Bieber', 21
INSERT INTO celebs (id, name, age) VALUES (1, 'Justin Bieber', 21);
1
2
UPDATE
用于修改表中的数据
//语法
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
1
2
//修改id=1这一行的age列的数据为22
UPDATE celebs SET age = 22 WHERE id = 1;
1
2
ALTER TABLE
修改表,用于增加,修改,删除列
//ADD COLUMN添加一个列
ALTER TABLE celebs ADD COLUMN twitter_handle TEXT;
1
2
//DROP COLUMN删除一个列
ALTER TABLE celebs DROP COLUMN twitter_handle;
1
2
DELETE
删除表中的行
//IS NULL表示值是NULL或者不存在,删除twitter_handle列中值不存在的行,WHERE后面会介绍
DELETE FROM celebs WHERE twitter_handle IS NULL;
1
2
SQL查询
为了便于表达,假设存在一张表,该表的名称为movies。该表有五列,分别是id,name, genre,year,imdb_rating,统计ID,电影名称,电影类型, 发行年份,评分。
DISTINCT
过滤重复的数据
SELECT DISTINCT * FROM movies;
1
WHERE
通过各种条件定位到具体的数据
操作符 描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
//统计评分高于8的电影
SELECT * FROM movies WHERE imdb_rating > 8;
1
2
LIKE
模糊匹配
//_通配一个字符
SELECT * FROM movies WHERE name LIKE 'Se_en';
1
2
//%通配任意多个字符
SELECT * FROM movies WHERE name LIKE '%man%';
1
2
BETWEEN
匹配一个范围
//查到year范围在1990到2000之间的电影
SELECT * FROM movies WHERE year BETWEEN 1990 and 2000;
1
2
AND
逻辑与
SELECT * FROM movies WHERE year BETWEEN 1990 and 2000 and genre = 'comedy';
1
OR
逻辑或
SELECT * FROM movies WHERE genre = 'comedy' AND year < 1980;
1
ORDER BY
h依据某一列进行排序,ASC是顺序排序,DESC是逆序排序。
SELECT * FROM movies ORDER BY year ASC;
1
SQL计算
为了便于表达,假设存在一张表,该表的名称为fake_apps.该表有五列,分别是:
列名 值类型
id INTEGER
name TEXT
category TEXT
downloads INTEGER
price REAL
COUNT()
COUNT()是最快的方式,统计一张表总共的行数。COUNT()函数的参数是一个列的名称,统计整个表所有的行数时,采用通配符*;
//统计整个表的行数
SELECT COUNT(*) FROM fake_apps;
//统计price为0的行数
SELECT COUNT(*) FROM fake_apps WHERE price = 0;
1
2
3
4
5
GROUP BY
GROUP BY <列名> 将一列中相同值的列分成一组
//按照价格进行分组,并统计每组元素的个数
SELECT price, COUNT(*) FROM fake_apps GROUP BY price;
//按照价格分组,但是只将downloads大于20000的作为分组对象,最后统计每组的数量
SELECT price, COUNT(*) FROM fake_apps WHERE downloads > 20000 GROUP BY price;
1
2
3
4
5
SUM()
SQL通过SUM()可以很容易统计一列的和
//计算downloads一列的和
SELECT SUM(downloads) FROM fake_apps;
1
2
//通过catagory进行分组,计算每组downloads的和
SELECT category, SUM(downloads) FROM fake_apps GROUP BY category;
1
2
MAX()
MAX()函数可以找到一列中的最大值
SELECT name, MAX(downloads) FROM fake_apps;
1
//按category进行分组,找到没组中的最大值
SELECT name, category, MAX(downloads) FROM fake_apps GROUP BY category;
1
2
MIN()
MIN()函数可以找到一列中最小的值,用法与MAX()相同
AVG()
AVG()函数计算一列的平均值,用法与MAX()相同
//计算同一种价格的平均下载量
SELECT price, AVG(downloads) FROM fake_apps GROUP BY price;
1
2
ROUND()
设定数值到指定的精度
//设定计算的平均值精度精确到小数点后两位
SELECT price, ROUND(AVG(downloads), 2) FROM fake_apps GROUP BY price;
1
2
多个表操作
PRIMARY KEY
在使用CREATE TABLE时为id添加PRIMARY KEY,PRIMARY KEY是一张表中每一行独一无二的标识,该表将id作为主键。通过主键将多个表联系起来。
CREATE TABLE artists(id INTEGER PRIMARY KEY, name TEXT)
1
本文是在学习SQL语言时做下的简单笔记,学习的网站是:
https://www.codecademy.com/learn/learn-sql可以可视化学习和练习SQL语言,基础部分是免费的。
另外还有个网址总结了SQL语法便于速查,也记录在这:
http://www.w3school.com.cn/sql/sql_intro.asp
---------------------
作者:oscarwin
来源:CSDN
原文:https://blog.csdn.net/shanghairuoxiao/article/details/75249317
版权声明:本文为博主原创文章,转载请附上博文链接!
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式