MySQL(四)字段及常用函数

一、字段

数据库表中的每一行叫做一个“记录”,每一个记录包含这行中的所有信息,但记录在数据库中并没有专门的记录名,常常用它所在的行数表示这是第几个记录。

在数据库中存放在表行列交叉处的数据叫做“值”,它是数据库中最基本的存储单元,它的位置要由这个表中的记录和字段来定义。

1、字段(filed):与对象或类关联的变量(大多数时候,与列的意思相同);每个字段由若干按照某种界限划分的相同数据类型的数据项组成。

但有时候,字段不是表中的列,而是在计算字段的连接上;

2、拼接(concatenate):用来拼接2个列的函数,可将值联结到一起构成单个值

PS:多数DBMS使用+或者||实现拼接,MySQL则使用concat()函数来实现(当把SQL语句转换为MySQL语句时,要注意这个区别)

concat()函数:拼接串,即把一个或多个串连接起来形成一个较长的串;需要一个或多个指定的串,各个串之间用逗号分隔

3、别名(alias):一个字段或值的替换名,别名用as关键字赋予(比如上面例子中的abc),有时也称为导出列(derived column)

别名的作用:

①指示SQL创建一个包含指定计算的计算字段

②在实际的表列名包含不符合规定的字符(如空格)时重新命名它

③在原来的名字含混或容易误解时扩充它

4、算数操作符:计算字段时常用的操作符

计算字段的常见用途就是对检索出的数据进行算数计算,MySQL基本操作符如下:

MySQL(四)字段及常用函数

其中,圆括号()可用来区分优先顺序

二、数据处理函数

1、特点

SQL支持利用函数来处理数据,函数一般都是在数据上执行的

函数没有SQL的可移植性强(能运行在多个系统上的代码称为可移植的{portable}),多数SQL是可移植的

函数可移植性不强(几乎每种主要的DBMS的实现都支持其他实现不支持的函数,而且有时差异很大)

PS:如果使用函数,应保证做好代码注释,以便日后使用时可以确切知道所编写的SQL代码的含义

大多数SQL实现支持一下类型函数:

①用于处理文本串(删除填充值,转换值大小写等)的文本处理函数

②用于在数值数据上进行算数操作(如返回绝对值,进行代数运算)的数值处理函数

③用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期之差,检查日期有效性等)的日期和时间处理函数

④返回DBMS正在使用的特殊信息(如返回用户登陆信息,检查版本细节等)的系统函数

2、文本处理函数

例子:select column upper(column) as column1 from table order by column;

常见的文本处理函数表如下:

MySQL(四)字段及常用函数

soundex是一个将任何文本串转换为描述其语音表示的字母数字模式的算法;soundex考虑了类似的发音字符和音节,使得能对串进行发音比较而不是字母比较(多数DBMS都提供对其的支持)

3、数值处理函数

数值处理函数仅处理数值数据,这些函数一般主要用于代数、三角或几何计算,使用频率相对不是太高(在主要的DBMS中,数值函数是最统一最一致的函数)

常用数值处理函数表如下:

MySQL(四)字段及常用函数

4.日期和时间处理函数

日期和时间采用相应的数据类型和特殊的格式存储,一遍可以快速有效的排序或过滤,并且节省物理存储空间

一般来说应用程序不适用用来存储日期和时间的格式,因此日期和时间函数总是被用来读取、统计和处理这些值(日期和时间函数在MySQL语言中具有重要的作用)

常用日期和时间处理函数表如下:

MySQL(四)字段及常用函数

PS:对于日期,无论插入更新还是使用where子句进行过滤,日期格式必须为yyyy-mm--dd,而且应始终使用4位数字的年份

如果需要的是日期值,使用date()函数是一个好习惯;如果想要时间值时,time()函数也是最好的选择

例子:select column1, column2 from table where date(table_date) between '2013-05-20' and '2014-5-20';

其中between操作符用来把2013-05-20和2014-05-20定义为一个要匹配的日期范围

select column1, column2 from table where year(table-date) = 2013 and month(table_date) = 5;

year()是一个日期(从日期时间)中返回年份的函数,month()从日期中返回月份;

因此,where year(table-date) = 2013 and month(table_date) = 9检索出table_date为2013年5月的所有行!

上一篇:求和(NOIP2015)


下一篇:Servlet-转发和重定向的区别