注意我说的常见查询,可不是简单到一个表得增删改查,做过实际开发得人都知道,在实际开发中,真正牵扯到一个表得增删改查只能说占很小得一部分,大多都是好几个表的关联操作的。

下面我就说一下我在实际开发中经常用到得一些增删改查方式。(首先我还要说一下,就是我虽然能写,但是我不知道这种查询方式叫什么类型查询,毕竟数据库这块以前都没干过,做.net开发也就一年左右,大家看我写的博客也会知道,以前搞前端U3D游戏开发的,不接触数据库,取数据调后台接口就行了,其他不用管。所以没做.net前,我也就是会大学时候学的简单的那种增删改查。从做.net 开始我是前端,后台,数据库都干,数据库学习实践了一年,虽然现在写存储过程逻辑代码完全没问题,但是确实是只知道这么用没问题,却不知道叫什么。所以我只能写用法了,至于叫什么,鬼知道!)

先建几个测试表再说:

--我们就以院系,班级,学生来举例。
create TABLE [dbo].YuanXi
(
Id int IDENTITY(,) NOT NULL,--学校id 自增量
YuanXiName varchar(50) null, --院系名字 )
 create TABLE [dbo].Class
(
Id int IDENTITY(1,1) NOT NULL,--班级id 自增量
YuanXiID int null,--院系id
ClassName varchar(50) null --班级名字 )
 create TABLE [dbo].Student
(
Id int IDENTITY(1,1) NOT NULL,--学生id 自增量
ClassID int null,--班级id
StudentName varchar(50) null,--学生姓名
  )
--这个表是图片表,我临时加的,后面可能用这个演示 
create TABLE [dbo].PathImg
(

Id int IDENTITY(1,1) NOT NULL,--学校id 自增量
TableName varchar(50) null, --这个是表明,比如我要在信息工程学院价格图片,那就要在改表中把XuanXi表的表名子加上,还有信息工程学院的id加上
TableNameId int null,--这个就是某一个表中的某一个id
Path varchar(50) null, --存放班级照片路径的
)
 

随便添加数据:

增删改查嘛,首先所增吧!

增的时候大多数都是一个表,但是也有两个表的:

1,简单的只涉及一个表的:

比如我要增加要给院系

--这里要说一下,关于Id列,这是自增项,插入数据的时候不需要插入这列,因为这列会自己增加,也就是说你插入一列,他就会自动插入一个增量数字。如果做插入操作的时候加上这列,
--就会报错的。
insert into Yuanxi(YuanXiName)values("艺术学院")

2,多表插入:

比如,我在添加班级的时候,页面上让你上传班级的一些图片内容。那这个时候就牵扯到两个表了。一个是班级表,一个是通用图片表了。

在页面上填写所有内容,上传好图片后,点击提交,那么数据就要做这些:

--首先在班级表中插入数据,对了,这个YuanXiID 一般是在编辑的时候要你选的一个下拉框,因为你前面已经添加了院系,不然你怎末添加班级

insert into Class(YuanXiID,ClassName) values (1,'信息工程学院')
--然后在图片表中插入你上串的图片
--这里要注意,不要先做插入图片操作,因为你在没插入班级的时候,是没有这个班级id的,那么如果你先插入图片的话就找不到班级id了。
--所以你要先找到你刚才插入的班级id,怎末找呢,根据上面你提交的内容,比如院系id和班级名称,注意一个院系的班级名称是不能重复的,就好像我们登陆的时候的用户名一样,一般不允许重复的。所以他是唯一的。
--那这样就好找班级Id了。
select Id from Class where YuanXiID=你填写提交后拿到的院系id and ClassName=你填写提交后拿到的班级名字
--插入图片,
insert into PathImg(TableName,TableNameID,Path) values('Class',2,'/upfile/ClassImg/02')
看着上面的两步操作很麻烦,那就合并好了。
  insert into PathImg(TableName,TableNameID,Path) values('Class',select Id from Class where YuanXiID=你填写提交后拿到的院系id and ClassName=你填写提交后拿到的班级名字,'/upfile/ClassImg/02')
--实践证明,这样做是没问题的。。、

像这样的一般都会写个存储过程,一个就搞定很方便。

USE [TestData]
GO
/****** Object: StoredProcedure [dbo].[AddBJ] Script Date: 2019/11/1 星期五 17:01:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO ALTER PROCEDURE [dbo].[AddBJ]
@YuanXiID int, --院系id
@CassName varchar(30)--班级名字
@Path varchar(100) --图片路径
AS
--插入班级表
insert into Class(YuanXiID,ClassName) values
(
@YuanXiID,
@CassName
)
--插入图片表
insert into PathImg(TableName,TableNameID,Path) values(
'Class',
select Id from Class where YuanXiID=@YuanXiID and ClassName=@CassName,
@Path
)

插入数据基本上也就这些,中间可能会变成要插入3个或者四个表,但都大体上一样。

对了,忘了还有一种插入方式有必要说一下:

这种就叫查询插入方式吧:

就是我要在一个表中取出某几列数据,插入在另一个表中

比如我要插入2列,要从A表中取出   a列,b列  放到B表中 m列,n列。这里B表的列数两中情况:(注意:A表中的两列和B表中的两列数据类型一样要相同,就算不同,插入的时候一定要转化成同一种数据类型)

1,B表就两列:

insert into B表(m,n)  select  a列,b列 from A表(注意,有查询条件的话在后面where 查询条件加上就行了)

2,B表大于两列,已三列为例:(这种情况一般都是,其他列数据可有可无的情况下,就以第三例为int型,直接给默认值0就行了)

insert into B表(m,n,0) select  a列,b列,0  from A表(注意,有查询条件的话在后面where 查询条件加上就行了)

插入操作,掌握这些,至少插入数据方面基本上能应付实际项目开发了。

好了,今天就先写一下插入操作了,至于后面的删,改,查后面在写吧!sql代码是手动敲的,可能会有错误,请谅解。

Sqlserver 增删改查----增的更多相关文章

  1. 【基础篇】js对本地文件增删改查--增

    前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...

  2. hibernate关联对象的增删改查------增

    本文可作为,北京尚学堂马士兵hibernate课程的学习笔记. 这一节,我们看看hibernate关联关系的增删改查 就关联关系而已,咱们在上一节已经提了很多了,一对多,多对一,单向,双向... 其实 ...

  3. Ajax增删改查-----------增

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. php 数据库内容增删改查----增

    首先,建立一个主页面(crud.php) <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  5. MongoDB的ObjectId和基本操作增删改查(3)

    ObjectId 基本操作增删改查 增: insert 介绍: mongodb存储的是文档,. 文档是json格式的对象. 语法: db.collectionName.insert(document) ...

  6. oracle初试、函数、增删改查、多表查询

      安装oracle后的测试以及解锁账户                  安装后打开命令行,输入 sqlplus 回车后会提示输入用户名,输入 sys或者system 回车后输入密码,密码为安装or ...

  7. SQL Server数据库————增删改查

    --增删改查--增 insert into 表名(列名) value(值列表) --删 delect from 表名 where 条件 --改 update 表名 set 列名=值1,列名2=值2 w ...

  8. python 全栈开发,Day5(字典,增删改查,其他操作方法)

    一.字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.存储大量的数据,是关系型数据,查询数据快. 列表是从头遍历到尾字典使用二分查找 二分查找也称折半查找(Bi ...

  9. MongoDB之增删改查

    MongoDB的默认端口为:27017 show  dbs   查看所有的数据库 MySQL和MongoDB的对应关系 MySQL MongoDB DB DB 数据库 table Collection ...

随机推荐

  1. Vue和React之间关于注册组件和组件间传值的区别

    注册组件 Vue中:1.引入组件:2.在components中注册组件:3.使用组件; React中:1.引入组件:2.使用组件; 子父传值 Vue中: 父组件向子组件传值: 1.在父组件中绑定值:2 ...

  2. Codeforces 590 A:Median Smoothing

    A. Median Smoothing time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. Spring Boot-运行部署

    Main方法 直接运行启动类main方法 遵循应用程序入口点的Java约定的标准方法.我们的main方法SpringApplication通过调用委托给Spring Boot的类run. Spring ...

  4. 图片上传--base64

    <?php defined('BASEPATH') OR exit('No direct script access allowed'); include_once (APPPATH . &qu ...

  5. CentOS7安装Jenkins与配置

    安装 将Jenkins存储库添加到yum repos,并从此安装Jenkins. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenki ...

  6. java 循环节长度

    循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153- 其循环节为[846153] 共有6位. 下面的方法,可以求出循环 ...

  7. js实现连续输入之后发送请求

    输入框是我们经常会用到的功能,想要实现输入就请求的功能 但是在实际开发中,为了减少服务器压力,会在输入之后停留1s没有输入之后再进行搜索 研究之后用原生js及表单写了一个简单的demo,如果有好的de ...

  8. springboot#interceptor

    _ 拦截器相对与过滤器Filter 而言,拦截器是spring中的概念.过滤器是servlet中的概念.在spring中肯定是优先使用拦截器Interceptor的. public class My1 ...

  9. CNN经典模型VGG

    VGG是一个很经典的CNN模型,接触深度学习的人大概都有所耳闻.VGG在2014年被提出并拿来参加ImageNet挑战赛,最终实现了92.3%的正确率,得到了当年的亚军.虽然多年过去,又有很多新模型被 ...

  10. Python 中使用 ddt 来进行数据驱动,批量执行用例,修改ddt代码

    1. 什么是数据驱动? 使用数据驱动有什么好处? 用例执行是靠数据来驱动的,每条测试用例除了测试数据不一样意外,所有的用例代码都是一样的,为了使用例批量执行,我们会使用数据驱动的思想来批量执行测试用例 ...