
SQLSERVER很简单,登陆一个别的数据库,查询northwind数据库的category表的数据,可以写select from northwindcategories。
ORACLE需要创建一个DBLINK
1配置本地数据库服务器的tnsnamesora文件
$vi $ORACLE_HOME/network/admin/tnsnamesora
添加如下行,其中DBLINK为连接名(可自定义),HOST和PORT为数据库侦听的IP及端口,SERVICE_NAME为数据库的SID,
TESTDBLINK =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 1921681202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = TEST)
)
)
2登录本地数据库,创建DBLINK
执行如下查询语句,其中TESTDB为DBLINK名(可自定义),TESTDBLINK为先前在tnsnamesora中定义的连接名,dbuser为用户名,为密码
create database link TESTDB
connect to dbuser identified by
using 'TESTDBLINK';
3使用DBLINK,select from table_name@TESTDB;
select
name
from
v$database
,直接运行就可以查看了,也可以查看tnsnamesora
的连接,有个sid,sid就是服务名了!!!
--1、利用SQL语句创建以上三张表,并指定每张表的主键和外键;
--学生表(S):
create table student
(
sid varchar2(20) primary key,
sname varchar2(20),
age number,
sex varchar2(4),
department varchar2(20),
address varchar2(50),
birthplace varchar2(50)
);
--选课表(SC):
create table class
(
sid varchar2(20) references student(sid),
cid varchar2(20) primary key,
grade number
);
--教师表(C):
create table teacher
(
cid varchar2(20) references class(cid),
cname varchar2(20),
teacher varchar2(20)
);
--2、以上三张表各插入一条记录,
--记录值分别为:(s20110101,王林,20,男,经济管理系,浙江省杭州市西湖区168号,浙--江杭州)、
--(s20110101,1001,85)、(1001,网络数据库与应用,李小波);
insert into student
values
('s20110101',
'王林',
20,
'男',
'经济管理系',
'浙江省杭州市西湖区168号',
'浙江杭州');
insert into class values ('s20110101', '1001', 85);
insert into teacher values ('1001', '网络数据库与应用', '李小波');
--3、查询李老师所教的课程号、课程名称;
select cid, cname from teacher where teacher like '李%';
--4、查询年龄在23岁26岁之间的女学生的学号和姓名;
select sid, sname
from student
where sex = '女'
and age >= 23
and age <= 26;
--5、查询“李小波”所选修的全部课程名称;
select tcname
from student s, class c, teacher t
where ssid = csid
and ccid = tcid
and asname = '李小波';
--6、查询所有成绩都在90分以上的学生姓名及所在系;
select ssname, sdepartment
from student s, class c
where ssid = csid
and cgrade > 90;
--7、查询没有选修“ *** 作系统”课的学生的姓名;
select ssname
from student s, class c, teacher t
where ssid = csid
and ccid = tcid
and tcname = ' *** 作系统';
--8、查询与“李小波”同乡的男生姓名及所在系;
select sname, department
from student
where sex = '男'
and address in (select address from student where sname = '李小波')
and sname <> '李小波';
--9、查询英语成绩比数学成绩好的学生;
select ssname
from student s
where ssid in (select c1sid
from (select csid, cgrade
from class c, reachar t
where ccid = tcid
and tname = '英语') c1,
class (select csid, cgrade
from class c, reachar t
where ccid = tcid
and tname = '数学') c2
where c1sid = c2sid
and c1grade > c2grade);
--10、查询选修同一门课程时,女生比男生成绩好的学生名单;
select fsname
from (select ssname, ccid, cgrade
from student s, class c
where ssid = csid
and ssex = '女') f,
(select ccid, cgrade
from student s, class c
where ssid = csid
and ssex = '男') m
where fcid = mcid
and fgrade > mgrade;
--11、查询至少选修两门以上课程的学生姓名、性别;
select ssname, ssex
from student s, class c, teachar t
where ssid = csid
group by ssname, ssex
having count(distinct ccid) > 2;
--12、查询选修了李老师所讲课程的学生人数;
select count(distinct ssid)
from student s, class c, teacher t
where ssid = csid
and ccid = tcid
and tteacher like '李%';
--13、查询没有选修李老师所讲课程的学生;
select ssname
from student s, class c
where ssid = csid
and ccid not in (select cid from teacher where teacher like '李%');
--14、查询“ *** 作系统”课程得最高分的学生姓名、性别、所在系;
select sname, sex, department
from student s, class c, teacher t
where ssid = csid ccid = tcid
and cname = ' *** 作系统'
and cgrade in (select max(grade)
from class c1, teacher t1
where c1cid = t1cid
and cname = ' *** 作系统');
全部手打,望采纳。。。
首先,你要以dba身份登陆数据库。 第二,为某个用户开启sql跟踪。那个用户就是你要跟踪的、正在执行sql语句的那个用户。命令如下: execute dbms_systemset_sql_trace_in_session(sid,serial#,true) 其中参数的意义是,
简单来说:前半段是学过‘001’课程的学生,后半段是学过‘002’课程的学生;其中 where SC_2S#=SCS# 是把前后两段结果连接起来的关键,相当于把两个结果 Inner Join,从而得出最终结果同时学过‘001’和‘002’的学生。
先查SC表获取SID和对应所选课程按一定顺序排序的CID字符串的拼接(如学号01选了课程010203那么对CID进行字符串拼接成学号:01gc:01,02,03格式),获取01学生的gc字符串,再获取其它gc=01学生的gc排除01的SID最后查STUDENT信息根据获取的SID到此结束。
SQL功能
1、SQL数据定义功能:能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。在SQL中,外模式又叫做视图(View),全局模式简称模式(Schema),内模式由系统根据数据库模式自动实现,一般无需用户过问。
2、SQL数据 *** 纵功能:包括对基本表和视图的数据插入、删除和修改,特别是具有很强的数据查询功能。
百度百科-结构化查询语言
查看sqlserver用户SID
select DbRole = gname, MemberName = uname, MemberSID = usid
from sysdatabase_principals u, sysdatabase_principals g, sysdatabase_role_members m
以上就是关于可否用sql语句实现不在同一个服务器上的两个数据库的交互全部的内容,包括:可否用sql语句实现不在同一个服务器上的两个数据库的交互、查看oracle服务器中的所有数据库名命令、SQL网络数据库问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)