SQL速学教程

注:
1.本文为《SQL必知必会》(作者:Ben Forta)的学习笔记;
2.以下每一节中出现的sql语句的例子仅仅是作为一个语法示例;

1.了解数据库

概念:数据库(database)、表(table)、列(column)、行/记录(row)、主键(primary key)。
SQL数据类型说明:
字符串数据类型,通常用来存储例如名字、地址、电话号码、邮政编码等的数据。有两种基本的字符串类型,分别为定长字符串和变长字符串。字符串值必须括在单引号内。
CHAR-1~255个字符的定长字符串;
NCHAR-CHAR的特殊形式,用来支持多字节或Unicode字符;
NVARCHAR-TEXT的特殊形式,用来支持多字节或Unicode字符;
TEXT(或LONG、MEMO、VARCHAR)-变长文本;
数值数据类型
BIT-单个二进制,0或1;
DECEMAL(或NUMERIC)-定点或精度可变的浮点数;
FLOAT(或NUMBER)-浮点数;
INT(或INTEGER)-4字节整数;
REAL-4字节浮点数;
SMALLINT-2字节整数,-32768~32767;
TINYINT-1字节整数,0~255;
日期和时间数据类型,不同DBMS可能格式不同。通常的日期格式为‘2015-12-30’,通常的事件格式为‘21:46:29’。
DATE-日期;
DATETIME(或TIMESTAMP)-日期时间;
SMALLDATETIME-日期时间,精确到分;
TIME-时间;
二进制数据类型,可包含诸如图像、多媒体、字处理文档等数据。
BINARY-定长二进制数据;
LONG RAW-变长二进制数据,最长2GB;
RAW(某些DBMS实现为BINARY)-变长二进制数据,最长255B;
VARBINARY-变长二进制数据;

2.检索数据

SELECT关键字。可以检索多个列;SQL关键字不区分大小写,例如select,Select,SELECT会被识别为同一个关键字。但是对于表名和列名,需要区分大小写。

select * from products;
select prod_id,prod_name from products;

DISTINCT关键字。检索唯一值,DISTINCT会保证检索出来的数据结果只包含不同的项,如果DISTINCT后面跟随有多个列,那会是这些列的组合。

select distince vend_id from products;

注释:行注释:–test; #test;块注释:/test/;

3.排序

ORDER BY关键字。ORDER BY字句必须是SQL语句的最后一个子句,否则会报错。当按多个列排序的时候,会依次按照指定的各个列进行排序。ASC(ascending)是升序排序,DESC(descending)是降序排序。

select * from products order by prod_name DESC;

4.过滤数据

查询时需要伴随搜索条件(或称为过滤条件),使用WHERE子句进行过滤。注意ORDER BY子句要出现在WHERE子句之后。
WHERE子句操作符包括:
=:等于;
<>、!=:不等于(其中<>语法更早,兼容性较好);
<:小于;
<=:小于等于;
!<:不小于;

:大于;
=:大于等于;
!>:不大于;
BETWEEN… AND…:在两者之间;
IS NULL:为NULL值;

select * from products where prod_price between 5 and 10;
select * from products where prod_price is null;

5.高级数据过滤

WHERE字句可以使用操作符进行连接,连接操作符有AND和OR。在同时出现两个操作符的情况下,AND的计算优先级更高,所以多个操作符的字句需要用括号进行优先级区分。

select * from products where (vend_id=’DLL01’ or vend_id=’BSR01’) and prod_price>=10;

IN关键字。IN用来指定条件范围,范围中的每个条件都匹配,各个条件用逗号分隔。IN其实实现了OR的功能,但是其性能优于OR。IN可以包含其他SELECT语句,从而能动态的建立WHERE字句。

select * from products where vend_id in (‘DLL01’,BRS01’’);

NOT关键字。NOT否定其后跟随的条件语句。NOT经常和IN一起连用。

select * from products where not vend_id=’DLL01’;

6.通配符过滤

L

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

响尾大菜鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值