使用merge-using语句初始化数据库
创建三张表Student、Course、Enrollment
CREATE TABLE [dbo].[Student] (
[StudentID] INT IDENTITY (1, 1) NOT NULL,
[LastName] NVARCHAR (50) NULL,
[FirstName] NVARCHAR (50) NULL,
[EnrollmentDate] DATETIME NULL,
PRIMARY KEY CLUSTERED ([StudentID] ASC)
)
CREATE TABLE [dbo].[Course] (
[CourseID] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (50) NULL,
[Credits] INT NULL,
PRIMARY KEY CLUSTERED ([CourseID] ASC)
)
CREATE TABLE [dbo].[Enrollment] (
[EnrollmentID] INT IDENTITY (1, 1) NOT NULL,
[Grade] DECIMAL(3, 2) NULL,
[CourseID] INT NOT NULL,
[StudentID] INT NOT NULL,
PRIMARY KEY CLUSTERED ([EnrollmentID] ASC),
CONSTRAINT [FK_dbo.Enrollment_dbo.Course_CourseID] FOREIGN KEY ([CourseID])
REFERENCES [dbo].[Course] ([CourseID]) ON DELETE CASCADE,
CONSTRAINT [FK_dbo.Enrollment_dbo.Student_StudentID] FOREIGN KEY ([StudentID])
REFERENCES [dbo].[Student] ([StudentID]) ON DELETE CASCADE
)
不会覆盖或删除数据库已经存在的数据,将数据作为一张表更新到另一张表中。
merge into Course as Target
using (values
(1,'Economics',3),
(2,'Literrature',3),
(3,'Chemistry',4)
)
as Source (CourseID,Title,Credits)
on Target.CourseID =Source.CourseID
when not matched by target then
Insert(Title,Credits)
values(Title,Credits);
merge into Student as Target
using(values
(1,'Tibbetts','Donnie','2013-09-01'),
(2,'Guzman','Liza','2012-01-13'),
(3,'Catlett','Phil','2011-09-03')
)
as Source (StudentID,LastName,FirstName,EnrollmentDate)
on Target.StudentID=Source.StudentID
when not matched by Target then
Insert (LastName,FirstName,EnrollmentDate)
values (LastName,FirstName,EnrollmetnDate);
Merge into Enrollment as Target
using (values
(1,2.00,1,1),
(2,3.50,2,2),
(3,4.00,2,3),
(4,1.80,2,1),
(5,3.20,3,1),
(6,4.00,3,2)
)
as Source (EnrollmentID,Grade,CourseID,StudentID)
on Target.EnrollmentID =Source.EnrollmentID
when not matched by Target then
Insert (Grade,CourseID,StudentID)
values (Grade,CourseID,StudentID);
使用merge-using语句初始化数据库的更多相关文章
- activiti搭建(一)初始化数据库
转载请注明源地址:http://www.cnblogs.com/lighten/p/5876681.html activiti-engine.jar包中自带了创建activiti工作流数据库表的SQL ...
- Activiti工作流搭建---初始化数据库
Activiti介绍 Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易扩展的可执 ...
- 2.5 Oracle之存储过程和MERGE INTO语句
一.MERGE INTO语句 1.merge into语句的功能:我们操作数据库的时候,有时候会遇到insert或者Update这种需求.我们操纵代码时至少需要写一个插入语句和更新语句并且还得单独写方 ...
- 2-06使用SQL语句创建数据库3
向现有数据库中添加文件组和数据文件几种方式以及步骤: 第一种:在视图下添加文件组和数据文件. 添加文件组的步骤: 右击你想要添加文件组的数据库点属性,然后点文件组就可以添加. 添加数据文件的步骤: 下 ...
- Entity FrameWork初始化数据库的四种策略
程序猿就是苦逼,每天还得分出一些时间去写博文.天真的很热,今天就随便写一点啦! 1.EF初始化数据库的四中策略 EF可以根据项目中的模型自动创建数据库.下面我们就分类看看Entity Framewor ...
- 使用SQL语句清空数据库所有表的数据
使用SQL语句清空数据库所有表的数据 近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进 ...
- ASP.NET 5:初始化数据库
ASP.NET 5:初始化数据库 1.初始化数据库 1.2目录 这不是专述模式/架构设计的帖子,架构搭建以讲解文章为目的,先不过多分层. 截这个图也是便于你对应下面找代码文件路径! 1.2代码 先控制 ...
- SQL语句获取数据库中的表主键,自增列,所有列
SQL语句获取数据库中的表主键,自增列,所有列 获取表主键 1:SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_U ...
- 【EF6学习笔记】(一)Code First 方式生成数据库及初始化数据库实际操作
本篇参考原文地址: Creating an Entity Framework Data Model 说明:学习笔记参考原文中的流程,为了增加实际操作性,并能够深入理解,部分地方根据实际情况做了一些调整 ...
随机推荐
- 约分差束 例题 ZOJ 2770 火烧连营
题目来源:ZOJ Monthly, October 2006, ZOJ2770题目描述:大家都知道,三国时期,蜀国刘备被吴国大都督陆逊打败了.刘备失败的原因是刘备的错误决策.他把军队分成几十个大营,每 ...
- POJ 1741 树上 点的 分治
题意就是求树上距离小于等于K的点对有多少个 n2的算法肯定不行,因为1W个点 这就需要分治.可以看09年漆子超的论文 本题用到的是关于点的分治. 一个重要的问题是,为了防止退化,所以每次都要找到树的重 ...
- java HashMap的使用
java HashMap的使用 import java.util.HashMap; import java.util.Iterator; public class WpsklHashMap { pub ...
- django学习之- Cookie
cookie:客户端游览器上的一个文件,以键值对进行保存,类似字典{'k':'sfs'},与服务器端没有关系,当游览器访问服务器时候,服务器会生成一个随机字符串保存在cookie中返回给客户端,这样当 ...
- uva 1364
刘书上例题 #include <cstdio> #include <cstdlib> #include <cmath> #include <set> # ...
- 实现浏览器兼容的innerText
今天学习到了FF不支持innerText,而IE.chrome.Safari.opera均支持innerText. 为了各个浏览器能兼容innerText,必须对js做一次封装. 为啥能实现兼容呢?原 ...
- [Bzoj3131][Sdoi2013]淘金(数位dp)(优先队列)
3131: [Sdoi2013]淘金 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 847 Solved: 423[Submit][Status][ ...
- easyshell 安装
EasyShell是一个可以直接在Eclipse IDE中打开shell窗口的工具,在shell中运行选中的文件,打资源管理. 百度经验:jingyan.baidu.com 工具/原料 Easy_Sh ...
- Codeforces 344B Simple Molecules
#include<bits/stdc++.h> using namespace std; int main() { int a,b,c; scanf("%d%d%d", ...
- Python中字符运算的优先级
表1-2 运算符优先级 运算符 描述 lambda Lambda表达式 or 布尔“或” and 布尔“与” not x 布尔“非” in,not in 成员测试 is,is not 同一性测试 &l ...