【SQL与关系数据库】第二节 SQL语言要素扩展

由于笔者擅长使用MySQL,后面的博文会以MySQL作为实例数据库对SQL语言相关知识进行梳理。不足之处,欢迎批评!

基本术语:

1、GPL(GNU通用公共许可证)

MySQL简介:

MySQL是一个关系数据库管理系统(RDBMS),它具有客户/服务器体系结构,最初由瑞典MySQL AB公司开发。由于它具有体积小、速度快、开放源代码、遵循GPL等特点,许多中、小型网站为了降低成本而选择使用MySQL作为WEB应用数据库。
如今MySQL已被广泛应用于互联网上各中、小型网站与信息管理系统开发。
目前MySQL数据库已被Oracle公司收购,属Oracle旗下产品。因为这段历史原因,一个完全适应MySQL的数据库新产品Maridb问世,开发者也是MySQL的原作者。有兴趣的读者可以自行百度了解,这里不作赘述。

MySQL系统特性:

  1. 使用C和C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
  2. 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
  3. 为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
  4. 支持多线程,充分利用 CPU 资源。
  5. 优化的 SQL查询算法,有效地提高查询速度。
  6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
  7. 提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。
  8. 提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
  9. 提供用于管理、检查、优化数据库操作的管理工具。
  10. 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  11. 支持多种存储引擎。
  12. MySQL 是开源的,所以你不需要支付额外的费用。
  13. MySQL 使用标准的 SQL数据语言形式。
  14. MySQL 对 PHP 有很好的支持,PHP是目前最流行的 Web 开发语言。
  15. MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。
  16. 在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6 [4] 新增)
  17. 复制全局事务标识,可支持自我修复式集群(5.6 [4] 新增)
  18. 复制无崩溃从机,可提高可用性(5.6 [4] 新增)
  19. 复制多线程从机,可提高性能(5.6 [4] 新增)
  20. 3倍更快的性能(5.7 [5] 新增)
  21. 新的优化器(5.7 [5] 新增)
  22. 原生JSON支持(5.7 [5] 新增)
  23. 多源复制(5.7 [5] 新增)
  24. GIS的空间扩展(5.7 [5] 新增)

一、MySQL中的SQL

上一篇博文介绍SQL特点的时候讲到:SQL本身不是某个特定数据库供应商专有的语言。SQL是一种国际标准,就像我们日常生活中使用的电器插座、螺丝与螺母一样都有大家各自遵守的标准。标准使得各个遵循此标准的插座制造商、螺丝与螺母制造商所生产出来的产品能在市场上通用。因此实现了SQL标准的数据库厂家,如Oracle数据库、SQLLite数据库、SQLService数据库等系统之间可以互操作。这点对有SQL基础的读者或者使用过2个以上不同厂商数据库的读者应该会有直观的感受。
另外也说到过:目前没有一个数据库系统能够支持SQL标准的全部概念和特性,且在实现SQL标准上符合程度也不相同。它们各自都有自己特殊的扩展或者对SQL的简化,使之符合实际开发需要,方便用户编程。
MYSQL在SQL标准的基础上增加了部分扩展的语言要素,下面将对这些语言要素进行介绍。

二、MySQL语言要素详解

1)常量

常量是指在程序运行过程中值不变的量,也称为字面量标量值。常量的使用格式取决于值的数据类型,可分为字符串常量、数值常量、十六进制常量、时间日期常量、位字段值、布尔值和NULL值。

  • 字符串常量:在MySQL中是用单引号或双引号括起来的字符序列,分为ASCII字符串常量和Unicode字符串常量。如:
#单引号
SELECT 'MySQL' AS '字符串常量';
#双引号
SELECT "MySQL" AS '字符串常量';
  • 数值常量:可以分为整数常量和浮点数常量。其中,整数常量是不带小数点的十进制数;浮点数常量则是使用小数点的数值常量。
 #整数常量
 SELECT 10;
 #浮点数常量
 SELECT 10.1;
  • 十六进制常量:MySQL支持以十六进制值表示字符串,一个十六进制值通常指定位一个字符串常量,每对十六进制数字被转换为一个字符,以大写字母“X”或小写字“x”开头。如:X'4D7953514C'x'4D7953514C'表示字符串MySQL,十六进制数值不区分大小写,其前缀“X”或“x”可以被“0x”取代而且不用引号。即X’41’可以替换为0x41,注意:“0x”中x一定要小写。执行下列SQL语句即可查看十六进制常量值所代表的字符序列。
##大写X开头
SELECT X'4D7953514C' AS '十六进制字符';
##小写x开头
SELECT x'4D7953514C' AS '十六进制字符';
##0x代替X或x
SELECT 0x4D7953514C AS '十六进制字符';
  • 日期时间常量:用单引号将表示日期时间的字符串括起来而构成。日期型常量包括年、月、日,数据类型为DATE,表示为“1999-06-17”这样的值。
    时间型常量包括小时数、分钟数、秒数及微秒数,数据类型为TIME,表示为“12:30:43.00013”这样的值。
    MySQL还支持日期/时间的组合,数据类型为DATETIME或TIMESTAMP,如“1999-06-17 12:30:43”。
    DATETIME和TIMESTAMP的区别在于:DATETIME的年份在1000~9999之间,而TIMESTAMP的年份在1970~2037之间,还有就是TIMESTAMP在插入带微秒的日期时间时将微秒忽略。TIMESTAMP还支持时区,即在不同时区转换为相应时间。 需要要特别注意的是,MySQL 是按年-月-日的顺序表示日期的。中间的间隔符“-”也可以使用如“\”、“@”或“%”等特殊符号。日期时间常量的值必须符合日期和时间的标准,如这样的日期是错误的:’1996-02-31’。
    如下是日期时间常量的例子:
SELECT '2008-05-12 14:28:24:00';
  • 位字段值:可以使用b’value’符号写位字段值。value是一个用0和1写成的二进制值。位字段符号可方便地指定分配给BIT列地值。直接显示b’value’的值可能是一系列特殊的符号。例如,b’0’显示为空白,b’1’显示为一个笑脸图标。
    使用BIN函数可以将位字段常量显示为二进制格式。使用OCT函数可以将位字段常量显示为数值型格式。例:
SELECT BIN(b'111101'+0), OCT(b'111101'+0);
  • 布尔值:它只包含两个可能的值,分别为TRUE和FALSE。其中,FALSE的数字值是”0”,TRUE的数字值是”1”。
SELECT TRUE=FALSE;
SELECT TRUE=TRUE;
SELECT TRUE;
SELECT FALSE;
  • NULL值:表示”没有值”、”无数据”等意义,它与数字类型的”0”或字符串类型的空字符串是完全不同的。

    2) 变量

    变量用于临时存储数据,变量中的数据会随着程序的运行而变化。
    变量有变量名和数据类型两个属性。
    变量名用于标识变量;数据类型用于确定变量中存储数值的格式和可执行的运算。
    在MySQL中,变量分为用户变量和系统变量。在使用时用户变量前常添加一个符号”@”用于将其与列名区分开;而大多数系统变量应用于其他SQL语句中时,必须在系统变量名称前添加两个”@”符号。

    #用户变量定义
    SET @mysql='mysql';SET @mysql:='mysql';
    #用户变量使用
    SELECT @mysql;

3)运算符

MySQL提供了如下几类编程语言中常用的运算符。

  • 算数表达式:+(加)、-(减)、*(乘)、/(除)、%(求模)
  • 位运算符:&(位与)、|(位或)、^(位异或)、~(位取反)、>>(位右移)、<<(位左移)
  • 比较运算符:=(等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<>(不等于)、!=(不等于)、<=>(相等或都等于空)
  • 逻辑运算符:NOT或!(逻辑非)、AND或&&(逻辑与)、OR或||(逻辑或)、XOR(逻辑异或)

4)表达式

表达式是常量、变量、列名、复杂计算、运算符和函数的组合。一个表达式通常可以得到一个值。与常量、变量一样,表达式的值也具有某种数据类型,可能的数据类型有字符类型、数值类型、日期时间类型。因而,根据表达式的值的数据类型,表达式可分为字符型表达式、数值型表达式和日期表达式。

5)内置函数

编写MySQL脚本时可直接调用系统提供的内置函数对表进行相关操作。MySQL中包含100多个函数,可分为以下几类:

  • 数学函数,如:ABS(),SORT();
  • 聚合函数,如:COUNT();
  • 字符串函数,如:ASCII(),CHAR()
  • 日期和时间函数,NOW(),YEAR()
  • 加密函数,ENCODE(),ENCRYPY()
  • 控制流程函数,IF(),IFNULL()
  • 格式化函数,FORMAT();
  • 类型转换函数,CAST();
  • 系统信息函数,USER(),VERSION();

明日预告:【SQL与关系数据库概述】第三节 数据定义(DDL)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值