SQL基础——DQL语法1

DQL之简单查询

-- 0. 数据准备
-- 创建数据库
DROP DATABASE IF EXISTS bigdata_db;
CREATE DATABASE IF NOT EXISTS bigdata_db CHARSET = utf8;
USE bigdata_db;
-- 创建商品表:
CREATE TABLE IF NOT EXISTS product
(
    pid         INT PRIMARY KEY,
    pname       VARCHAR(20),
    price       DOUBLE,
    category_id VARCHAR(32)
);
-- 插入数据
INSERT INTO product(pid, pname, price, category_id)
VALUES (1, '联想', 5000, 'c001');
INSERT INTO product(pid, pname, price, category_id)
VALUES (2, '海尔', 3000, 'c001');
INSERT INTO product(pid, pname, price, category_id)
VALUES (3, '雷神', 5000, 'c001');
INSERT INTO product(pid, pname, price, category_id)
VALUES (4, '杰克琼斯', 800, 'c002');
INSERT INTO product(pid, pname, price, category_id)
VALUES (5, '真维斯', 200, 'c002');
INSERT INTO product(pid, pname, price, category_id)
VALUES (6, '花花公子', 440, 'c002');
INSERT INTO product(pid, pname, price, category_id)
VALUES (7, '劲霸', 2000, 'c002');
INSERT INTO product(pid, pname, price, category_id)
VALUES (8, '香奈儿', 800, 'c003');
INSERT INTO product(pid, pname, price, category_id)
VALUES (9, '相宜本草', 200, 'c003');
INSERT INTO product(pid, pname, price, category_id)
VALUES (10, '面霸', 5, 'c003');
INSERT INTO product(pid, pname, price, category_id)
VALUES (11, '好想你枣', 56, 'c004');
INSERT INTO product(pid, pname, price, category_id)
VALUES (12, '香飘飘奶茶', 1, 'c005');
INSERT INTO product(pid, pname, price, category_id)
VALUES (13, '海澜之家', 1, 'c002');
-- 1. 查看表中所有的数据内容
-- 格式: select * from 表名;
SELECT *
FROM
    product;

-- 2. 我们可以查询指定的数据列
SELECT
    pname,
    price
FROM
    product;

-- 3. 我们可以在整列数据值的基础上进行计算
SELECT
    pname,
    price,
    price * 0.5
FROM
    product;

-- 4. 我们可以在查询时插入常数列
SELECT
    pname,
    price,
    price,
    '常数列',
    10
FROM
    product;

-- 1: 我们在select 后边写什么, 就查询到什么, 可以将一个字段输出多次, 也可以不使用.
-- 2: 无论select 后边的数据内容如何变化, 数据条目数始终不变.
-- 3: 无论如何查询, 数据库中的原数据,不会发生任何改变

 DQL之条件查询

比较查询

条件查询: 将查询出来的结果,根据一定的规则进行过滤, 满足条件则保留,不满足条件则忽略.
关键字 : where
格式: select 列名1, 列名2.... from 表名 where 条件;
条件表达式的计算结果为布尔类型数据, 如果数据的值为 false 则不成立,数据忽略,如果值为true 则成立,数据保留

1. 比较查询
 > 等号左侧的数据大于等号右侧则返回true 否则返回false
 < 等号左侧的数据小于等号右侧则返回true 否则返回false
 <= 等号左侧的数据小于等于等号右侧则返回true 否则返回false
 >= 等号左侧的数据大于等于等号右侧则返回true 否则返回false
 = 等号左右两侧的数据相等则返回true, 否则返回false
 != 或 <> 等号左右两侧的数据不相等则返回true, 否则返回false
 在sql中 0 = false  1 = true 

SELECT 2 > 3; -- 0
SELECT 0 = FALSE;
-- 等价

-- 需求1: 获取所有商品中,商品价格大于600 的商品信息
SELECT *
FROM product
WHERE price > 600;

-- 需求2: 获取所有商品中,商品价格小于等于800的商品价格和商品名称
SELECT pname, price FROM product WHERE price <= 800;

-- 需求3: 获取所有商品中商品类别为c001的商品信息
SELECT * FROM product WHERE category_id = 'c001';

-- 需求4: 获取所有商品中商品类别不为c002的商品id 和商品价格
SELECT category_id,pid,price FROM product WHERE category_id != 'c002';
SELECT category_id,pid,price FROM product WHERE category_id <> 'c002';

 范围查询

2. 范围查询
2.1 连续范围查询 : 在连续范围内,任意数值均会使条件成立
关键字: between ... and ...
 

-- 需求1: 查询所有商品中, 价格区间在800-2000范围内的商品信息
-- 注意: 该取值范围包含边界值, 800 和 2000 都包含在内
SELECT *
FROM product
WHERE price BETWEEN 800 AND 2000;

-- 在使用between and 时要注意,保证前边的数值小于后边的数值, 否则将没有任何数据被筛选出来
SELECT *
FROM product
WHERE price BETWEEN 2000 AND 800;
-- 为空

-- 2.2 非连续范围查询 : 仅在多个取值中,进行判断,如果等于其中任何一个值,则条件成立
-- 关键字 : in
-- 需求2: 查询所有商品中, 价格为 1  200  800 的商品信息
SELECT *
FROM product
WHERE price IN (1, 200, 800);

 模糊查询

3. 模糊查询
就是根据一定的规则筛选符合规则的字符信息, 如果符合规则, 则返回true, 否则返回false
格式: select 列名... from 表名 where 字段 like '规则';
关键字: like
规则: % 代表任意多个任意字符, 可以为0个,  _ 代表一个任意字符.

/*举例: 如果想获取姓张的同学信息, 则需要设置的规则为  张% , 如果想获取两个字的姓张的同学
规则为 张_*/

-- 需求1: 查询名字以"香"开头的商品全部信息
SELECT * FROM product WHERE pname LIKE '香%';

-- 需求2: 查询名字以香开头, 且名字是3个字符的商品等信息
SELECT * FROM product WHERE pname LIKE '香__';

-- 需求3: 查询所有商品中,商品名称为4个字的商品信息
SELECT * FROM product WHERE pname LIKE '____';

-- 需求4: 查询所有商品中,商品名称中带有'霸'字的商品信息
SELECT * FROM product WHERE pname LIKE '%霸%';

-- 注意: like查询时效率较低, 我们开发中很少用

 非空查询

4.非空查询
 is null 判断指定字段的值是否为空, 如果为空则返回true 否则返回 false
 is not null 判断指定字段的值是否为空, 如果为空则返回false 否则返回 true

-- 由于我们模拟数据中, 没有空值信息, 所以我们添加一个空值.
UPDATE product
SET
    price = NULL
WHERE
    pid = 13;

-- 验证数据是否修改成功
SELECT *
FROM
    product;

-- 前置知识: null 参与的任何计算, 结果都为null
SELECT 1 + NULL;
SELECT 2 * NULL;
SELECT 3 > NULL;
SELECT 3 != NULL;
SELECT NULL != NULL;


-- 需求1: 获取所有商品中 价格不为空的商品信息
-- SELECT * FROM product WHERE price != NULL;
SELECT *
FROM
    product
WHERE
    price IS NOT NULL;

-- 需求2: 获取所有商品中 价格为空的商品信息
SELECT *
FROM
    product
WHERE
    price IS NULL;

逻辑查询

 逻辑查询 : 与 或 非的逻辑关系
 关键字 : and or not

-- and 逻辑与  同真即真
-- 举例: 今天我们来教室上课, 同时必须带电脑,才能学会.   上课 and 带电脑
SELECT TRUE AND TRUE;
SELECT FALSE AND TRUE;
SELECT TRUE AND FALSE;
SELECT FALSE AND FALSE;

-- or 逻辑或  同假即假
-- 举例: 今天打车或者坐公交车,都可以来上课   打车  or  坐公交
SELECT TRUE OR TRUE;
SELECT FALSE OR TRUE;
SELECT TRUE OR FALSE;
SELECT FALSE OR FALSE;

-- not 逻辑非  真假互换
-- 举例: 如果今天没有生病 我就去上课   not 生病
SELECT NOT FALSE;
SELECT NOT TRUE;


-- 需求1: 获取所有商品中价格大于200且价格小于等于2000的商品信息
SELECT *
FROM
    product
WHERE
      price > 200
  AND price <= 2000;


-- 需求2: 获取所有商品中,价格大于2000或者价格小于200的全部商品
SELECT *
FROM
    product
WHERE
     price > 2000
  OR price < 200;


-- 需求3: 获取商品中价格不等于 2000的全部商品
SELECT *
FROM
    product
WHERE
    NOT price = 2000;

-- 需求4: 获取商品中价格不为空的所有商品信息
SELECT *
FROM
    product
WHERE
    price IS NOT NULL;
SELECT *
FROM
    product
WHERE
    NOT price IS NULL;

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值