SQL是一种描述性编程语言。对于过程语言(如c),在编写程序时,必须指定导出结果所需的每个步骤。使用名为SQL的说明语言,只需说明想要的内容。不需要知道访问路径,只需提供what to do即可。how to do不需要注明。是面向汇编的操作方式,仅用于9个动词。
因此,标准的SQL没有传统的流程控制结构,如if-then-else、for等语句。SQL是交互式式或嵌入式语言。在交互式SQL环境中,用户输入的SQL命令直接发送到数据库管理系统,得到结果后立即显示。DBMS的服务器同时拥有图形和命令行工具,用一接受用户输入的SQL语句或包含SQL程序(脚本)的文本文件。
在开发数据库应用程序时,可以将SQL语句“嵌入”到编写程序所用的宿主语言(host language)中。宿主语言通常是一种通用语言(如C++、Java)或脚本语言(如PHP或Python).如一个PHP CGI脚本可以用SQL语句来查询MySQL数据库,MySQL交查询的结果返回给PHP变量,以便进一步分析或显示在网页上。
但在DBMS、宿主语言或操作环境中,语法上略有差异。
SQL表示“结构化查询语言”是一种变通的误解。它不是结构化的,不只用于查询,不是一种过程语言。
目前所有的关系型数据库管理系统如oracle、SQL Server、DB2、VFP都支持SQL。
查询只是SOL语言的重要组成部分,但不是全部。
数据定义:对表、表结构的操作,用create、drop、alter三个命令动词;
数据操作:对表记录的操作,用insert、delete、update三个命令动词;
数据控制:用grant、revoke二个命令动词;
数据查询:只有selec一个命令动词。
整个SQL,共9个命令动词对表、对表中列、行的操作:
创建、更改和删除表;
插入、更新和删除行;
查询(从n表中)选择列,筛选行;
数据定义语句:对表或表结构的操作 | Create | |
Alter | ||
Drop | ||
数据操作语句:对表记录的操作 | Insert | |
Update | ||
Delete | ||
数据查询语句 | Select | |
数据控制语句 | Grant | |
revoke |
student(学生表):
son char(5) 学号
sname char(20) 姓名
ssex tinyint(1) 性别
sage char(3) 年龄
sdept char(20) 所在系
1 增(记录)
INSERT INTO student (son,sname) VALUES('17050600156','Henrry')
2 查(记录)
SELECT sname,sage FROM student WHERE sage<20
(查询所有年龄在20岁以下的学生姓名及其年龄)
Select的选择项可以是表文件中的一个字段,也可以是一个常量,也可以是一个表达式,对于字段和表达式还可以使用下列函数:avg、sum、count、min、max等。
索引是排序的列表,在这个列表中索引列(或列表)的每个不同值和包含该值的行的硬盘地址存储在一起。DBMS无需检索整个表来定位行,而仅需扫描索引中的地址,就可以直接访问相应列。索引搜索通常要比顺序搜索快,但也是有代价的。其实质也就是另建了一张反映被索引表的行的地址清单。
3 删(记录)
DELETE FROM student WHERE sname = 'Henrry'
4 改(记录)
UPDATE student SET sname = 'Penny' WHERE sname = 'Henrry'
5 补充
SQL的三级模式:
外模式:视图
模式:基本表
内模式:存储文件
视图是存储的select语句,它能返回基于一个或多个表(或称作基础表)检索得到的数据表;
视图的基础表可以是基本表、临时表或其他视图,是指定的数据列或数据行的集合。
CREATE VIEW view-customes ...AS SELECT ...
创建视图并不会有任何显示,只是为了让DBMS用一个命名的select语句存储视图,然后通过其检索数据。
reference:http://www.w3school.com.cn/sql/sql_select.asp
-End-