当前位置: Oracle DBA培训网-优技培训 >> MySQL培训 > MySQL培训教程 >

MySQL基础知识:结构化查询语言SQL

MySQL基础知识:结构化查询语言SQL

MySQL基础知识:结构化查询语言SQL,MySQL使用结构化查询语言(Structured Query Language,SQL)与服务器通讯。MySQL系统使用的SQL语言基本上符合SQL92的标准,但是其对SQL92标准既有扩展,又有未实现的地方。

表、列和数据类型

表是数据在一个MySQL数据库中的存储机制,如表1-1所示,它包含一组固定的列。表中的列描述该表所跟踪的实体的属性,每个列都有一个名字及各自的特性。

列由两部分组成:数据类型(datatype)和长度(length)。对于使用NUMERIC数据类型的列,可以指定列的小数位及精度特性,精度决定数值的有效位数,小数位表示数值的小数点位置。说明为NUMERIC(9,2)的列表示该列总共有9位数,其中2位数在小数点右边。缺省的数值精度为10位数。

表1-1一个数据表teachers

Id

Name

Tel

Sex

1

Tom

62763218

M

2

Marry

21532777

F

3

Mike

45769021

M

4

Jerry

3245012

M

注意,在上表中你可能会有每行记录是按顺序记录的印象,假设你想取出表中的前十个记录。使用传统的编程语言,你可以做一个循环,取出前十个记录后结束循环。但使用标准的SQL查询,这是不可能实现的。因为在关系数据模型中,记录就是行是没有顺序的,也就是说,在一个表中不存在前十个记录这种概念。

函数

函数(function)是存储在数据库中的代码块。其差别在于函数可以把值返回调用程序。你可以建立自己的函数,并在SQL语句中调用它们,就像执行Oracle提供的函数一样。例如,MySQL提供一个SUBSTRING函数来执行字符串上的“取子串”操作,如果创建一个叫做MYSUB的函数来执行一个自定义的取子串操作,就可以在一个SQL命令中调用它:

SELECT MYSUB("This is a test",6,2)

SQL的语句

SQL是一种典型的非过程化程序设计语言,这种语言的特点是:只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这些操作是如何执行的,则未被指定。非过程化程序设计语言的优点在于它的简单易学,因此已经成为关系数据库访问和操纵数据的标准语言。

与之相对应的是过程化程序设计语言,我们平常熟悉的各种高级程序设计语言都属于这一范畴。这种语言的特点是:一条语句的执行是与其前后的语句和控制结构(如条件语句、循环语句等)相关的。与SQL相比,这些语言显得比较复杂,但优点是使用灵活,数据操纵能力非常强大。

这种语言被设计为不允许你按照某种特定的顺序来取出记录,因为这样做会降低SQLSever取记录的效率。使用SQL,你只能按查询条件来读取记录。

当考虑如何从表中取出记录时,自然会想到按记录的位置读取它们。例如,也许你会尝试通过一个循环,逐个记录地扫描,来选出特定的记录。在使用SQL时,你必须训练自己,不要有这种思路。

假如你想选出所有的名字是“Tom”的记录,如果使用传统的编程语言,你也许会构造一个循环,逐个查看表中的记录,看名字域是否是“Tom”。

这种选择记录的方法是可行的,但是效率不高。使用SQL,你只要说,“选择所有名字域等于Tom的记录”,SQL就会为你选出所有符合条件的记录。SQL会确定实现查询的最佳方法。

例如,我们从表1-1中取出id为1的数据:

SELECT * FROM teachers WHERE id=1

相同的功能用普通的高级语言,也许需要一个复杂的循环。

技术沙龙MORE+

标签错误:<!-- #Label# labelId=20160707140604 moduleId=1 classId=12231768634 orderby=2 fields=url,title,u_info attribute= datatypeId=22192428132 recordCount=3 pageSize= <htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate> -->
我要参加技术沙龙