数据库系列(5):SQL查询
发布时间:2023-02-06 13:45:30 所属栏目:MySql教程 来源:
导读: SQL (Structured Query Language:结构化查询语言) 是用来访问和操作数据库系统的,是一门ANSI 的标准计算机语言。目前最为广泛使用的数据库查询语言就是SQL了,尽管我么说SQL语言是一种“查询语言”,
|
SQL (Structured Query Language:结构化查询语言) 是用来访问和操作数据库系统的,是一门ANSI 的标准计算机语言。目前最为广泛使用的数据库查询语言就是SQL了,尽管我么说SQL语言是一种“查询语言”,但是处理数据库查询,它还具有很多其他功能,可以定义数据结构,数据插入、更新和删除,以及数据访问控制等。 历史 SQL最早的版本由IBM开发,最初叫Sequel,后来更名为SQL(结构化查询语言),因为有很多的产品都支持SQL语言,所以需要为它制定一套标准,大家都按照标准做事。于是出现了SQL-86,SQL-2003,SQL-2011这些标准参考文献。 SQL的组成 数据定义语言(DDL,DATE DEFINITION LANGUAGE),DDL定义修改/删除关系模式的命令,用来定义数据库机构或者schema。DDL不仅能定义一组关系,还能定义属性的类型,索引集合,物理存储结构等。 CREATE DATABASE - 创建新数据库 ALTER DATABASE - 修改数据库 CREATE TABLE - 创建新表 ALTER TABLE - 变更(改变)数据库表 DROP TABLE - 删除表 CREATE INDEX - 创建索引(搜索键) DROP INDEX - 删除索引 数据操纵语言(DML,DATA MANIPULATION LANGUAGE),DML提供从数据库中查询信息,以及增加/修改/删除记录的命令。 SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据 数据控制语言(DCL,DCL-DATA CONTROL LANGUAGE),DCL用来授予或回收访问数据库的某种特权。 GRANT-允许用户访问数据库的权限 DENY-在安全系统中创建一项,以拒绝给当前数据库内的安全帐户授予权限并防止安全帐户通过其组或角色成员资格继承权限 REVOKE-撤消使用GRANT命令给出的用户访问权限 务控制语言 (TCL-TRANSACTION CONTROL LANGUAGE),TCL用来管理DML语句造成的变化。 SET TRANSACTIION-指定事务的特征 ROLLBACK-在发生任何错误的情况下回滚事务 COMMIT-提交事务 SAVEPOINT - 回滚在组内创建点的事务 SQL查询 SQL查询的基本结构有3个子句构成:select、from和where。 from子句列出的关系(集合)作为输入,然后在from子句列出的这些关系(集合)上进行where和select子句的指定运算,然后产出一个关系(集合)作为结果,称为结果集。 select子句:列出查询集合中所需要的属性(不是所有的属性都是这次查询所需要的) from子句:要得到查询集合必须要访问的关系列表 where子句:是一个作用在from子句中的关系属性上的谓词 一个典型的SQL查询具有以下形式: select A1, A2, A3, ...., An from r1, r2, r3, ..., rn, where P; 每个An代表一个属性,每个rn代表一个关系,P是筛选条件,如果省略了where子句,则P为true。 如: select name from ad; 结果就是由属性名是name的单个属性构成的关系。 select id, name from ad; 结果就是由属性名是id和name2个属性构成的关系。 在关系模型的形式化数学定义中,关系是一个集合,理论上集合中的元素不应该是重复的。但是在实践中,去除重复相当的耗时,所以SQL允许结果中出现重复,如果我们想强制去除重复,我们可以在select后加上关键词distinct select distinct name from ad; AS子句(别名) SQL查询嵌套 我们知道,SQL查询的结果是一个集合,SQL的from子句后面也跟着集合,那from子句能不能跟着 一个SQL查询结果呢?答案是可以的。 但是 from 子句后面跟的是一个显性关系,需要制定关系名称,同时SQL查询的结果可以理解为一个匿名的集合数据库查询操作,那我们如何才能对这个结果二次使用呢? 我们知道使用AS可以为表(集合、关系)提供一个别名,这样在一个查询中我们就可以显性的把这个结果作为from 子句的内容。 select ID from (select * from core_org) as a; (select * from core_org) 作为一个集合,同时给予别名a,然后把a 作为from子句的内容,从这个输入源中选择ID属性,最后得到只有一个ID属性的关系集合。 提示 尽管语法上需要以select、from、where的顺序写出, 但是首先from,然后where,最后select理解上可能会更顺点。 首先指定数据源,然后指定筛选条件,然后选出所需数据(从数据源中选出自己需要的内容)。 select id from core_org where core_org.id = 1; select org.id from core_org as org where org.id = 1; select id from core_org as org where org.id = 1; #以上3种写法,效果是一样的 select id from core_org as org where core_org.id = 1; # as使原始的core_org 不再有效,这种写法会报Unknown column 'core_org.id' 错误 (编辑:我爱资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


