SQL Server操作实例

创建数据库

create database accountInfo/*创建账户信息数据库*/

创建数据表

 1 /*定义主码、外码、和人数、余额的取值范围。*/
 2 /*创建储蓄所表*/
 3 create table bank(
 4     bank_ID int primary key identity(10001,1),/*从10001开始,每次增加1*/
 5     bank_name nvarchar(20),    /*储蓄所名称,*/
 6     bank_address nvarchar(40),
 7     bank_peopleNum int check(bank_peopleNum between 1 and 30),
 8     bank_city nvarchar(10)
 9 )
10
11 /*创建账户表*/
12 /*帐户(编号,姓名,余额,建立日期,储蓄所编号)*/
13 create table account(
14     account_id int primary key identity(1,1),
15     account_name nvarchar(15),
16     account_balance int check(account_balance>= 0 ),
17     account_found_date char(8),
18     bank_ID int foreign key references bank(bank_id)
19 )
20
21 /*创建借贷表*/
22 /*借贷(帐户,借贷类型,金额,日期)*/
23 create table borrow(
24     borrow_id int primary key identity(1,1),
25     account_ID int foreign key references account(account_ID),
26     type_borrow nvarchar(10),
27     money_sum int check(money_sum>=0),
28     date_borrow char(8)
29 )

插入数据

 1 --插入bank数据
 2 insert into bank values(‘长春南湖路‘,‘朝阳区‘,10,‘长春市‘)
 3 insert into bank values(‘西安大路‘,‘朝阳区‘,13,‘长春市‘)
 4 insert into bank values(‘幸福二路‘,‘南关区‘,11,‘长春市‘)
 5 insert into bank values(‘幸福三路‘,‘南关区‘,12,‘长春市‘)
 6 insert into bank values(‘桃林街‘,‘城关区‘,18,‘灵宝市‘)
 7
 8 --插入account数据
 9 insert into account values(‘赵大‘,10000,20170510,10001)
10 insert into account values(‘钱二‘,5000,20160120,10001)
11 insert into account values(‘张三‘,50000,20161120,10001)
12 insert into account values(‘李四‘,50000,20161120,10005)
13 insert into account values(‘孙五‘,500000,20161110,10005)
14
15 --插入borrow数据
16 insert into borrow values(1,‘短期‘,1000,20170516)
17 insert into borrow values(2,‘长期‘,3000,20170416)
18 insert into borrow values(3,‘长期‘,200000,20170510)

连接查询

--内连接
select account_name,account_balance,bank_name
from account , bank
where account.bank_ID=bank.bank_id and bank_name=‘长春南湖路‘

--左外连接
select bank.bank_ID,count(account_id)‘账户个数‘,sum(account_balance)‘余额总数‘
from bank left outer join account on(bank.bank_ID=account.bank_ID)
group by bank.bank_ID

嵌套查询

select account_name,account_balance
from account
where bank_ID in(select bank_ID from bank where bank_name=‘长春南湖路‘)
select account_name
from account
where account_balance>(select MAX(account_balance)
from account where account_name=‘长春南湖路‘)
select*
from account as A,Bank as B
where A.bank_ID=B.bank_ID and B.bank_city in
(select bank_city
from bank
group by bank_city
having count(bank_ID)=(select min(Nm)
from(select bank_city,count(bank_ID)
from bank
group by bank_city
)as _bank(Cy,Nm)
)
);
select account_id from account
where account_id not in
(select id from( select account_ID from borrow
group by account_ID ) as v(id)--,Nm))

组合查询

select account_id
from account except  (select account_ID from borrow )

创建及使用视图

 1 create view view1 as
 2 select account.bank_ID,
 3 sum(account_balance)‘balanceSum‘
 4 from bank,account
 5 where bank.bank_ID=account.bank_ID
 6 group by account.bank_ID
 7
 8 select v1.bank_ID vid
 9 from(select max(v.balanceSum)as balanceSum from view1 v)
10 su,view1 v1
11 where v1.balanceSum=su.balanceSum

存储过程

--根据上面基本表的信息定义一个存储过程,完成下面功能:
--入口参数:储蓄所编号
--1 显示储蓄所信息
--2 如果没有帐户,删除该储蓄所记录
--3 如果帐户余额总额低于100万元,开一个新帐户
alter PROCEDURE pr_bank(@bank_id int)
as
BEGIN
    select *from bank
    where bank_ID = @bank_id
    if (select count(*) from account where bank_id=@bank_id)=0
         delete  from bank where bank_ID=@bank_id
    if (select sum(account_balance) from account where bank_id=@bank_id group by bank_id)<1000000
        insert into account(bank_id) values(@bank_id)
END

exec pr_bank 10005

作者:耑新新,发布于  博客园

转载请注明出处,欢迎邮件交流:[email protected]

时间: 2024-10-11 12:53:13

SQL Server操作实例的相关文章

如何在 SQL Server 2005 实例之间传输登录和密码

简介 0" style="box-sizing: border-box; outline: none; margin-right: auto; margin-left: auto; max-width: 1600px; width: 761.391px;"> 本文介绍如何在不同服务器上的 Microsoft SQL Server 2005 实例之间传输登录和密码. 有关如何在其他版本的 SQL Server 实例之间传输登录和密码的更多信息,请单击下面的文章编号,以查看

SQL Server的实例恢复解析

同Oracle一样,SQL Server在非一致性关闭的时候也会进行实例恢复(Instance Recovery),本文根据stack overflow的文章介绍一些SQL Server实例恢复的知识. 原文链接:https://stackoverflow.com/questions/41932735/sql-server-instance-recovery 关于Oracle的实例恢复参考之前的博文:http://www.cnblogs.com/leohahah/p/6973600.html 首

查看SQL Server多实例的版本

通过 select @@version 查看当前的 SQL Server 安装的版本: 结果返回的是 SQL Server 2008 R2 (SP1),可安装的明明是 SQL Server 2012 (SP1). 然后通过 菜单-帮助-关于 显示的SQL Server Management Studio 版本却是SQL Server 2012. 此时纳闷了. 打开SQL Server Configuration Manager 才注意到有两个实例. 然后回看第一张图才知道原来登录的时候用的是Sh

通过端口 8080 连接到主机 localhost 的 TCP/IP 连接失败。错误:“驱动程序收到意外的登录前响应。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受

1. 点击 开始 --> 所有程序 --> Microsoft SQL Server2005 --> 配置工具-->SQL Server configuration Manager- 选择左边 SQL Server 2005 网络配置 -->双击 MSSQLSERVER 协议--> 选中 TCP/IP 右键 点击启用:2. 选择左边 SQLServer 2005 服务 --> 选择右边SQL Server(MSSQLSERVER) --> 右击选择重新启动

SQL Server 多实例下的复制

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建步骤(Procedure) 注意事项(Attention) 二.背景(Contexts) 在服务器A有一个数据库Task,需要把部分表部分字段发布订阅到服务器B的TaskSiteInfo数据库上,但是A服务器有些特别,因为它除了有个默认的实例之外,还有一个命名实例:TZR06\SQLSERVER2008R2,如果是默认实例到不会遇到太多的问题,现在因为有命名实例在创建发布订阅的过程中出现

Step7:SQL Server 多实例下的复制

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建步骤(Procedure) 注意事项(Attention) 二.背景(Contexts) 在服务器A有一个数据库Task,需要把部分表部分字段发布订阅到服务器B的TaskSiteInfo数据库上,但是A服务器有些特别,因为它除了有个默认的实例之外,还有一个命名实例:TZR06\SQLSERVER2008R2,如果是默认实例到不会遇到太多的问题,现在因为有命名实例在创建发布订阅的过程中出现

SQL Server 命名实例更改端口进行发布订阅

原文:SQL Server 命名实例更改端口进行发布订阅 两台数据库服务器,都没有加入域,都安装多实例,端口也不一样了.现在使用命名实例进行复制,折腾了好久,才发现解决方法. 服务器A:myserverA MSSQL命名实例: mymssql MSSQL端口:14433 服务器B:myserverB MSSQL命名实例: mymssql MSSQL端口:14433 正常连接数据库的方法: myserverA\mymssql,14433 但是创建发布订阅时,连不到双方数据库出错! 试了一些方法都不

sql server 操作xml例子

/* sql xml 入门: --by jinjazz --http://blog.csdn.net/jinjazz 1.xml: 能认识元素.属性和值 2.xpath: 寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁) 语法格式,这些语法可以组合为条件: "."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代, "name"表示按名字查找,"@name"

SQL Server 查看实例配置情况的 2 方法

方法 1. sp_configure; execute sp_configure; 方法 2. sys.configurations select * from sys.configurations          order by name;          go