一、 简单查询
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
SELECT nickname,email
FROM testtable
WHERE name=张三
(一) 选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列
例如,下面语句显示testtable表中所有列的数据:
SELECT
FROM testtable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:
SELECT nickname,email
FROM testtable
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
列标题=列名
列名 列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:
SELECT 昵称=nickname,电子邮件=email
FROM testtable
4、删除重复行
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:
SELECT TOP 2
FROM testtable
SELECT TOP 20 PERCENT
FROM testtable
(二)FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
SELECT username,citytablecityid
FROM usertable,citytable
WHERE usertablecityid=citytablecityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
(二) FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
SELECT username,citytablecityid
FROM usertable,citytable
WHERE usertablecityid=citytablecityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
例如上面语句可用表的别名格式表示为:
SELECT username,bcityid
FROM usertable a,citytable b
WHERE acityid=bcityid
SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。
例如:
SELECT aau_fname+aau_lname
FROM authors a,titleauthor ta
(SELECT title_id,title
FROM titles
WHERE ytd_sales>10000
) AS t
WHERE aau_id=taau_id
AND tatitle_id=ttitle_id
此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。
(三) 使用WHERE子句设置查询条件
WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:
SELECT
FROM usertable
WHERE age>20
WHERE子句可包括各种条件运算符:
比较运算符(大小比较):>、>=、=、、!>、!=10 AND age、>=、、!。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
SELECT
FROM authors AS a INNER JOIN publishers AS p
ON acity=pcity
又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):
SELECT a,ppub_id,ppub_name,pcountry
FROM authors AS a INNER JOIN publishers AS p
ON acity=pcity
(二)外连接
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:
SELECT a,b FROM luntan LEFT JOIN usertable as b
ON ausername=busername
下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:
SELECT a,b
FROM city as a FULL OUTER JOIN user as b
ON ausername=busername
(三)交叉连接
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于68=48行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
1、如果你想查数据库中所有的表的话,可以查询
SELECTFROMdba_tables
2、如果你想查询数据库中某个用户下的表的话,也可以登录这个用户,再查询:
SELECTFROMUSER_TABLES
3、要想导入外部sql语句可以用命令
sql>@e:文件名sql
如你想保存selectfromtablename;语句的结果,可以在sqlplus里面这样:
SPOOLc:testsql//
这是保存文件的位置
selectfromtablename;
SPOOLOFF
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Strict//EN"
">
原定计划从本篇开始就要给大家介绍 ASP 内建的 ActiveX
组件 但是考虑到我们在往后的学习中将会接触到大量的数据库查询 因此作者临时决定花一到两篇的篇幅向大家简要介绍一些数据库查询语言的基本知识 这其实也是学习
ASP
所必须掌握的一门知识 是否能够灵活地运用数据库查询语言 将直接关系到
ASP 程序的执行效率等一系列问题 所以请各位务必重视
相信很多朋友都听说过 SQL
这个名字 如果你是计算机方面的行家 SQL
的大名一定是如雷贯耳 那么 SQL 究竟是什么呢SQL 一词实际上是
"Structured Query Language"
结构式查询语言的缩写 是用于对存放在计算机数据库中的数据进行组织 管理和检索的一种工具;是一种特定类型的数据库
关系数据库 而控制这种数据库的计算机程序就是我们常说的
DBMS 数据库管理系统 譬如 SQL Server Oracle Sybase DB
等等 当用户想要检索数据库中的数据时 就通过 SQL
语言发出请求 接着 DBMS 对该 SQL
请求进行处理并检索所要求的数据 最后将其返回给用户 此过程被称作为数据库查询 这也就是数据库查询语言这一名称的由来
SQL 并不是象 C COBOL 和 Fortran 语言那样的完整的计算机语言 SQL
没有用于条件测试的 IF 语句 也没有用于程序分支的 Goto
语句以及循环语句 For 或 Do 确切的讲 SQL 是一种数据库子语言 SQL
语句可以被嵌入到另一种语言中 从而使其具有数据库存取功能 SQL
也非严格的结构式语言 它的句法更接近英语语句 因此易于理解 大多数
SQL 语句都是直述其意 读起来就象自然语言一样明了 SQL
还是一种交互式查询语言 允许用户直接查询存储数据 利用这一交互特性 用户可以在很短的时间内回答相当复杂的问题 而同样问题若让程序员编写相应的报表程序则可能要用几个星期甚至更长时间
在大部分 ASP 应用程序中我们都会接触到数据库 而我们在编写
ASP 应用程序时用来进行数据库 *** 作的标准语法正是 SQL 因此 SQL
语法的重要性是不言而喻的 下面 我们就从最常用的 SQL 语句 SELECT
着手 一步一步地来学习 SQL
查询是 SQL 语言的核心 而用于表达 SQL 查询的 SELECT
语句则是功能最强也是最为复杂的 SQL
语句 它从数据库中检索数据 并将查询结果提供给用户 在本文中我们将建立一个名为
tianjiao 的简单数据库 该库中存放了一个叫 sales
的销售记录表 如下所示 :
姓名
性别
工资
销售目标
销售额
地区
书生
男
上海
吴冠军
男
北京
雷鸣
男
四川
雪儿
女
广州
顾一
男
大连
阿卓
女
天津
熠天
男
全国
在该表中有六列即六个字段 :
姓名 性别 工资 销售目标 销售额 地区 首先我们用 Select
语句列出姓名 销售目标和销售额 :
Select 姓名 销售目标 销售额 From sales
结果如下 :
姓名
销售目标
销售额
书生
吴冠军
雷鸣
雪儿
顾一
阿卓
熠天
然后 我们再列出所有男性的姓名 销售目标和销售额 :
Select 姓名 销售目标 销售额 From sales Where 性别 =" 男
"
结果如下 :
姓名
销售目标
销售额
书生
吴冠军
雷鸣
顾一
熠天
接下来 我们做一个相对复杂的查询 列出销售额大于销售目标的所有男性的姓名 销售目标和销售额 并且按销售目标排序
Select 姓名 销售目标 销售额
Form sales
Where 销售额 > 销售目标
And 性别 =" 男 "
Order By 销售目标
结果如下 :
姓名
销售目标
销售额
书生
雷鸣
顾一
熠天
大家可以看到 对于简单查询 SQL Select
语句和英文语法很相象 我们来分析一下 SELECT
语句的完整格式 它包括六个子句 其中 SELECT 和FROM
子句是必须的 其它子句可以任选 每个子句的功能如下 :
Select 子句列出所有要求 SELECT 语句检索的数据项 它放在
SELECT
语句开始处 指定此查询要检索的数据项 这些数据项通常用选择表表示 即一组用“ ”隔开的选择项 按照从左到右的顺序 每个选择项产生的一个列的查询结果 一个选择项可能是以下项目
( ) 列名 标识 FROM
子句指定表中的列 如果列名作为选择项 则 SQL
直接从数据库表中每行取出该列的值 再将其放在查询结果的相应行中
( ) 常数 指定在查询结果的每行中都放上该值
( ) SQL
表达式 说明必须将要放入查询结果中的值按表达式的规定进行计算
From 子句列出包含所要查询数据的表 它由关键字 FROM
后跟一组用逗号分开的表名组成 每个表明都代表一个包括该查询要检索数据的表 这些表称为此
SQL 语句的表源 因为查询结果都源于它们
Where 子句告诉 SQL
只查询某些行中的数据 这些行用搜索条件描述
Group By
子句指定汇总查询 即不是对每行产生一个查询结果 而是将相似的行进行分组 再对每组产生一个汇总结果
Having 子句告诉 SQL 只产生有 Group By
得到的某些组的结果 和 Where
子句一样 所需要的组也用一个搜索条件指定
Order By
子句将查询结果按一列或多列中的数据排序 如果省略此子句 则查询结果将是无序的
下面作者将提供一个简单但实用的运用 SQL 语句查询的 ASP
程序供大家参考
为了使大家更清楚更直接地了解 SQL 语法在 ASP
中的应用 我们先将查询的所有核心过程写成一个名为 query table 的SUB 然后利用
ASP 的服务器端包容功能调用该 SUB 请将以下语句剪贴到记事簿 保存为
subdBTable inc 文件 并置于虚拟目录 asptest 下:
< %
sub query table(inputquery)
set conntemp=server createobject("adodb connection")
conntemp open "DSN=Student;uid=student;pwd=aspmagic"
set rstemp=conntemp execute(inputquery)
howmanyfields=rstemp fields count
统计数据库中的列数
%>
< table border= >< tr>
< %
for I= to howmanyfields
%>
< td>< b>< %=rstemp(I) name%>< /B>< /TD>
< % next %>
< /tr>
< %
do while not rstemp eof
%>
< tr>
< % for I = to howmanyfields
thisvalue=rstemp(I)
If isnull(thisvalue) then
thisvalue="
如果字段为空 则将变量 thisvalue 的值定义为一个空格
end if%>
< td valign=top>< %=thisvalue%>< /td>
< % next %>
< /tr>
< %rstemp movenext
loop%>
< /table>
< %
rstemp close
set rstemp=nothing
conntemp close
set conntemp=nothingend sub%>
完成了 SUB 的定义过程 在下面几个 ASP
程序中我们只要加入想要使用的 SQL
查询语句 并调用该过程就可以非常方便的得到查询结果 将以下四段代码分别保存为
asp a asp asp b asp asp c asp asp d asp 四个 asp 文件
< HEAD>< TITLE>asp a asp< /TITLE>< /HEAD>
< HTML>< body bgcolor="#FFFFFF">
< %
call query table("select from publishers where name like A%% ")
将表 publishers 中所有姓名中有字母 A 的记录查询出来
%>
< ! #include virtual="/asptest/subdBTable inc" >< /BODY><
/HTML>
< HEAD>< TITLE>asp b asp< /TITLE>< /HEAD>< HTML><
body bgcolor="#FFFFFF">
< %
call query table("select from titles where Year_Published > = ")
将表 titles 中所有发表年份大于或等于 年的记录查询出来
%>
< ! #include virtual="/asptest/subdBTable inc" >< /BODY><
/HTML>
< HEAD>< TITLE>asp c asp< /TITLE>< /HEAD>< HTML><
body bgcolor="#FFFFFF">
< %
call query table("select from publishers where amount> and
sex= male ")
将表 publishers 中所有数量大于 且性别为男的记录查询出来
%>
< ! #include virtual="/asptest/subdBTable inc" >< /BODY><
/HTML>
< HEAD>< TITLE>asp d asp< /TITLE>< /HEAD>< HTML><
body bgcolor="#FFFFFF">
< %
call query table("select from publishers where state< > NY ")
将表 publishers 中所有所在城市不为纽约的记录查询出来
%>
< ! #include virtual="/asptest/subdBTable inc" >< /BODY><
/HTML>
利用 subdBTable inc 文件中的所定义的过程 query table 你就可以非常迅速地对数据库进行查询 你所要做的只是将“conntemp open
"DSN=Student;uid=student;pwd=aspmagic"”中的数据库名称 用户身份和密码稍加改动 并在调用
query table 时输入想要使用的 SQL 查询语句即可 是不是很简单
这就是 ASP 和 SQL 的魅力所在 !!!
今天 我们虽然用了一整篇的篇幅只学习了一个 SQL
指令 但请你相信你所获得远不同于一个 DOS 指令 SELECT
指令使得你可以非常容易地对数据库进行查询 或许在这之前你对数据库查询还一无所知 但是通过本篇的学习 你其实已经会使用
ASP 进行常用的数据库查询了 是不是很激动
lishixinzhi/Article/program/net/201311/14199
TABLE 语句
具体语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
其实从语法上看,可以排序,也可以过滤记录集,不过比较简单,没有 SELECT 那么强大。
示例 1
简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录
mysql-(ytt/3305)->create table t1 (r1 int,r2 int);
Query OK, 0 rows affected (002 sec)
mysql-(ytt/3305)->insert into t1
with recursive aa(a,b) as (
select 1,1
union all
select a+1,ceil(rand()20) from aa where a < 10
) select from aa;
Query OK, 10 rows affected (000 sec)
Records: 10 Duplicates: 0 Warnings: 0
简单全表扫描mysql-(ytt/3305)->select from t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (000 sec)TABLE 结果mysql-(ytt/3305)->table t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (000 sec)
看下 table 的执行计划mysql-(ytt/3305)->explain table t1 order by r1 limit 2\G 1 row id: 1 select_type: SIMPLE table: t1 partitions: NULL type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10 filtered: 10000 Extra: Using filesort1 row in set, 1 warning (000 sec)
其实可以看到 TABLE 内部被 MySQL 转换为 SELECT 了。mysql-(ytt/3305)->show warnings\G 1 row Level: Note Code: 1003Message: / select#1 / select `ytt``t1``r1` AS `r1`,`ytt``t1``r2` AS `r2` from `ytt``t1` order by `ytt``t1``r1` limit 21 row in set (000 sec)
那其实从上面简单的例子可以看到 TABLE 在内部被转成了普通的 SELECT 来处理。示例 2应用于子查询里的子表。这里要注意,内表的字段数量必须和外表过滤的字段数量一致。克隆表 t1 结构mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (002 sec)
克隆表 t1 数据mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (000 sec)Records: 10 Duplicates: 0 Warnings: 0
table t1 被当做内表,表 t1 有两个字段,必须同时满足 t2 检索时过滤的字段也是两个。mysql-(ytt/3305)->select from t2 where (r1,r2) in (table t1);+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (000 sec)
注意:这里如果过滤的字段数量和子表数量不一致,则会报错。
以上就是关于如何查询一个ACCESS数据库中的表名和字段全部的内容,包括:如何查询一个ACCESS数据库中的表名和字段、用oracle怎么查询当前数据库中的所有表、从数据库查询的结果以table的形式显示出来,如果我有一个td里面的内容很多,我只想显示一部分 后面用..显等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)