实习——SQL语句

一、SQL基本概念

结构化查询语言(Struct Query Language,SQL)是一种专门用来与数据库沟通的语言。
设计SQL的目的——提供一种从数据库中读写数据的简单有效的方法。

二、检索数据

SELECT语句

1.检索一个表中的数据

SELECT col_name1,col_name2,...
FROM table_name
  • DISTINCT:指示数据库只返回不同的值
  • TOP:最多返回前多少行
--PLAN B
SELECT prod_name
FROM Products
WHERE ROWNUM <=5
//PLAN C
SELECT prod_name 
FROM Products 
LIMIT 5 --返回不超过 5 行的数据
--LIMIT 5 OFFSET 5 //返回从第 5 行起的 5 行数据

SQL第一个被检索的行是第0行

三、排序检索数据

ORDER BY语句

单纯的检索数据,如果不排序,数据一般将以它在底层中出现的顺序显示,这有可能是数据最初添加到表中的顺序。但是当数据随后进行过更新或删除,那么这个顺序将会受到DBMS重用回储存空间的方式的影响。
ORDER BY 一定是SELECT语句中最后一条子句,参考列一定是可排序列

SELECT prod_id, prod_price, prod_name 
FROM Products 
ORDER BY prod_price, prod_name
--二级排序,先参考prod_price,在参考prod_name
--ORDER BY 2 3
--二级排序,先参考第2列,在参考第3列

指定排序:默认升序,DESC降序

四、过滤数据

WHERE子句

WHERE 子句操作符

操作符说明
!>不大于
BETWEEN在指定的两个值之间
IS NULL为NULL
<> / !=不等于

高级数据过滤

  • AND操作符、OR操作符
  • IN操作符
  • NOT操作符:除……之外的数据
NOT WHERE 子句中用来否定其后条件的关键字

用通配符进行过滤

  • LIKE操作符:
    %(百分号)通配符:表示任何字符出现任意次数
    子句 WHERE prod_name LIKE '%'不会匹配产品名称为 NULL 的行
    _(下划线)通配符:只匹配单个字符
    [](方括号)通配符:必须匹配指定位置(通配符的位置)的一个字符
--找出所有名字以 J 或 M 起头的联系人
SELECT cust_contact
FROM Customers 
WHERE cust_contact LIKE '[JM]%' 
ORDER BY cust_contact

五、处理数据

拼接字段

在 SQL 中的 SELECT 语句中,可使用一个特殊的操作符来拼接两个列,操作符(+,||)
根据不同数据库类型,有不同的关键字(Concat,RIRIM)
别名:AS

使用函数

文本处理函数说明
LEFT()/RIGHT()返回字符串左/右边的字符
LENGTH()返回字符串的的长度
LOWER()/UPPER将字符串转换为小/大写
LTRIM()/RTRIM()去掉字符串左/右边的空格
SOUNEX返回字符串的SOUNDEX值

SOUNDEX 是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX 考虑了类似的发音字符和音节,使得能对字符串进行发音比较而不是字母比较。

下面给出一个使用 SOUNDEX()函数的例子。Customers 表中有一个顾客Kids Place,其联系名为 Michelle Green。但如果这是错误的输入,此联系名实际上应该是 Michael Green,该怎么办呢?显然,按正确的联系名搜索不会返回数据,如下所示:

--输入
SELECT cust_name, cust_contact 
FROM Customers 
WHERE cust_contact = 'Michael Green'; 
--输出
		cust_name 				cust_contact 
-------------------------- ----------------------------

现在试一下使用 SOUNDEX()函数进行搜索,它匹配所有发音类似于Michael Green 的联系名:

--输入
SELECT cust_name, cust_contact 
FROM Customers 
WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green'); 
--输出
		cust_name         		cust_contact 
-------------------------- ---------------------------- 
		Kids Place 				Michelle Green

在这个例子中,WHERE 子句使用 SOUNDEX()函数把 cust_contact 列值
和搜索字符串转换为它们的 SOUNDEX 值。因为 Michael Green 和Michelle Green 发音相似,所以它们的 SOUNDEX 值匹配,因此 WHERE子句正确地过滤出了所需的数据。

日期和时间处理函数

参考数据库文档

数值处理函数

常见数值处理函数说明
EXP()返回一个数的指数值
SQRT()返回一个数的平方根

数据汇总

SQL聚集函数说明
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()/MIN()返回某列的最大/小值
SUM()返回某列值之和

聚集不同值:

  • DISTINCT 参数——只包含不同的值
  • TOP……

数据分组

  • GROUP BY 子句 ——创建分组
  • HAVING 子句——过滤分组

五、视图

CREATE VIEW ProductCustomers AS 
SELECT cust_name, cust_contact, prod_id 
FROM Customers, Orders, OrderItems 
WHERE Customers.cust_id = Orders.cust_id 
 AND OrderItems.order_num = Orders.order_num;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逃夭丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值