美文网首页
SQL学习笔记(1)

SQL学习笔记(1)

作者: dukecoder | 来源:发表于2015-05-17 16:50 被阅读0次

这个简单的学习笔记是我通过阅读《Sams Teach Yourself SQL in 10 minutes》这本书总结的。我采用的学习SQL的方法还是Learning by do it,在做完每一个实例之后,隔两天再总结总结,再隔两天在在其他语言的程序(比如C++,JAVA)中利用SQL进行调用数据来测试。

这里是第一部分,很多例子其实真的是很直观,很容易理解,所以我基本都没有写太多的解释。文中SQL命令关键词大小写不影响,但是建议采用大写。

学习的样表材料:www.forta.com/books/0672336073/

1.SELECT

1.1 检索

1.1.1 检索多列

SELECT prod_id, prod_name, prod_price

From Products;

1.1.2 检索所有列

SELECT *
From Products;

1.1.3 检索不同值

SELECT DISTINCT prod_name

From Products;

1.1.4 检索限制个数

SELECT prod_name

From Products

LIMIT 5;

OR if use in oracle:

SELECT prod_name

From Products

where ROWNUM <=5;

1.2 排序

1.2.1 排序单列

SELECT prod_name

From Products

order by prod_name;

1.2.2 排序多列

SELECT prod_id, prod_name, prod_price

From Products

order by prod_price, prod_name;

其中,prod_price是第一顺序,prod_name是第二顺序,第二顺序只在第一顺序作业下无法分出高下的时候起效。

1.2.3 排序顺序

默认是升序,如果想采用降序,需要对想降序的序列指定DESC:

SELECT prod_id, prod_name, prod_price

From Products

order by prod_price DESC, prod_name;

1.3 过滤

1.3.1 基础过滤

在数据库过滤比在客户端过滤好的得多,因为这样避免的通过网络发送多余的数据。过滤的字句为:

where prod_price < 10; --过滤单值

where prod_price != 10; --排除单值

where prod_price between 10 AND 100; 范围过滤

where prod_price IS NULL; --空值检查

1.3.2 高级过滤

where prod_price < 10 AND vend_id = 'DLL01'; --AND

where prod_price < 10 OR vend_id = 'DLL01'; --OR

where vend_id in ('DLL01', 'BRS01'); --range

where NOT vend_id = 'DLL01'; --否定其后条件

1.3.3 使用通配符过滤

Concept: wildcard, 通配符, 是用来匹配一部分的特殊字符

A.使用百分号%过滤

a.匹配所有“FISHXXXXX”字串

SELECT prod_name

From Products

where prod_name LIKE 'FISH%';

b.匹配所有“XXXFISHXXXXX”字串

SELECT prod_name

From Products

where prod_name LIKE '%FISH%';

c.匹配所有“F"开头,"Y”结尾的字串

SELECT prod_name

From Products

where prod_name LIKE 'F%Y';

B.使用下划线_过滤

只匹配单个字符

sqlite> select prod_id, prod_name

...> from Products

...> where prod_name LIKE '_ inch teddy bear';

C.使用方括号[]过滤

指定一个字符集,必须匹配特定位置的单个字符。比如打算查找客户中以J或者K开头的联系人:

sqlite> select cust_contact

...> from Customers

...> where cust_contact LIKE '[JK]%'

...> ORDER by cust_contact;

不过在SQLite中貌似无用。

2. 计算&字段

2.1 拼接字段

在SQLite, Oracle, DB2中,使用

select vend_name || '(' || vend_country || ')'

from Vendors;

Results:

Bears R Us(USA)

Bear Emporium(USA)

Doll House Inc.(USA)

Furball Inc.(USA)

Fun and Games(England)

Jouets et ours(France)

如果使用的是SQL Server,第一句应当用:

select vend_name + '(' + vend_country + ')'

如果使用的是MySQL,第一句应当用:

select Concat(vend_name, '(', vend_country, ')')

为了保证返回有期望的格式,应当消除多余空格

select RTRIM(vend_name) || '(' || RTRIM(vend_country) || ')'

from Vendors;

2.2 执行计算

Code:

SELECT prod_id, quantity, item_price, quantity*item_price AS subtotal

FROM OrderItems

WHERE order_num = 20008;

输出:

RGAN01 |5 |4.99 |24.95

BR03 |5 |11.99|59.95

BNBG01 |10|3.49 |34.9

BNBG02 |10|3.49 |34.9

BNBG03 |10|3.49 |34.9

相关文章

  • Learn SQL| Codecademy第二节学习笔记

    1、Learn SQL| Codecademy第一节学习笔记 2、学习记录☞Learn SQL| Codecade...

  • SQL学习笔记day1

    SQL学习笔记day1 sql语句种类 DDL(Data Definition Language,数据定义语言):...

  • Hello SQL

    Hello SQL 目录 一,Mac下安装MySql 二,学习笔记 2-1:学习笔记 2-1:技术图谱: 三,...

  • 2018-02-09持续更新的SQL语言

    SQL学习笔记Structured Query Language: 对于SQL语言,有几个特点:1 永远第一个出现...

  • SQL学习笔记(1)

    这个简单的学习笔记是我通过阅读《Sams Teach Yourself SQL in 10 minutes》这本书...

  • SQL 学习笔记(1)

    SQL 是什么? SQL 能做什么? 查询列表中某些列的内容: 在 order by 中 ,显示文字以首字母 的顺...

  • mysql 操作的常用命令

    sql:SHOWVARIABLESLIKE'character%' mysql学习笔记-常用命令常用sql:SHO...

  • 小白SQL学习笔记(1)

    是的,在HTMl没有写完的时候,我又好死不死的开始学SQL,作为一个不会写代码的数据分析师(员),我也很无奈啊。 ...

  • SQL学习笔记1:查询

    第一讲 查询 1. 对列的筛选:select select 列1,列2,列3 from 表名select * fr...

  • (35、36)周回顾(20190805-20190818)

    1、学习Power Query 教程_M语言及函数进阶(暂停) 2、整理一篇学习笔记:文章1:My SQL内外联结...

网友评论

      本文标题:SQL学习笔记(1)

      本文链接:https://www.haomeiwen.com/subject/vwakqttx.html