美文网首页
SQL基础查询

SQL基础查询

作者: 活用数据 | 来源:发表于2019-05-26 21:40 被阅读0次

参考资料:
《SQL基础教程》

基础查询

数据准备

在查询数据之前,需要往数据库里插入需要用到的数据。

1.创建数据库

-- 创建数据库shop
CREATE DATABASE shop;

2.创建表
使用数据库shop:

USE shop;

在数据库Shop中创建表:

CREATE TABLE Product
(product_id       CHAR(4)        NOT NULL,
 product_name     VARCHAR(100)   NOT NULL,
 product_type     VARCHAR(32)    NOT NULL,
 sale_price       INTEGER        ,
 purchase_price   INTEGER        ,
 regist_date      DATE           ,
 PRIMARY KEY (product_id));

3.插入数据

INSERT INTO Product VALUES ('0001', 'T恤' ,'衣服', 1000, 500, '2009-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');

COMMIT;

经过上面的操作,我们已经准备好了后面需要用到的数据表。


Product表

SELECT语句基础

列的查询

SELECT语句,从表中选取(SELECT)数据。

基本的SELECT语句

SELECT <列名>, ...
FROM <表名>

包含了两个子句:

  • SELECT子句:列出了希望从表中查询出的列的名称;
  • FROM子句:指定了选取出数据的表的名称。

从Product表中输出3列

SELECT
    product_id, 
    product_name,
    purchase_price
FROM Product;

执行结果:


查询出表中所有的列

想要查询出全部列,可以使用代表所有列的星号(*)

查询全部的列

SELECT *
FROM <表名>;

输出Product表中全部的列

SELECT *
FROM Product;

和以上代码具有相同意义的语句:

SELECT
    product_id,
    product_name,
    product_type,
    sale_price,
    purchase_price,
    regist_date
FROM Product;

执行结果:


但是,如果使用星号,就无法设定列的显示顺序了。

为列设定别名

可以使用AS关键字为列设定别名AS关键字也可以省略。

为列设定别名

SELECT
    product_id AS id,
    product_name AS name,
    purchase_price AS price
FROM Product;

执行结果:


别名可以使用中文,使用中文时需要用双括号("")括起来。

设定中文别名

SELECT
    product_id AS "商品编号",
    product_name AS "商品名称",
    purchase_price AS "进货单价"
FROM Product;

执行结果:


常数的查询

SELECT子句中不仅可以书写列名,还可以书写常数。

查询常数

SELECT
    '商品' AS string,
    38 AS number,
    '2009-02-24' AS date,
    product_id,
    product_name
FROM Product;

执行结果:


从结果中删除重复行

想要删除重复行,可以在SELECT子句中使用DISTINCT来实现。

使用DISTINCT删除product_type列中重复的数据

SELECT DISTINCT product_type
FROM Product;

执行结果:


对含有NULL数据的列使用DISTINCT关键字
NULL也被视为一类数据,如果存在多行NULL时,将被合并成一行。

SELECT DISTINCT purchase_price
FROM Product;

执行结果:


在多列之前使用DISTINCT

SELECT 
    DISTINCT product_type,
             regist_date
FROM Product;

没使用DISTINCT关键字的情况:

执行结果:


可以看出,DISTINCT关键字会将product_type列和regist_data列都相同的数据合并为一条。
注意:DISTINCT关键字只能用在第一个列名之前

WHERE语句选择记录

WHERE子句可以指定查询数据的条件。

SELECT语句中的WHERE子句

SELECT <列名>, ...
FROM <表名>
WHERE <条件表达式>;

选取product_type列为‘衣服’的数据

SELECT 
    product_name,
    product_type
FROM Product
WHERE product_type = '衣服';

执行结果:


SQL顺序

  • 书写顺序:SELECT ——> FROM ——> WHERE
  • 执行顺序:FROM ——> WHERE ——> SELECT

注释

注释是SQL语句中用来标识说明或注意事项的部分,注释对SQL的执行没有任何影响。
注释的书写方法有如下两种:

  1. 单行注释
-- 这是单行注释,只能写在同一行,注意“--”之后有一个空格。
  1. 多行注释
/*
这是多行注释,书写在‘/*’和‘*/’之间;
可以跨多行。
*/

运算符

运算符:就是对其两边的的列或者值进行运算的符号。

算数运算符

算数运算符:可以进行四则运算的运算符。

SQL语句中使用运算表达式

SELECT 
    product_name,
    sale_price,
    sale_price*2 AS 'sale_price_x2'
FROM Product

执行结果:


注意NULL
所有包含NULL的计算,结果肯定是NULL!。

只包含SELECT子句的SELECT语句
FROM子句并非必不可少,只使用SELECT子句进行计算也是可以的。

SELECT (100 + 200)*3 AS calculation;

执行结果:


比较运算符

比较运算符:用来比较其两边的列或者值的符号。

比较运算符 含义
= 和~相等
<> 和~不等
>= 大于等于~
> 大于~
<= 小于等于~
< 小于~

比较运算符可以对字符、数字和日期等几乎所有数据类型的列和值进行比较。

选出登记日期在2009年9月27日之前的记录
小于某个日期就是在该日期之前的意思。

SELECT
    product_name,
    product_type,
    regist_date
FROM Product
WHERE regist_date < '2009-09-27';

执行结果:


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

创建Chars表并插入数据

-- DDL:创建表
CREATE TABLE Chars
(chr CHAR(3) NOT NULL,
PRIMARY KEY (chr));

-- DML:插入数据

INSERT INTO Chars VALUES ('1');
INSERT INTO Chars VALUES ('2');
INSERT INTO Chars VALUES ('3');
INSERT INTO Chars VALUES ('10');
INSERT INTO Chars VALUES ('11');
INSERT INTO Chars VALUES ('222');

COMMIT;

[图片上传失败...(image-5eb355-1558878011527)]

选出大于‘2’的数据

SELECT chr
FROM Chars
WHERE chr > '2';

执行结果:


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

不能对NULL使用比较运算符

我们不能通过使用比较运算符,来判断是否为NULL,SQL专门提供了是否为NULLIS NULL运算符

选取NULL的记录

SELECT
    product_name,
    purchase_price
FROM Product
WHERE purchase_price IS NULL;

执行结果;


反之,希望选取不是NULL的记录时,需要使用IS NOT NULL运算符

逻辑运算符

逻辑运算符 含义
NOT 不是~
AND 并且,在其两侧的查询条件都成立时,整个查询条件才成立
OR 或者,在其两侧的查询条件有一个成立时,整个查询条件都成立

查询条件中使用NOT

SELECT
    product_name,
    product_type,
    sale_price
FROM Product
WHERE NOT sale_price >= 1000;

执行结果:


上面的SQL的查询条件和以下SQL的查询条件是等价的:

SELECT
    product_name,
    product_type,
    sale_price
FROM Product
WHERE sale_price < 1000;

查询条件中使用AND

SELECT
    product_name,
    product_type,
    sale_price
FROM Product
WHERE
    product_type = '厨房用具' 
AND sale_price >= 3000;

执行结果:


查询条件中使用OR

SELECT
    product_name,
    product_type,
    sale_price
FROM Product
WHERE
    product_type = '厨房用具' 
 OR sale_price >= 3000;

执行结果:


使用括号
注意:AND运算符的优先级高于OR运算符,想要优先执行OR运算符时可以使用括号。

逻辑运算符和真值
真值就是值为真(TRUE)假(FALSE)不确定(UNKNOWN)其中之一的值。SQL之外的语言基本上只有真假两种真值,只有SQL中有第三种值——不确定(UNKNOWN)
当对NULL进行逻辑运算时,其结果是不确定(UNKNOWN),这就是不能对NULL值使用不等式的原因。

相关文章

  • sql

    sql-基础sql-基础查询-1sql-基础查询-2sql-更新 概览 数据库(Database,DB):将大量数...

  • SQL基础(二)

    前言 基础SQL入门详情看SQL(一)多表联接的原理详细看SQL(一) 查询 在SQL中, 最难的莫过于查询.因为...

  • mysql手工注入

    SQL基础 1.1 什么是sql? SQL(structured query language),即结构化查询语言...

  • 数据库笔记-SQL查询&过滤

    基础查询 查询排序 查询过滤 基础查询 以极客时间专栏《SQL必知必会》的王者荣耀表格为例。 SELECT语句 检...

  • SQL基础(一)

    SQL SQL是关系数据库的查询语言.在SQL中最难的应该算是查询。本篇文章, 注重点在于总结基础的sql语句, ...

  • SQL基础查询

    一、SQL简单查询1.所谓简单查询就是查询一张数据表中所有数据行的内容。①FROM 表名称 [别名]②SEL...

  • SQL 基础查询

    # 1. 基础查询 /* 语法: select 查询列表 from 表名; 特点: 1.查询列表可以是:查询表中的...

  • SQL基础查询

    参考资料:《SQL基础教程》 数据准备 在查询数据之前,需要往数据库里插入需要用到的数据。 1.创建数据库 2.创...

  • sql基础查询

    1、 selectlower(客户ID) from 客户 ➡️返回客户ID列的小写 2、selectlength(...

  • Mysql常用SQL语句收集

    mysql常用sql语句收集 基础篇 //查询时间,友好提示 $sql = "select date_format...

网友评论

      本文标题:SQL基础查询

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