SELECT A,B=stuff((select ' ' + '字段C:' + C + ',字段D:' + D) + ';' from tbl WHERE (key= '条件') for xml path('')) , 1 , 1 ,'')
from tbl
WHERE (key= '条件')
group by key
例如:一个表中key为AA的记录有2条,第一条中字段C的值为CC,字段D的值为DD,第二条中字段C的值为CCC,字段D的值为DDD,那么执行改语句后的结果为:A=AA,B=CC,DD;CCC,DDD ......
本系列,或多或少,直接或间接依赖入门系列知识。但,依然追求独立成章。因本文作者水平有限,文中错误难免,敬请读者指出并谅解。本系列将会和入门并存。
案例
某君被邀为一超市设计数据库,用来存储数据。该君根据该超市中实际出现的对象,设计了Customer, Employee,Order, Product等表,用来保存相应的客户,员工,订单,货品等。太好了,该君很有oo的思想吗。
如果,你被要求用类及对象,来描述该关系型数据,你该如何做呢?在linq推出之前,ADO.NET被用来做数据访问层。而后,程序员需要自己去编写事务逻辑层中所出现的类。比如,Customer, Employee,Order, Product等。然后,程序员组装所需的sql语句,通过ADO.NET,将返回的记录,来初始化Customer等类的对象。在这里,你已经自己动手将Customer表和Customer类关联了起来。从Linq To Sql的设计来看,它主要是为了解决data!=objects 的问题而产生的。现在,有了Table和Class之间的映射,数据和对象之间就可以有一个一一对应的关系了。
在Linq To Sql之前,在java领域有Hibernate,在net领域有NHibernate技术,来实现object/relational 持久和查询服务。无论是Hibernate还是NHibernate,其配置复杂,上手时间长,已 ......
Mysql安装
返回主目录
Mysql的安装文件可以直接到 http://www.mysql.com 下载,获得for win32的.zip包,建议选择4.0.20d版本。这里不详细说明。
下载获得Mysql的for win32安装包后,用winzip解压缩,直接运行setup.exe,需要注意的是选择一个安装路径,当然,安装路径可以任意,建议选择C:\MySQL目录。安装完成后MySQL也就完成了。默认的用户名是root,密码为空。
Mysql安装完成后,请通过开始-程序-附件-命令提示符进入:
录入cd C:\mysql\bin 并按下回车键,将目录切换为 cd C:\mysql\bin
在 C:\mysql\bin> 命令提示符下录入 mysqld-nt -install 命令,然后按下回车,如果出现 Service successfully installed 的提示, 这表示你已成功的将 MySQL 安装成一项 Windows 的服务。
点击 开始-程序-管理工具-服务 ,你可以看到Mysql已经成为众多服务项目中的一项,不过此时它还未被启动, 因此接下来我们就来启动它。
启动 MySQL 服务的方法有以下三种,请自行选择其中一种来进行:
重启机器时自动启动它
在服务窗口中选取 MySQL 服务名称,然后按下启动按钮来启动它
在“命令提示字符”窗口中输入 NET START ......
以ORACLE数据库为例, 将tab表中的tname字段转成以逗号分隔的字符串
SQL如下:
select substr(max(sys_connect_by_path(tname, ',')), 2)
from (
select b.tname, b.t1, lead(b.t1, 1) over (order by b.t1) t2
from (
select a.tname, row_number() over (order by tname desc) t1 from tab a
) b
)
start with t2 is null
connect by prior t1 = t2; ......
第一部分 基本概念
一、查询系统表
select * from user_tables 查询当前用户所有表
select * from user_triggers 查询当前用户所有触发器
select * from user_procedures 查询当前用户所有存储过程
二、分组函数的用法:
max()
min()
avg()
sum()
count()
rollup()
注意:
1)分组函数只能出现在 group by ,having,order by 子句中,并且order by 只能放在最后
2)如果选择列表中有列,表达式和分组函数,那么列,表达式必须要出现在group by 函数中
3)当限制分组显示结果时,必须出现在having子句中,而不能在where子句中
rollup 函数 函数用于形成小合计
Group by 只会生成列相应数据统计
select deptno,job,avg(sal) from emp group by deptno,job;
rollup 会在原来的统计基础上,生成小统计
select deptno,job,avg(sal) ......
第一部分 基本概念
一、查询系统表
select * from user_tables 查询当前用户所有表
select * from user_triggers 查询当前用户所有触发器
select * from user_procedures 查询当前用户所有存储过程
二、分组函数的用法:
max()
min()
avg()
sum()
count()
rollup()
注意:
1)分组函数只能出现在 group by ,having,order by 子句中,并且order by 只能放在最后
2)如果选择列表中有列,表达式和分组函数,那么列,表达式必须要出现在group by 函数中
3)当限制分组显示结果时,必须出现在having子句中,而不能在where子句中
rollup 函数 函数用于形成小合计
Group by 只会生成列相应数据统计
select deptno,job,avg(sal) from emp group by deptno,job;
rollup 会在原来的统计基础上,生成小统计
select deptno,job,avg(sal) ......
两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。
其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。
创建可以采用两种方式:
1、已经配置本地服务
以下是引用片段:
create public database
link fwq12 connect to fzept
identified by neu using 'fjept'
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
2、未配置本地服务
以下是引用片段:
create database link linkfwq
connect to fzept identified by neu
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
)
(CONNECT_DATA =
( ......
两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。
其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。
创建可以采用两种方式:
1、已经配置本地服务
以下是引用片段:
create public database
link fwq12 connect to fzept
identified by neu using 'fjept'
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
2、未配置本地服务
以下是引用片段:
create database link linkfwq
connect to fzept identified by neu
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
)
(CONNECT_DATA =
( ......