A. sql例题,高手在哪里
sql并不是所有的数据库都一样,我写的sql也不一定完全能用,可能要起别名或者什么的,要根据数据库自行选择和考虑,切勿全盘照抄。
第三小题,分步写的话,大概是下面的写法,
第一步:找出所有出版社为财经出版社的书号
第二步:找出所有销售了这些书的分店(直接找没销售的分店几乎不可能,因为一个分店可能卖很多出版社的图书)
第三步:找出剩下的分店,并输出结果
select 分店名,位置 from 分店 where 分店号 not in (select 分店号 from 销售 where 图书. in (select 图书号 from 图书 where 出版社='财经出版社'))
少嵌套一层是:
select 分店名,位置 from 分店 where 分店号 not in(select 销售.分店号 from 销售,图书 where 图书.出版社='财经出版社' and 销售.图书号=图书.图书号)
(4)这是两张表的关联,用不到分店表
select 图书.图书名,图书.作者,图书.单价 from 图书,销售 where 销售.图书号=图书.图书号 and 销售.分店号='B002' and 图书.出版社='电子出版社'
剩下三个小题大概写写,就不写具体语句了
(1)select * from 分店(只要列出了相应的字段就可以了)
(2)函数distinct(出版社)
(5)两个办法(但其实是一个办法):(1)用all函数(单价大于所有的财经出版社的单价的书),(2)max函数(单价只要大于最大值就可以了)
select * from table where 单价>(select max(单价) from table where 出版社='XXXX')
B. plsql脚本分步可以执行 @就不能执行
把每句后边的;删了,另换一行加/号
C. sql语句怎么写
是用 or 来表示的 将两个条件组合起来,在一个语句中使用多个逻辑运算符时,在and 运算符之后对or运算符求值,不过使用括号可以更改求值的顺序
D. SQL多表查询语句怎么写
SQL写多表查询语句的步骤如下:
我们需要准备的材料分别是:电脑、sql查询器。
1、首先,打开sql查询器,连接上相应的数据库表,例如m1表、m2表。
2、点击“查询”按钮,再输入:select
max(km)
from
m1
join
m2
on
m1.md=m2.md
where
id=14
and
lx=15。
3、点击“运行”按钮,此时查询到km的最大值为20。
E. Java 实现动态sql的分步提交
没理解你为啥要这样设计,为啥不直接前台确定后直接执行,或者如果你一定要这样搞,可以在要update的那个表里加个字段,比如值就默认为0,你要update的时候不直接做update,而是把那个字段的值改为1,前台确定后再查到这个为1的直接update
F. sql语句应该怎样写
sql语句将一个表的某个值加1或减1,直接用update语句即可。
工具:mysql 5.6
步骤:
1、如图,student表中有如下数据:
G. sql 分段查询语句怎么写
什么库? sqlserver access oracle?
access的话 还是在表里多设置一个字段让他自动增减吧!~
sqlserver的话
select identity(int,1,1) rownum,name into #temp from 表
select * from #temp where rownum>10 and rownum<=20
oracle最简单 有rownum可以直接用!~
H. sql 存储过程 概念
枯燥杂乱的网文不给你转了,用我自己的词汇给你组织一下这个概念吧:
你可以把存储过程当做:把一系列语句合并到一起的这么一个整体
我觉得举例说明比较好,给你个例子:
先将【表1】中ID号为50—2000的记录删除、
再将【表2】中的这些记录的状态(STATUS)改为“已解除”:
delete 表1 where ID > 50 and ID < 2000
update 表2 set STATUS = '已解除' where ID > 50 and ID < 2000
正常情况下,以上两条语句分步执行就可以了,如果要用存储过程呢?
先建立存储过程(以下的语法为Sybase数据库的,其他数据库类同):
create procere PRC_TEST (@start_ID int, @end_ID int)
as
begin
delete 表1 where ID > @start_ID and ID < @end_ID
update 表2 set STATUS = '已解除' where ID > @start_ID and ID < @end_ID
end
好了,执行这个语句,就将存储过程PRC_TEST提交到数据库里了,它有两个参数:start_ID int 和 end_ID,代表起始和终止ID号,类型为整数型int
怎么用这个存储过程呢? 这样执行:exc PRC_TEST 50, 2000
执行时,它先得到了两个参数,50、2000,分别赋值给start_ID int 和 end_ID,然后按照这两个参数分步执行封装在存储过程里的那两条语句了。
如果你这样执行:exc PRC_TEST 220, 8660
就是处理两个表中ID介于220—8660之间的记录了。
----------------------------------------------------------------------------
你也许会问了,既然可以分步执行的几句SQL,为什么要费力的写成存储过程啊?
主要是(我的经验和认识):
1、使数据处理参数化,对经常使用的一系列SQL进行封装,使其成为一个存储过程的整体,在每次执行时只要更换执行参数即可,不用去改里面每句SQL的where子句
2、★★这个很重要★★,假设你要循环处理某些数据,例如需要使用“游标”、“Do...while...语句”…………时,就要用到存储过程(或触发器)
=====================================================================
最后给你转一个短文吧,这是书面上的概念:
将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
那么存储过程与一般的SQL语句有什么区别呢?
存储过程的优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权
存储过程的种类:
1.系统存储过程:以prc_(或sp_)开头,用来进行系统的各项设定.取得信息.相关管理工作,
如 sp_help就是取得指定对象的相关信息
2.扩展存储过程 以XP_开头,用来调用操作系统提供的功能
exec master..xp_cmdshell 'ping 10.8.16.1'
3.用户自定义的存储过程,这是我们所指的存储过程
I. 写复杂SQL语句能力(电信行业报表SQL)
首先,我想说的是千万不要太着急,复杂的东西都是从简单开始的,你现在基本的东西都已经掌握了,现在主要是把基本的东西怎么组合起来。我也是在移动做运维的。刚开始情况跟你是一样的。
然后在看复杂SQL时,最好是能知道这个SQL是要完成什么目标的。(以下是我个人的方法)先看from,再看select的内容,再看where条件,对于group by ,join 可以更具select的内容一个一个的去看关联,如果太多可以用笔记一下。(不要想着能把所有脚本内容都能熟悉,我猜你们那的脚本也是经过很多人完成的,一个人一个思想,自己去琢磨别人的思想,确实比较难)。查找SQL问题要多看日志,从日志去定位出问题的脚本位置,慢慢的看的遍数多了,你也就熟悉了。(还是要说一下,千万不要急,每个人都是从不会到会,再到精通的)。
对于各种处理字段的函数,一定要多在网上搜一下,多理解一下这个函数的作用,这样才能灵活运用。
shell脚本的编写,可以先看一下基础教程,网上很多的,然后编写一下练习题,多看一下你们公司现有的资源,然后对照着你不懂的脚本,再去网上或书上去找答案,这样会加深你的理解。
先说到这吧,希望能对你有点帮助,有问题可以再互相沟通。(千万不要急奥,向着自己的目标前进吧。)
J. SQL语句怎么写
数据库1和数据库2都在一个mysql里吧?
不在的话,得做其他配置,让一个mysql能访问另一个mysql……这个我不会:D(刚才网络了下,需要在其中一个mysql里开启Federated引擎,然后在这个mysql里创建一张表,并用Federated引擎把这个表指向另一个mysql中的对应表,然后就可以从当前mysql中访问本地的表1和映射到本地的表2(刚刚创建的那张)了。详细教程见CSDN文章网页链接)
如果都在一个mysql里:
假设数据库1的名称是"database1",里面的表名是"table1",数据库2的名称是"database2",里面的表名是"table2",部门字段名为"dept",数量字段名为"num"
sql语句如下:
SELECT
dept,
SUM(num)
FROM
(
SELECT
database1.table1.dept,
database1.table1.num
FROM
database1.table1
UNION
SELECT
database2.table2.dept,
database2.table2.num
FROM
database2.table2
)a
GROUPBY
dept