SQL基础学习2

SELECT语句基础

列的查询:通过SELECT 语句查询并选取出必要数据的过程称为匹配查询或查询。

--SELECT的基本语句

SELECT 列名1,...
FROM 表名;
解释1:SELECT子句中列举了希望从表中查询出的列的名称,其顺序可以任意指定,多个列名直接用逗号分隔排列,查询结果中列的顺序与其子句顺序相同。当要查询全部列时,可以用 星号(*)表示。 使用星号时,就无法设定列的显示顺序了

--查询全部列

SELECT *
FROM 表名

解释2:FROM子句指定了选取出数据的表的名称

为列设定别名:使用关键字 AS,设定汉语别名时要用双引号(" ")括起来

SELECT 列名 AS 列别名
FROM 表名

常数的查询:

SELECT '字符串常数' AS 别名, 数字常数 AS 别名, '日期常数' AS 别名 
FROM 表名;


从结果中删除重复行: 在SELECT子句中使用DISTINCT。

SELECT DISTINCT 列名
FROM 表名;

注意:在使用DISTINCT时,NULL也被视为一类数据。在多个列之前使用,此时会将多个列的数据进行组合,将重复的数据结合为一条。 DISTINCT只能用在第一个列名之前。

根据WHERE语句来选择记录:

WHERE子句可以指定“某一列的值和这个字符串相等”或者“某一列的值大于这个数字”等条件。

--SELECT语句中的WHERE子句语法

SELECT 列名1,列名2,...
FROM 表名
WHERE 表达式条件;

解释: 首先通过WHERE子句查询出符合指定条件的记录,然后再取出SELECT语句指定的列

注意:SQL中子句的书写顺序是固定的,不能随意更改。即WHERE子句要紧跟在FROM子句之后。

关于SQL语句的注释:

单行注释:将注释内容写在“ -- ”之后

多行注释:将注释内容写在“ /* ”和“ */ ”之间


算术运算符和比较运算符

算术运算符:使用其两边的值进行四则运算(+、-、*、/)或者字符串拼接、数值大小比较等运算,并返回结果的符号。运算是以行为单位进行的。也可以使用括号来提升表达式的优先级。

--将表Shop中的price乘以2

SELECT products,price,price*2 AS "price_X2"
FROM Shop
注意: 所有包含NULL的计算,结果肯定为NULL

比较运算符:像符号=、< >(不等于)、<=、<、>=、>这样用来比较其两边的列或者值的符号,几乎所有数据类型(字符、数字、日期等)的列和值都可以用比较运算符进行比较,当然也可以对计算结果进行比较。

对字符串使用不等号时的注意事项:

对字符串类型的数据进行大小比较时,使用的是和数字比较不同的规则,典型的规则就是按照字典顺序进行比较。

- -DDL 创建一个字符表str
CREATE TABLE Str
(string VARCHAR(4) NOT NULL,
  PRIMARY KEY(string));
- -DML 向表中插入数 
BEGIN TRANSACTION;
INSERT INTO Str VALUES('1'),
INSERT INTO Str VALUES('2'),
INSERT INTO Str VALUES('3'),
INSERT INTO Str VALUES('10'),
INSERT INTO Str VALUES('11'),
INSERT INTO Str VALUES('222');
COMMIT;
SELECT string
FROM Str
WHERE Str>'2';
解释:因为其按照字典顺序进行比较,所以输出结果只显示:3,222

不能对NULL使用比较运算符,SQL提供了专门用来判断是否为NULL的运算符IS NULL;希望选取不是NULL的记录时,需要使用IS NOT NULL

- -查询Products表中价格为空的产品名
SELECT name 
FROM Products
WHERE price IS NULL



逻辑运算符

NOT运算符:表示否定,不能单独使用,必须和其他查询条件组合起来使用,不要滥用

--Sample

SELECT name,price
FROM Products
WHERE NOT price>=100;
--等价于

SELECT name,price
FROM Products
WHERE price<100;

AND运算符和OR运算符:主要用于多个查询条件进行组合时

AND运算符在其两侧的查询条件都成立时整个查询条件才成立,为交集的效果(又称逻辑积运算)

SELECT name,price
FROM Products
WHERE name='筷子'
AND price>20;
解释:选出Products表中产品名为“筷子” 售价大于20的行;

OR运算符在其两侧的查询条件有一个成立时整个查询条件都成立,为并集的效果(又称逻辑和运算)

SELECT name,price
FROM Products
WHERE name='筷子'
OR price>20;
解释: 选出Products表中产品名为“筷子”售价大于20的行;

注意:AND的运算优先级高于OR,如果要先优先执行OR运算只能通过添加括号。

逻辑运算符和真值:

真值,即值为真(TRUE)或假(FALSE)之一,在SQL中还存在“不确定(UNKNOWN)”这样的值

AND运算符两侧都为真时,结果为真,否则为假;OR运算符两侧都为假时,结果为假,否则为真;NOT运算符单纯的取反,即将真转换为假,将假转换为真。
当与NULL进行逻辑运算时,其结果为不确定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值