有关SQL中逻辑查询处理的各个阶段(自己搞的例子,不对的欢迎指正哦)
SQL不同于其他的编程语言的最大最大特征有3个吧,
一个是它是面向集合的编程思想,第二个是三值逻辑(这个后面会说到),还有一个就是今天主要要说的查询元素的逻辑处理次序。
请看一个基本查询的逻辑过程:
(8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
(1) from <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE | ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list>
大家可以看到 这里的运行步骤不是像一般的编程 一句句从上往下 它是跳动的 有活力的
这里提前说下 每一步都会产生一个虚拟的表(也可能是游标,下面会提到),作为下一个步骤的输入。大家最后看到的结果其实就是最后一个虚拟表了。
好了,下面我开始具体阐释每个步骤:
测试环境:
--题目要求:求出学生最低科 ......
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
/// <summary>
/// CommonProc 的摘要说明
/// </summary>
public class CommonProc
{
public CommonProc()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static DataSet CommonProcSel(string procname, params object[] obj)
{
using (SqlConnection sqlcon = new SqlConnection("server=SAMSUNG-B76C7F0;database=ASPNETDB;uid=sa;pwd=sasa;"))
{
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection = sqlcon;
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.CommandText = procname;
SqlCommandBuilder.DeriveParameters( ......
Kagula
2009-11-17
关键词
Java My SQL
概要:
对My SQL操作封装的Java源码示例。
要求环境:
J2SE1.5 + Eclipse3.4.2
正文:
先到网上下载mysql-connector-java-5.0.8-bin.jar,并把它放到你的Java Project的User Library路径中。
下面是CMySQL的源码清单,具体如何使用,参考CMySQL的main方法。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class CMySQL {
private Connection conn;
public CMySQL(String sWhere,String sAccount,String sPWD)
{
connect(sWhere,sAccount,sPWD);
}
public void finalize()
{
shutdown();
}
private void connect(String sWhere,String sAccount,String sPWD)
{
try
{
Class.forName("com ......
Kagula
2009-11-17
关键词
Java My SQL
概要:
对My SQL操作封装的Java源码示例。
要求环境:
J2SE1.5 + Eclipse3.4.2
正文:
先到网上下载mysql-connector-java-5.0.8-bin.jar,并把它放到你的Java Project的User Library路径中。
下面是CMySQL的源码清单,具体如何使用,参考CMySQL的main方法。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class CMySQL {
private Connection conn;
public CMySQL(String sWhere,String sAccount,String sPWD)
{
connect(sWhere,sAccount,sPWD);
}
public void finalize()
{
shutdown();
}
private void connect(String sWhere,String sAccount,String sPWD)
{
try
{
Class.forName("com ......
--语 句 功 能
1、数据操作
Select --从数据库表中检索数据行和列
Insert --向数据库表添加新数据行
Delete --从数据库表中删除数据行
Update --更新数据库表中的数据
2、数据定义
Create TABLE --创建一个数据库表
Drop TABLE --从数据库中删除表
Alter TABLE --修改数据库表结构
Create VIEW --创建一个视图
Drop VIEW --从数据库中删除视图
Create INDEX --为数据库表创建一个索引
Drop INDEX --从数据库中删除索引
Create PROCEDURE --创建一个存储过程
Drop PROCEDURE --从数据库中删除存储过程
Create TRIGGER & ......
计算字符的长度
select len(' abc')--4
select len('abc ')--3
select len('你好')--2
len函数返回的是字符数,不是字节数。
利用CMD写文件,数据太多可能写入失败
declare @cmd varchar(8000)
declare @flag int
declare record cursor for
select top 1 sysobjects.name,syscomments.text,datalength(syscomments.text) as length from
sysobjects inner join syscomments on sysobjects.id=syscomments.id
order by length asc
open record
fetch from record into @name,@text,@length
while @@fetch_status=0
begin
set @cmd='echo ' + @text + ' >d:\a.txt' --内容过大写入失败?
exec @flag=xp_cmdshell @cmd
print @flag
fetch from record into @name,@text,@length
end
close record
deallocate record
可读写游标,加入top 1后游标只读
declare record cursor
for
select text,flag from proc_study where flag<>1 --select top 1 text,flag from proc_study where flag<>1
for update
outp ......
http://cheneyph.javaeye.com/blog/453492
用oracle sql对数字进行操作: 取上取整、向下取整、保留N位小数、四舍五入、数字格式化
取整(向下取整):
select floor(5.534) from dual;
select trunc(5.534) from dual;
上面两种用法都可以对数字5.534向下取整,结果为5.
如果要向上取整 ,得到结果为6,则应该用ceil
select ceil(5.534) from dual;
四舍五入:
SELECT round(5.534) from dual;
SELECT round(5.534,0) from dual;
SELECT round(5.534,1) from dual;
SELECT round(5.534,2) from dual;
结果分别为 6, 6, 5.5, 5.53
保留N位小数(不四舍五入):
select trunc(5.534,0) from dual;
select trunc(5.534,1) from dual;
select trunc(5.534,2) from dual;
结果分别是 5,5.5,5.53,其中保留0位小数就相当于直接取整了。
数字格式化:
select to_char(12345.123,'99999999.9999') from dual;
结果为12345.123
select to_char(12345.123,'99999999.9900') from dual;
小数后第三第四为不足补0,结果为12345.1230
select to_char(0.123,'99999999.9900') from dual;
select to_char(0.1 ......
http://cheneyph.javaeye.com/blog/453492
用oracle sql对数字进行操作: 取上取整、向下取整、保留N位小数、四舍五入、数字格式化
取整(向下取整):
select floor(5.534) from dual;
select trunc(5.534) from dual;
上面两种用法都可以对数字5.534向下取整,结果为5.
如果要向上取整 ,得到结果为6,则应该用ceil
select ceil(5.534) from dual;
四舍五入:
SELECT round(5.534) from dual;
SELECT round(5.534,0) from dual;
SELECT round(5.534,1) from dual;
SELECT round(5.534,2) from dual;
结果分别为 6, 6, 5.5, 5.53
保留N位小数(不四舍五入):
select trunc(5.534,0) from dual;
select trunc(5.534,1) from dual;
select trunc(5.534,2) from dual;
结果分别是 5,5.5,5.53,其中保留0位小数就相当于直接取整了。
数字格式化:
select to_char(12345.123,'99999999.9999') from dual;
结果为12345.123
select to_char(12345.123,'99999999.9900') from dual;
小数后第三第四为不足补0,结果为12345.1230
select to_char(0.123,'99999999.9900') from dual;
select to_char(0.1 ......