问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于SQL数据库问题

发布网友 发布时间:2022-04-07 19:24

我来回答

6个回答

热心网友 时间:2022-04-07 20:53

我的周末就耗在这道题上了。。
来来去去,然后中间又夹杂一些杂事,做到现在终于做完。。

1.【create table语句】
create table bank(
cardid number primary key,
perid number unique,
name varchar2(20),
sex char(2),
brithday varchar2(40),
constraint sex check(sex in ('男','女')) ,
constraint perid check(length(perid) in (15,18))
);

create table money(
cid number,
score number,
foreign key(cid) references bank(cardid));

2.【insert bank表测试数据】
insert into bank (cardid,perid) values (1,430903198511302113);
insert into bank (cardid,perid) values (2,430903851130230);
insert into bank (cardid,perid) values (3,430903001130234);
insert into bank (cardid,perid) values (4,430903981120231);
insert into bank (cardid,perid) values (5,430903011111228);
insert into bank (cardid,perid) values (6,430903200112212103);
insert into bank (cardid,perid) values (7,430903311111221);
insert into bank (cardid,perid) values (8,430903198112212103);
insert into bank (cardid,perid) values (9,430913981120239);
insert into bank (cardid,perid) values (10,431903001130234);
insert into bank (cardid,perid) values (11,420903198112212133);

3.【更新性别,出生日期】
update bank set
sex = decode(length(perid),15,
decode(mod(substr(perid,14,1),2),0,'女',1,'男'),18,
decode(mod(substr(perid,17,1),2),0,'女',1,'男')),brithday =
decode(length(perid),15,19||substr(perid,7,6),18,substr(perid,7,8));

4.【update name测试数据】
注意:修改姓,但是名里面的牛不要改。策略:把牛姓的名字替换为'刘'||第二个字符开始到结束的串。
create sequence seq1;
update bank set name = '牛XX牛刘'||seq1.nextval;
update bank set name = '刘'||substr(name,2,length(name)-1) where name like '牛%';

5.【insert money表测试数据】
insert into money values (1,1.1);
insert into money values (2,12);
insert into money values (3,0.9);
insert into money values (4,122);
insert into money values (5,12);
insert into money values (6,12);
insert into money values (7,131);
insert into money values (8,12);
insert into money values (9,123);
insert into money values (10,12);
insert into money values (11,0.11);

6.delete from money where score < 2;

7.insert into money select cardid,2 from bank
where cardid not in (select cid from money);

8.select name from bank,money
where cardid = cid and rownum < 4 order by money.score desc;

9.select name from bank
where substr(brithday,5,2) = to_char(sysdate,'mm');
--本月生日的客户姓名
select name from bank where
to_char(to_date(brithday,'yyyymmdd'),'ww') = to_char(sysdate,'ww');
--本周生日的客户姓名

10.题意不清,个人理解为显示所有客户余额为平均余额的客户姓名,其中平均存款计算时不算一个最高和一个最低余额。
select name from bank where cardid in
(select cid from money where score in
(select (sum(score)-max(score)-min(score))/(count(score)-2)
from money));

花絮:
1.查找了下身份证的生成规则,同时研究了下生成算法。。
资料:http://www.xa*.com/Article/200808/1016.shtml

2.在由身份证号码更新生日时,遇到一个问题,就算是上面的链接处引用的算法也无法解决,那就是15位身份证的日期段为00XXXX时,无法判断生日为1900XXXX或是2000XXXX。
2.1 在连接字符串时,因为想到用substr函数取perid字段得到的是字符类型,本来可以隐式转换为数字类型,但是强制转换为数字类型后,连接时会出问题,比如select 01||00 from al;得到的是01而不是0100。所以当时在更新生日时用到一个很复杂的decode语句。。
update bank set
sex = decode(length(perid),15,decode(mod(substr(perid,14,1),2),0,'女',1,'男'),18,
decode(mod(substr(perid,17,1),2),0,'女',1,'男')),
brithday = decode(length(perid),15,
decode(length(19||to_number(substr(perid,7,6))),8,19||to_number(substr(perid,7,6)),7,190||to_number(substr(perid,7,6)),6,
1900||to_number(substr(perid,7,6))),18,substr(perid,7,8));

2.2在整个编译过程中由于文档和SQL环境的多次变换,导致符号半全角混杂,带来极大不便。。经常莫名其妙的错误。应对策略,在使用ORACLE的过程养成用E文编译,测试学习的习惯,ORACLE认证考试OCA,OCP也是全E文化的。

3.在第8问中,本来想到可以用以下语句解决的
【select name from bank where cardid in (select cid from money where rownum < 4 order by score desc)】
多次出错后,查笔记想起order by 子句不能用到嵌套语句中,只能放在最外层语句的最后,不知可对,各位看官提下意见。

4.关于第10题,如果去掉所有最高和最低余额,不是都只去掉一个计算平均余额时的查询:
select name from bank where cardid in
(select cid from money where score in
( select sum(score)/count(score) from money where score not in
((select max(score) from money),(select min(score) from money))));

大功告成!以上全是ORACLE支持的,MYSQL的话,需要更换MYSQL自适应的函数,还有其中的7问中的insert语句,insert into money select cardid,2 from bank where cardid not in (select cid from money);MYSQL不支持。
吃饭。。

热心网友 时间:2022-04-07 22:11

是不是你当前登陆SQL的用户没有create
databese的权限,请检查一下.
SQL查询权限的办法已经在百度中有记录了.
http://zhidao.baidu.com/question/40009152.html
希望以上回答能顺利解决你的问题/

热心网友 时间:2022-04-07 23:46

可以同时开两个服务的
你先装了2000,再装2005的时候提示你需要输入实例名称,比如2005的实例名称就是sql2005
那样在服务管理器中的服务器中就多出一个实例就是【电脑名称\sql2005】,需要把它开启起来
在连接的时候,如果在2005的管理工具【SQL
Server
Management
Studio】打开登录的时候
服务器名称填的是192.168.0.1\sql2005的就是2005
使用192.168.0.1作为服务器名称的就是连接sql2000的
SQL200和2005是一体的,后面连接的时候主要是看它的实例,那个先装就是用默认实例,后面不需要设置
有实例的在服务器名称中就一定要跟上具体实例
连接成功后,
如果后面显示的9.0的就是sql
2005数据库的
如果后面显示的8.0的就是sql
2000数据库的

热心网友 时间:2022-04-08 01:37

倒,这是最基本的,你学sql学到这个份上,服了你

热心网友 时间:2022-04-08 03:45

你太黑了,一次少弄点啊,太多了,懒得做,看那位大侠不怕幸苦了.

热心网友 时间:2022-04-08 06:10

一般软件出了新版本后
就必须要更新了
建议你最好去下载新版本
毕竟新版本功能更齐全
而你所说的那种情况
我还没见过
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? 丙炔可以发生消除反应吗 丙炔和丙醛反应生成什么,机理呢? 哪位大哥对化学的有机化学精通的,给我整理一哈人教版的有机化学知识点!详细一点! 丙炔与氢氰酸亲核加成,氰基应该加到炔的哪个碳原子 有机化学, 阿司匹林能迅速解热、镇痛.长效缓释阿司匹林可在体内逐步水解而疗效更佳.用丙酮为主要原料合成长效缓释 丙炔与丙烯加成的化学方程式 丙炔能与乙炔发生二聚么 丙炔如何合成2-己烯 应该有什么样的人生观ppt 急求关于人生意义的PPT 丙炔加成反应 甲鱼活杀放了一天一夜(冰箱里),还能吃么 丙炔(CH3C=CH)发生加聚反应的产物的结构简式? 甲鱼汤放冰箱放了二天能吃吗 丙炔加聚反应方程式 甲鱼煮鸡隔夜后还能吃吗 甲鱼汤第二天还可以喝么 为什么肚子总是觉得饿 甲鱼汤可以过夜了吃吗 手机欢乐麻将怎么切换账号? 青春期孩子情绪失控精神异常 小孩患上精神疾病都有哪些表现? 青少年精神分裂的症状主要有哪些表现呢? 儿童精神问题的阵状有哪些 青春期的精神分裂症在前期都有哪些表现?应该如何预防呢? 青少年精神病的早期症状有哪些 如何判断宝宝有精神方面的问题 青少年精神障碍 12~15岁孩子的自闭症和抑郁症是什么样的? 儿童不正常行为的表现类型,都有哪些? 我的女儿十五岁,从九月份开始,行为有点异常,重复做一件事,请问是否是精神病? 孩子心智发育的异常现象,有哪些特征? 一个15岁女孩得了抑郁症,怎么看出来? 默纳克3000故障报E063怎么解决? 上易效能时间管理课程需要下载那些软件? 把好友删了,请求添加,对话可以聊天,限制聊多少条吗 光阴似箭日月如梭时间总是在不经意间从我们身边悄悄溜走我们能做些什么事使时间更容易更有效地利用呢? 默纳克3000故障代码怎么消除 奇妙清单,timetree,todoist哪一个更好用一些