task03

1 篇文章 0 订阅

task03 关于视图的创建、修改、查询、定义

  • 基于单表的视图

我们在product表的基础上创建一个视图,如下:

CREATE VIEW productsum (product_type, cnt_product)
AS
SELECT product_type, COUNT(*)
  FROM product
 GROUP BY product_type ;
  • 基于多表的视图

我们在product表和shop_product表的基础上创建视图。

CREATE VIEW view_shop_product(product_type, sale_price, shop_name)
AS
SELECT product_type, sale_price, shop_name
  FROM product,
       shop_product
 WHERE product.product_id = shop_product.product_id;
  • 修改视图

我们修改上方的productSum视图为

ALTER VIEW productSum
    AS
        SELECT product_type, sale_price
          FROM Product
         WHERE regist_date > '2009-09-11';

3.2.2 子查询和视图的关系

子查询就是将用来定义视图的 SELECT 语句直接用于 FROM 子句当中。其中AS studentSum可以看作是子查询的名称,而且由于子查询是一次性的,所以子查询不会像视图那样保存在存储介质中, 而是在 SELECT 语句执行之后就消失了。

3.3 各种各样的函数

sql 自带了各种各样的函数,极大提高了 sql 语言的便利性。

所谓函数,类似一个黑盒子,你给它一个输入值,它便按照预设的程序定义给出返回值,输入值称为参数

函数大致分为如下几类:

  • 算术函数 (用来进行数值计算的函数)
  • 字符串函数 (用来进行字符串操作的函数)
  • 日期函数 (用来进行日期操作的函数)
  • 转换函数 (用来转换数据类型和值的函数)
  • 聚合函数 (用来进行数据聚合的函数)

函数总个数超过200个,不需要完全记住,常用函数有 30~50 个,其他不常用的函数使用时查阅文档即可。

算术函数
  • ABS – 绝对值

语法:ABS( 数值 )

ABS 函数用于计算一个数字的绝对值,表示一个数到原点的距离。

当 ABS 函数的参数为NULL时,返回值也是NULL

  • MOD – 求余数

语法:MOD( 被除数,除数 )

MOD 是计算除法余数(求余)的函数,是 modulo 的缩写。小数没有余数的概念,只能对整数列求余数。

注意:主流的 DBMS 都支持 MOD 函数,只有SQL Server 不支持该函数,其使用%符号来计算余数。

  • ROUND – 四舍五入

语法:ROUND( 对象数值,保留小数的位数 )

ROUND 函数用来进行四舍五入操作。

注意:当参数 保留小数的位数 为变量时,可能会遇到错误,请谨慎使用变量。

字符串函数
  • CONCAT – 拼接

语法:CONCAT(str1, str2, str3)

MySQL中使用 CONCAT 函数进行拼接。

  • LENGTH – 字符串长度

语法:LENGTH( 字符串 )

  • LOWER – 小写转换

LOWER 函数只能针对英文字母使用,它会将参数中的字符串全都转换为小写。该函数不适用于英文字母以外的场合,不影响原本就是小写的字符。

类似的, UPPER 函数用于大写转换。

  • REPLACE – 字符串的替换

语法:REPLACE( 对象字符串,替换前的字符串,替换后的字符串 )

  • SUBSTRING – 字符串的截取

语法:SUBSTRING (对象字符串 FROM 截取的起始位置 FOR 截取的字符数)

使用 SUBSTRING 函数 可以截取出字符串中的一部分字符串。截取的起始位置从字符串最左侧开始计算,索引值起始为1。

  • (扩展内容)SUBSTRING_INDEX – 字符串按索引截取**

语法:SUBSTRING_INDEX (原始字符串, 分隔符,n)

该函数用来获取原始字符串按照分隔符分割后,第 n 个分隔符之前(或之后)的子字符串,支持正向和反向索引,索引起始值分别为 1 和 -1。

  • (扩展内容)REPEAT – 字符串按需重复多次

语法:REPEAT(string, number)

该函数用来对特定字符实现按需重复。

Example:

日期函数

不同DBMS的日期函数语法各有不同,本课程介绍一些被标准 SQL 承认的可以应用于绝大多数 DBMS 的函数。特定DBMS的日期函数查阅文档即可。

  • CURRENT_DATE – 获取当前日期

  • CURRENT_TIME – 当前时间

  • CURRENT_TIMESTAMP – 当前日期和时间

    • CURRENT_DATE – 获取当前日期
    SELECT CURRENT_DATE;
    +--------------+
    | CURRENT_DATE |
    +--------------+
    | 2020-08-08   |
    +--------------+
    1 row in set (0.00 sec)
    
    • CURRENT_TIME – 当前时间
    SELECT CURRENT_TIME;
    +--------------+
    | CURRENT_TIME |
    +--------------+
    | 17:26:09     |
    +--------------+
    1 row in set (0.00 sec)
    
    • CURRENT_TIMESTAMP – 当前日期和时间
    SELECT CURRENT_TIMESTAMP;
    +---------------------+
    | CURRENT_TIMESTAMP   |
    +---------------------+
    | 2020-08-08 17:27:07 |
    +---------------------+
    1 row in set (0.00 sec)
    
    • EXTRACT – 截取日期元素

    语法:EXTRACT(日期元素 FROM 日期)

    使用 EXTRACT 函数可以截取出日期数据中的一部分,例如“年”

    “月”,或者“小时”“秒”等。该函数的返回值并不是日期类型而是数值类型

    SELECT CURRENT_TIMESTAMP as now,
    EXTRACT(YEAR   FROM CURRENT_TIMESTAMP) AS year,
    EXTRACT(MONTH  FROM CURRENT_TIMESTAMP) AS month,
    EXTRACT(DAY    FROM CURRENT_TIMESTAMP) AS day,
    EXTRACT(HOUR   FROM CURRENT_TIMESTAMP) AS hour,
    EXTRACT(MINUTE FROM CURRENT_TIMESTAMP) AS MINute,
    EXTRACT(SECOND FROM CURRENT_TIMESTAMP) AS second;
    +---------------------+------+-------+------+------+--------+--------+
    | now                 | year | month | day  | hour | MINute | second |
    +---------------------+------+-------+------+------+--------+--------+
    | 2020-08-08 17:34:38 | 2020 |     8 |    8 |   17 |     34 |     38 |
    +---------------------+------+-------+------+------+--------+--------+
    1 row in set (0.00 sec)
    
    转换函数

    “转换”这个词的含义非常广泛,在 SQL 中主要有两层意思:一是数据类型的转换,简称为类型转换,在英语中称为cast;另一层意思是值的转换。

    • CAST – 类型转换

    语法:CAST(转换前的值 AS 想要转换的数据类型)

    -- 将字符串类型转换为数值类型
    SELECT CAST('0001' AS SIGNED INTEGER) AS int_col;
    +---------+
    | int_col |
    +---------+
    |       1 |
    +---------+
    1 row in set (0.00 sec)
    -- 将字符串类型转换为日期类型
    SELECT CAST('2009-12-14' AS DATE) AS date_col;
    +------------+
    | date_col   |
    +------------+
    | 2009-12-14 |
    +------------+
    1 row in set (0.00 sec)
    
    • COALESCE – 将NULL转换为其他值

    语法:COALESCE(数据1,数据2,数据3……)

    COALESCE 是 SQL 特有的函数。该函数会返回可变参数 A 中左侧开始第 1个不是NULL的值。参数个数是可变的,因此可以根据需要无限增加。

    在 SQL 语句中将 NULL 转换为其他值时就会用到转换函数。

    SELECT COALESCE(NULL, 11) AS col_1,
    COALESCE(NULL, 'hello world', NULL) AS col_2,
    COALESCE(NULL, NULL, '2020-11-01') AS col_3;
    +-------+-------------+------------+
    | col_1 | col_2       | col_3      |
    +-------+-------------+------------+
    |    11 | hello world | 2020-11-01 |
    +-------+-------------+------------+
    1 row in set (0.00 sec)
    

    谓词?????

    后续补充!!!!!!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值