数据库当然就是用来存储数据的
只不过访问和查询比较快
sql是一种数据库描述语言
实际也就是程序语言
在主流编程语言中均支持
数据库管理软件主要有微软的ms
sql,
orcal,db2,和mysql
语法相似
最好学mysql
因为现在php比较流行
而php+mysql+alpha是主流的建站选择
B. 求sql 写法 数据按指定数量拆分最后不足,由一条数据补充
每箱300,也就是只要处理尾数,其余都是300。
如果用SQL也是可以通过循环表处理的,不过这个在程序里写逻辑会更清晰些,减少跟后台数据交换,不管效率上维护性上都推荐。
foreach(遍历你有多少批){
do while(总数>0){分配箱号;
if (总数>=300){
总数-300;
分配批次号+300;}
else{分配批次号+总数(其实就是尾数);
总数=0;
}
}
}
C. sql 补齐数据 语句
可以建个表biao1保存a的值,表biao2保存b的值,原来的表是biao0,
with
temp1 as (select biao1.a,biao2.b from biao1,biao2)
select temp1.a,temp1.b,nvl(biao0.value,0) from temp1 left join biao0 on biao0.a=temp1.a and biao0.b=temp1.b
D. 用SQL语言补充完整
1:
SELECT c.顾客号,c.顾客名,o.商品号,o.数量
from C,O
where c.顾客号=o.顾客号
2:
SELECT
FORM C,O
WHERE 顾客名=(SELECT 顾客号,max(数量) FORM O);
3:
SELET o.商品号、o.商品名,sum(数量)
FROM O,A,C,
WHERE o.商品号=a.商品号
and c.顾客号=o.顾客号
and c.性别='女'
GROUP BY O 商品号,商品名;
4:ALTER TABEL add 产地 char(30)
E. SQL自动补全数据的语句怎么写
Select right('000000'+convert(varchar(10),b),6) as b from a
F. sql数据补位
用lapd函数,左补零
用法
select LPAD(100,5,0) from al
100为字段名,5为补完后的长度,0为补充的字符
G. 请教用sql语句补充字段的问题
试下这个吧
UPDATE a, b SET a.通讯地址 = [B]![通讯地址]
WHERE (([A]![姓名]=[B]![姓名] And [A]![通讯地址] Is Null));
access的使用(对于SQL不熟的一点建议)
先切成 SQL视图 在里面写基本的update、select等
然后切成 设计视图 在里面用界面化设计
H. SQL语句补充完善,谢谢帮助
我这样理解不知道对不对!
1.你想获得各个地区N的总量大于N的平均值(当然这个比较好做,而你的方法也是对的但是我还可以补充一下,还有一个方法可以做到!那就是用 select..from....group by.... having+条件)
select
农田养分数据.sum_n_hl
from 农田养分数据
group by 农田养分数据.sum_n_hl
having 农田养分数据.sum_n_hl>avg(农田养分数据.sum_n_hl)
这样使用分组也可以查询!
2.你要得到各个地区N的总量小于N的平均值中最小的地区,所谓最小我们应该想到要用 min函数
最大当然使用 max函数:
步骤:
一.首先,我们可以根据1中的方法获得所有N含量<N的平均含量的所有地区,这样我们就可 以得知N含量<N平均含量最小的地区就在我们刚才所获得这些地区里面
select
农田养分数据.sum_n_hl
from 农田养分数据
where
农田养分数据.sum_n_hl<(select AVG(农田养分数据.sum_k_hl) from 农田养分数据)
二.那么我们已经知道了N含量最小的就包含在 "步骤一"中所查询到的地区里面,接下来我们只需要在这些地区中找到N含量最少的地区就好!
三.这是SQL语句:
select min(农田养分数据.sum_k_hl) from 农田养分数据
where 农田养分数据.sum_k_hl in (select 农田养分数据.sum_k_hl from 农田养分数据
where 农田养分数据.sum_k_hl <(select avg(农田养分数据.sum_k_hl) from 农田养分数据 )
这样的话问题就解决了!TSQL语句其实很简单吧!只是要搞清逻辑就好。 希望对你有所帮助....
I. sql语句,问题补充如下。
①首先先来解决你这个问题,支持版本oracle 10g:
create table tony_test_a(a_id number ,a_value varchar2(30));
create table tony_test_b(b_id number ,aid_str varchar2(30));
值:
tony_test_a表
1 a
2 b
3 c
tony_test_b表
1 [1],[2]
2 [3]
3 [1],[3]
得到你想要的结果sql如下:
select m.b_id, wmsys.wm_concat(m.a_value) a_value_all
from (select res.b_id, a.a_value
from (select x.b_id,
substr(x.col_1, x.pos1, x.pos2 - x.pos1 - 1) a_id
from (select t.col_1,
t.b_id,
level as lv,
instr(',' || t.col_1 || ',', ',', 1, level) as pos1,
instr(',' || t.col_1 || ',', ',', 1, level + 1) as pos2
from (
/**将某字段,由逗行分隔的列值转成行**/
select b.b_id,
replace(replace(b.aid_str, '['), ']') col_1
from tony_test_b b) t
connect by level <=
(length(t.col_1) -
length(replace(t.col_1, ',', ''))) + 1) x) res,
tony_test_a a
where a.a_id = res.a_id
group by res.b_id, a.a_value
order by res.b_id,a.a_value) m
group by m.b_id;
②若是b表设计成这样,那只能说实在太搓了,显然是和a表为多对多的关系,应该在中间有一个中间表将二者关联起来,而非存类似于[1],[2],[3]的值。
J. sql数据补充问题
declare @id varchar(50)--声明id变量
declare @date datetime--声明日期变量
declare @tempdate datetime--声明临时日期变量
declare addDatas cursor--声明一个游标
for select id,min(date) from tableName group by id
open addDatas--打开游标
fetch next from addDatas into @id,@date--取下一行数据到变量中
while @@fetch_status=0--如果有数据
begin
set @tempdate=dateadd(dd,1,@date)--临时日期变量赋值上一日期变量的天数加1
while datediff(mm,@date,@tempdate)=0--如果和上一日期是同一个月,则开始循环增加
begin
declare @countNum int--声明统计变量
select @countNum =count(*) from tableName where id=@id and date=@tempdate
if isnull(@countNum,0) <=0--如果该id下的该日期不存在则插入
begin
exec('insert into tableName(id,date,num) values('+@id+','+@tempdate+',null)')
end
set @date=@tempdate
end
fetch next from addDatas into @id,@date
end
close addDatas--关闭游标
deallocate addDatas--释放游标