相关文章推荐
踏实的胡萝卜  ·  标量 UDF 内联 - SQL ...·  2 天前    · 
难过的春卷  ·  Server-Sent Events ...·  1 年前    · 
当尝试 插入 数据,或者更新某个表的时候出现 不能 具有 唯一索引 “IX_******”的 对象 “dbo.****” 插入 重复 重复 值为 (110, 372000, 2)。 遇到这个问题的时候,请找到对应的 引:
【公农双历查询】:生成多功能日历,可以查询所有节、假日和农历 【高级定位】:多功能选择(查找)工具。可以选择大于某值或者小于某值或者在某范围之间的值,文本定位时支持通配符。还可以按格式查找/定位 【背景着色】:将当前或者列进 颜色标示,以突出显示,有利于数据查看。可以随心所欲地定义颜色,还可以自由调整颜色的深浅。本工具相对于同类工 具有 不破坏背景色、条件格式、复制粘贴和撤消功能之优点 【环境设置】:设置工作表界面视图,控制各项目的显示与隐藏 【修改文件时间】:随心所欲修改文件的创建时间 【按颜色汇总】:按背景色对选区的数据合类合计 【反向选择】:选择当前区域 未选择的区域 【千年日历】:工单元格 生成千年日期。默认显示本月的日历,可以自由调整年月 【保护公式】:保护当前工作表所有公式,不让人看到公式本身,只能看到公式结果 【生成斜线表头】:Excel没有Word那样的斜线表头工具,本工具可以弥补此不足。包括单线、双线可选 【百家姓与字母序列】:运 后可以在单元格 百家姓与字母填充,提升录入速度 【一 隐藏非使用区】:对空白区域瞬间隐藏起来。可以选择作用 对象 是当前表还是所有工作表。恢复时也只要瞬间完成 【字符分离及计算】:批量地对单元格进 文本、数字分离,还可以计算取出的表达式 【删除空单元格】:删除选区的空单元格,后面的数据自动上升 【转置选区】:将选区 列调换 【按列倒置】:将选区的数据横向倒置 【按列倒置】:将选区的数据纵向倒置 【字母大小写转换】:将选区的单词、字母在大写小写、首字母大写之间转换 【小写金额转大写】:将小写金额批量转换成大写 【大写金额转小写】:将大写金额批量转换成小写 【区域数据加密】:对工作表选区的数据进 加密,转换成乱码,有密码才可以查看。 【简体转繁体】:将简体字批量转换成繁体 【繁体转简体】:将繁体字批量转换成简体 【根据工资计算钞票】:根据员工的工资计算需要多少张100元、50元......1元的钞票,可以批量计算。发现金工资的财务工作者必备 【隔 插入 】:对工作表隔 插入 ,或者隔列 插入 列,其 数可以自定义 【折分工作簿】:将指定工作簿的每个工作表拆分成单独的工作簿,新工作簿名称等于原工作表名称 【工作表折分】:将当前工作表的数据按条件拆分成多个工作表,可以用任意列的数据做为拆分条件 【合并工作簿】:将指文件夹 所有工作簿 所有工作表数据合并起来。有两种合并方式:将每个工作簿 的工作表合到当前工作簿是,表与表对应;将不同工作簿 同工作表的数据合并到同一工作表 。差异在于同名工作表的处理 【文本与数值互换】:将选区的数字瞬间转换成文本;将选区的文本型数字瞬间转换成数值 【复选框工具】:批量生成复选框(方框 打勾的工具),批量选定、取消复选框。且可以定义复框是否可以打印、与单元格链接等等 【报表分栏工具箱】:Word有分栏功能,本工具使Excel也 具有 同类功能。当数据列数太少浪费打印纸张时,可以用本工具分成多栏再打印 【制作工资条】:瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条头的 数 【删除工资条恢复明细表】:删除前一工具生成的工资条头,恢复明细表 【建立分页小计】:将每页数据建立小计和累计,且自动分页,小计和累计在每页最末处 【删除分页小计】:删除小计与累计,恢复明细表 【合并到选区】:将一个单元格的值合到一个区域 去,可以 插入 到原字符之前也可以 插入 到原字符之后 【可还原的合并居 】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有数据 【合并列 相同值】:对一列 相同且相邻的数据区域进 合并居 【取消合并还原合并数据】:对一列 合并后的单元格取消合并,且恢复合并前所有数据 【合并数据并复制】:可以将一个区域的数据直接复制到一个单元格 【合并区域自动换 】:可以让 具有 合并单元格的区域在自动换 与不换 之间自由切换 【建立图片目录】:对指定文件夹下所有图片(GIF、PNG、JPG,JPEG)建立目录,并批量导入 【批量导入图片(精确匹配)】:瞬间导入所有与选区字符同名的图片到单元格,可以自由设定图片的大小及格式,且全部统一对齐 【批量导入图片(模糊匹配)】:与上一工具基本一致,只是在确定图片名称时可以糊模匹配。即选择“张”可以导入所有姓张的人的照片 【批量导入图片到批注】:批量地将图片导入到批注 ,可以自由设定图片显示大小 【删除所有图片】:删除当前表所有图片 【批量导出图片】:将当前表所有嵌入的图片导出到硬盘 成为JPG图片。 【生成个性化批注】:Excel本身只有方形批注,本工具可以生各种花样的变体批注,美观大方 【 插入 GIF动画】:将GIF动画 插入 工作表 并播放,自动获取图片大小,也可以手工定义动画的大小和位置 【 插入 Flash动画】:将Flash动画 插入 工作表 并播放,自动获取Flash大小,可以自定义Flash的大小和位置,Flash动画嵌入工作表 【提取选区 唯一 值】:将选择区域的数据,置于当前列 ,忽略 重复 值。 【清除列 重复 值】:将选择 重复 出现的数据删除(保留第一次出现的数据) 【禁止 重复 值】:可以指定某列不允许 重复 ,指定后该列输入 重复 值时会自动提示 【标示 重复 值】:将 重复 出现的数据用不同颜色分别标示出来,不同 重复 值用不同颜色 【删除空白单元格所在 】:输入1则删除空白 (整 空白),输入2则删除空白单元格所在 【筛选 唯一 值】:以选择区域左边一列为条件进 唯一 值筛选,输入1则删除 重复 值所在 ,输入2则隐藏 重复 值所在 【相同项与不同项】:提取两列数据的共同项和不同项,也可以对两列数据的不同项或者相同项进 标示 【建文件目录】:对指定文件夹 的文件建立目录,且生成链接,单击可以打开对应的文件 【建工作表目录】:对当前工作簿的所有工作表建立目录与编号,且生成链接,单击可以打开工作表 【批量新建/复制工作表】:批量新建或者复制工作表,可以瞬间建立/复制1到255个。还可以在新建或复制时全自动命名 【工作表批量加解密】:批量对工作表进 加密码、解除密码(只能批量解除自己设置的密码)。 【破解工作表/簿密码】:可以破解工作表密码和工作簿密码。在不知道密码的前提下找回密码 【批量命名文件】:对指定文件夹下所有文件进 重命名。可以限定文件类型或者对所有类型文件进 命名。可以在原文件名前或者后 插入 新名称,也可以替换原名称 【打印当前页】:仅仅打印当前鼠标所在页,忽略其它数据 【双面打印】:打印双面小册子专用 【打印底端标题】:将最后几 做为底端标题进 打印,弥补Excel只有顶端标题之不足 【生成系统图标】:VBA编程人员常用的工具。可以查询Excel内部图标的ID号 【获取内置命令ID】:VBA编程人员常用的工具。可以查询Excel内部命令的ID号 【修复Excel】:当您的Excel某些功能无法使用时,或者无缘无故多出很多菜单、工具栏时,本工具可以瞬间恢复Excel到默认状态 【破解VBA密码】:将VBA编写的且有密码的程序进 破解,瞬间完成 【生成2003样式菜单】:Excel 2007或者Excel 2010专用,可以产生2003样式的菜单来调用百宝箱(备用) 【多区域复制】:可以在选择多区域时进 复制 【按颜色筛选】:让Excel 2003也可以按背景色筛选数据,2007或者2010用户不需要使用  【按颜色排序】:让Excel 2003也可以按背景色排序数据,2007或者2010用户不需要使用 【返回首页】:配合建立工作表目录工具使用,可以在任何工作表 瞬间返回第一个工作表 函数名称:sumifcol 函数功能与参数:按颜色进 条件求和。有三个区域引用参数,其 第三参数为可选参数。第一参数为参照区域,第二参数为颜色条件,第三参数为求和区域,即第一参数 颜色与第二参数相同,则将对应的第三参数的单元格进 求和。如果省略第三参数则对第一参数求和。 函数名称:AVER 函数功能与参数:评分函数。计算参数区域 去除最大值与最小值之再求平均,参数个数有255个(Excel2003 是1到30个)。 函数名称:hesum 函数功能与参数:左右合并再求和。将1/2类型的数字换算成1.5类型数据后再求和;若为12则按12计算,若为1/2则按1.5计算。 函数名称:NOWW 函数功能与参数:不改变的当前时间。不需要参数,输入的时间表示现在的时间,但不随时间改变而改变。 函数名称:SFZ 函数功能与参数:身份证相关信息函数。第一参数为引用,第二参数输入“DQ”取返回地区,输入“XB”则返回性别,输入“SR”则返回生日。忽略第二参数则默认显示地区。 函数名称:大写 函数功能与参数:将阿拉伯数字转为人民币金额大写。仅需要一个参数,即单元格引用。 函数名称:批注 函数功能与参数:提取批注 的文字。只有一个参数,即单元格引用。 函数名称:合并 函数功能与参数:将区域字符合并。第一参数为分割符,第二参数为引用区域。可以用""表示不使用分割符。第三参数开始为引用区域,可以有1到254个区域(Excel2003 是1到29个)。也还可以直接用文本做参数。 函数名称:取数 函数功能与参数:分离数字与文本。第一参数为单元格;第二参数为可选参数,当为0或者省略时表示取出数字;为1时表示排除数字;为2时表示取出数字与运算符;为3则提取数字与运算符且计算结果。 函数名称: 唯一 值 函数功能与参数:返回不 重复 值。可以对1到253(Excel2003 是1到28个)个区域取 唯一 值;前三个为必选参数,其余为可选参数。第一参数为ROW时先 后列取值,为COLUMN时先列后 (不分大小写),第三参数开始为引用区域。 函数名称:消除空值 函数功能与参数:消除空值函数。可以选择多 多列,按先 后列之方式返回值.两个参数,一为区域一为序号。 函数名称:颜色求和 函数功能与参数:按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域。 函数名称:颜色计数 函数功能与参数:按背景颜色计算区域 同背景之数据个数。第一参数为参照值。第二参数为计数区域。 函数名称:工作表 函数功能与参数:取工作表名。一个参数,输入工作表地址即返回工作表名,建立的工作表将带的链接功能。 函数名称:数字 函数功能与参数:与“大写”函数相反,将大写字符转换为阿拉伯数字。 函数名称:分割取数 函数功能与参数:按分割符取数。第一参数为单元格,第二参数表示取第N个,第三个参数表示分割符。 函数名称:共有项 函数功能与参数:返回两个区域共有项目。前两个参数为区域,第三参数为序号。 函数名称:不同项 函数功能与参数:返回第一区域 有而第二区域没有的项目。前两个参数是区域,第三参数为序号。 函数名称:公式 函数功能与参数:公式函数。提取单元格 的公式,只需要一个参数,单元格引用。 函数名称:计算 函数功能与参数:计算函数。计算单元格 的表达式,如单元格 为“456+2”,则计算其结果458。只需要一个参数,单元格引用。 函数名称:公式长度 函数功能与参数:计算单元格 公式的长度,一个参数即单元格引用。 函数名称:排名 函数功能与参数: 国式排名函数。即名次不间断,当两人并列第二名时,仍然存在第三名。有两个参数,第一参数为成绩区域,第二参数为待排名的成绩。参数不局限于区域引用。 函数名称:排序 函数功能与参数:按出现次数排序。对引用数据将出现次数多的字符串排列在第一位,然后依次降序排列所有数据。有两个参数,第一参数为数据区域引用,第二参数为名次,可使用ROW(a1)。 函数名称:替换 函数功能与参数:替换第N次出现的字符串的函数。第一参数为引用,第二参数为待替换字符串,第三参数为新字符串,第四参数用于指定替换第几次出现的字符,范围在1到256之间。 函数名称: 重复 函数功能与参数:判断指定区域 是否有 重复 单元格的函数只有一个参数即为引用,结果为True时表示有 重复 ,否则无 重复 。 函数名称:File   函数功能与参数:用于创建带链接的文件目录,有三个参数,包括路径、文件名、 引号 ╭══════════════════╮ ║ ║ ╭═══════┤ 本工具安装方法 ├════════╮ ║ ║ ║ ║ ║ ╰══════════════════╯ ║ ║ 双击“百宝箱8.0.exe”,按提示操作即可 ║     ║  在安装界面 输入1并回车即为安装,输入2并回车即为删 ║ ║ 在桌面有删除百宝箱的快捷方式 ║ ╰═══════════════════════════════════╯ ╭═════════════════┤ 安装不成功原因分析 ├═════════════════╮ ║ 对于无法安装的朋友请注意以下4点: ║ ║ 一:必须是完整版OFFICE, 不能 是绿色版、精简版,它们不支持COM加载宏 ║ ║ 二:必须关闭Excel状态下安装或者删除工具,安装后重启Excel即可 ║ ║ 三:如果是VISTA或WIN 7,必须以管理员用户安装,且从控制面板 关掉用户帐户控制(UAC)功能 ║ ║ 四:如果您装了其它的EXCEL工具,请先关掉它,它们有可能删除本工具的菜单 ║ ║   ║ ╰══════════════════════════════════════════════╯ 相对于百宝箱7.2,有作以下更新: _______________________________________________   A,新增功能: 1.将选区保存为图片 2.删除空单元格 3.转置选区 4.按列倒置 5.按列倒置 6.字母大小写转换 7.多区域复制 8.修改文件建立时间 9.工作表环境设置 10.文件目录函数 11.图片查询工具 12.工作表批量命名 13.合并到前后缀 14.“File”函数 15.按颜色筛选  16.按颜色排序 17.按颜色合计 18.合并区域自动换 ________________________________________________   B,修正原有功能 1.批量导出图片功能修正5个问题 1)修正选择根目录时 不能 的BUG 2)提升保存图片的清晰度, 3)导出后保持图片原有大小一致,即在工作表 曾经缩小过,导出时会原还其大小(XP) 4)允许选择文件的格式 5)解决VISTA和WIN 7出错的BUG,让程序在XP、VISTA和WIN 7都 2.批量导入图片,修正2个问题  1)让图片与单元格的大小刚好适度,7.2 单元格大小与图片大不匹配  2)增加模糊匹配功能。即单元格 是“A”,那么名为“ABC”、“A”、“Acer”等的图片都可以同时导入进来,且按顺序模向排列整齐 3.创建图片目录:创建目录后自动导入图片,不需要像前一版将建目录和导入图片分两步执 4.清除 重复 值:增加对被清除掉的单元格填充背色的功能,以及询问用户是保留第一个还是最后一个 5.标示 重复 值:不再只对一列生效,不再只能所有 重复 值只产生一种颜色,而且多个 重复 值用多个不同颜色呈现出来 6.定位工具:增加按格式定位功能 7.“工作表”函数:修改为“sheet”,功能更强大,对取出的工作表建立链接功能 8.建立图片目录:增加建立目录后批量导入图片的询问,选择是就导入图片 9.修改 插入 函数的方式 10.修正“合并”函数的BUG,使其忽略空单元格 11.背景着色:升级智能着色功能,即可以同时对 与列着色,也可以对选区着色,由用户选择区域大小自动判断 12.可原还的合并居 :合并时可以随心所欲定义分隔符,且在合并后样式保持合并前一致,可以随时还原,包括重启工作簿后仍然可以还原。 13.让百宝箱在Excel 2003 显示为菜单,而在2007和2010 显示为功能区。 14.导入Flash动画可以自动判断Flash的大小,不再需要手工指定高与宽。 15.改变区域加密工具的算法,比上一版更不易出错。 _________________________________________________
alter table user modify tel varchar(15) default ‘02087654321’; 修改tel列的位置,在第一列显示 alter table user modify tel varchar(15) default '02087654321' first; 修改tel列的位置,在指定列之后显示 alter table user modify tel varchar(15) default '02087654321' after age; 注意:alter modify不支持一次修改多个列,但是Oracle支持多列修改 但是MySQL可以通过多个modify的方式完成: alter table user modify tel varchar(15) default '02087654321' first, modify name varchar(20) after tel; 11、 删除指定字段 alter table user drop photo; 12、 重命名表数据 alter table user rename to users; 字段重命名 alter table users change name u_name varchar(10); alter table users change sex u_sex varchar(10) after u_name; 如果需要改变列名建议使用change,如果需要改变数据类型和显示位置可以使用modify 13、 删除表 drop table users; drop删除表会删除表结构,表 对象 将不存在数据 ;数据也不会存在;表内的 对象 也不存在,如: 引、视图、约束; truncate删除表 truncate都被当成DDL出来,truncate的作用就是删除该表里的全部数据,保留表结构。相当于DDL 的delete语句, 但是truncate比delete语句的速度要快得多。但是truncate 不能 带条件删除指定数据,只会删除所有的数据。如果删除的表有外 , 删除的速度类似于delete。但新版本的MySQL truncate的速度比delete速度快。 MySQL 约束保存在information_schema数据库的table_constraints ,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束: not null:非空约束,指定某列不为空 unique: 唯一 约束,指定某列和几列组合的数据 不能 重复 primary key:主 约束,指定某列的数据 不能 重复 唯一 foreign key:外 ,指定该列记录属于主表 的一条记录,参照另一条数据 check:检查,指定一个表达式,用于检验指定数据 MySQL不支持check约束,但可以使用check约束,而没有任何效果; 根据约束数据列限制,约束可分为: 单列约束:每个约束只约束一列 多列约束:每个约束约束多列数据 MySQL 约束保存在information_schema数据库的table_constraints ,可以通过该表查询约束信息; 1、 not null约束 非空约束用于确保当前列的值不为空值,非空约束只能出现在表 对象 的列上。 Null类型特征: 所有的类型的值都可以是null,包括int、float等数据类型 空字符串“”是不等于null,0也不等于null create table temp( id int not null, name varchar(255) not null default ‘abc’, sex char null 上面的table加上了非空约束,也可以用alter来修改或增加非空约束 增加非空约束 alter table temp modify sex varchar(2) not null; 取消非空约束 alter table temp modify sex varchar(2) null; 取消非空约束,增加默认值 alter table temp modify sex varchar(2) default ‘abc’ null; 2、 unique 唯一 约束是指定table的列或列组合 不能 重复 ,保证数据的 唯一 性。虽然 唯一 约束不允许出现 重复 的值,但是可以为多个null 同一个表可以有多个 唯一 约束,多个列组合的约束。在创建 唯一 约束的时候,如果不给 唯一 约束名称,就默认和列名相同。 唯一 约束不仅可以在一个表内创建,而且可以同时多表创建组合 唯一 约束。 MySQL会给 唯一 约束的列上默认创建一个 唯一索引 ; create table temp ( id int not null, name varchar(25), password varchar(16), --使用表级约束语法, constraint uk_name_pwd unique(name, password) 表示用户名和密码组合 不能 重复 添加 唯一 约束 alter table temp add unique(name, password); alter table temp modify name varchar(25) unique; alter table temp drop index name; 3、 primary key 主 约束相当于 唯一 约束+非空约束的组合,主 约束列不允许 重复 ,也不允许出现空值;如果的多列组合的主 约束, 那么这些列都不允许为空值,并且组合的值不允许 重复 。 每个表最多只允许一个主 ,建立主 约束可以在列级别创建,也可以在表级别上创建。MySQL的主 名总是PRIMARY, 当创建主 约束时,系统默认会在所在的列和列组合上建立对应的 唯一索引 。 create table temp( /*主 约束*/ id int primary key, name varchar(25) create table temp2( id int not null, name varchar(25), pwd varchar(15), constraint pk_temp_id primary key(id) 组合模式: create table temp2( id int not null, name varchar(25), pwd varchar(15), constraint pk_temp_id primary key(name, pwd) alter删除主 约束 alter table temp drop primary key; alter添加主 alter table temp add primary key(name, pwd); alter修改列为主 alter table temp modify id int primary key; 设置主 自增 create table temp( id int auto_increment primary key, name varchar(20), pwd varchar(16) auto_increment自增模式,设置自增后在 插入 数据的时候就不需要给该列 插入 值了。 4、 foreign key 约束 外 约束是保证一个或两个表之间的参照完整性,外 是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。 也就是说从表的外 值必须在主表 能找到或者为空。 当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表 依赖该记录的数据, 然后才可以删除主表的数据。还有一种就是级联删除子表数据。 注意:外 约束的参照列,在主表 引用的只能是主 唯一 约束的列,假定引用的主表列不是 唯一 的记录, 那么从表引用的数据就不确定记录的位置。同一个表可以有多个外 约束。 创建外 约束: create table classes( id int auto_increment primary key, name varchar(20) create table student( id int auto_increment, name varchar(22), constraint pk_id primary key(id), classes_id int references classes(id) 通常先建主表,然后再建从表,这样从表的参照引用的表才存在。 表级别创建外 约束: create table student( id int auto_increment primary key, name varchar(25), classes_id int, foreign key(classes_id) references classes(id) 上面的创建外 的方法没有指定约束名称,系统会默认给外 约束分配外 约束名称,命名为student_ibfk_n, 其 student是表名,n是当前约束从1开始的整数。 指定约束名称: create table student( id int auto_increment primary key, name varchar(25), classes_id int, /*指定约束名称*/ constraint fk_classes_id foreign key(classes_id) references classes(id) 多列外 组合,必须用表级别约束语法: create table classes( id int, name varchar(20), number int, primary key(name, number) create table student( id int auto_increment primary key, name varchar(20), classes_name varchar(20), classes_number int, /*表级别联合外 */ foreign key(classes_name, classes_number) references classes(name, number) 删除外 约束: alter table student drop foreign key student_ibfk_1; alter table student drop foreign key fk_student_id; 增加外 约束 alter table student add foreign key(classes_name, classes_number) referencesclasses(name, number); 自引用、自关联(递归表、树状表) create table tree( id int auto_increment primary key, name varchar(50), parent_id int, foreign key(parent_id) references tree(id) 级联删除:删除主表的数据时,关联的从表数据也删除,则需要在建立外 约束的后面增加on deletecascade 或on delete set null,前者是级联删除,后者是将从表的关联列的值设置为null。 create table student( id int auto_increment primary key, name varchar(20), classes_name varchar(20), classes_number int, /*表级别联合外 */ foreign key(classes_name, classes_number) references classes(name, number) on deletecascade 5、 check约束 MySQL可以使用check约束,但check约束对数据验证没有任何作用。 create table temp( id int auto_increment, name varchar(20), age int, primary key(id), /*check约束*/ check(age > 20) 上面check约束要求age必须大于0,但没有任何作用。但是创建table的时候没有任何错误或警告。 Ø 引是存放在模式(schema) 的一个数据库 对象 引的作用就是提高对表的检 查询速度, 引是通过快速访问的方法来进 快速定位数据,从而减少了对磁盘的读写操作。 引是数据库的一个 对象 ,它 不能 独立存在,必须对某个表 对象 依赖。 提示: 引保存在information_schema数据库里的STATISTICS表 。 创建 引方式: 自动:当表上定义主 约束、 唯一 、外 约束时,该表会被系统自动添加上 引。 手动:手动在相关表或列上增加 引,提高查询速度。 删除 引方式: 自动:当表 对象 被删除时,该表上的 引自动被删除 手动:手动删除指定表 对象 的相关列上的 引类似于书籍的目录,可以快速定位到相关的数据,一个表可以有多个 引。 创建 引: create index idx_temp_name on temp(name); 组合 引: create index idx_temp_name$pwd on temp(name, pwd); 删除 引: drop index idx_temp_name on temp; 视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并 不能 存储数据。 视图的作用、优点: 限制对数据的访问 让复杂查询变得简单 提供数据的独立性 可以完成对相同数据的不同显示 创建、修改视图 create or replace view view_temp select name, age from temp; 通常我们并不对视图的数据做修改操作,因为视图是一张虚拟的表,它并不存储实际数据。如果想让视图不被修改,可以用with check option来完成限制。 create or replace view view_temp select * from temp with check option; 修改视图: alter view view_temp select id, name from temp; 删除视图: drop view view_temp; 显示创建语法: show create view v_temp; Ø DML语句 DML主要针对数据库表 对象 的数据而言的,一般DML完成: 插入 新数据 修改已添加的数据 删除不需要的数据 1、 insert into 插入 语句 insert into temp values(null, ‘jack’, 25); 主 自增可以不 插入 ,所以用null代替 insert into temp(name, age) values(‘jack’, 22); 在表面后面带括号,括号 写列名,values 写指定列名的值即可。当省略列名就表示 插入 全部数据, 注意 插入 值的顺序和列的顺序需要保持一致。 Set方式 插入 ,也可以指定列 insert into temp set id = 7, name = 'jason'; MySQL 的table的外 引用列可以 插入 数据可以为null,不参照主表的数据。 使用子查询 插入 数据 insert into temp(name) select name from classes; 多 插入 insert into temp values(null, ‘jack’, 22), (null, ‘jackson’ 23); 2、 update 修改语句 update主要完成对数据的修改操作,可以修改一条或多条数据。修改多条或指定条件的数据,需要用where条件来完成。 修改所有数据 update temp set name = ‘jack2’; 所有的数据的name会被修改,如果修改多列用“,”分开 update temp set name = ‘jack’, age = 22; 修改指定条件的记录需要用where update temp set name = ‘jack’ where age > 22; 3、 delete 删除语句 删除table 的数据,可以删除所有,带条件可以删除指定的记录。 删除所有数据 delete from temp; 删除指定条件数据 delete from temp where age > 20; Ø select 查询、function 函数 select查询语句用得最广泛、功能也最丰富。可以完成单条记录、多条记录、单表、多表、子查询等。 1、 查询某张表所有数据 select * from temp; *代表所有列,temp代表表名,不带条件就查询所有数据 2、 查询指定列和条件的数据 select name, age from temp where age = 22; 查询name和age这两列,age 等于22的数据。 3、 对查询的数据进 运算操作 select age + 2, age / 2, age – 2, age * 2 from temp where age – 2 > 22; 4、 concat函数,字符串连接 select concat(name, ‘-eco’) from temp; concat和null进 连接,会导致连接后的数据成为null 5、 as 对列重命名 select name as ‘名称’ from temp; as也可以省略不写,效果一样 如果重命名的列名出现特殊字符,如“‘”单引号,那就需要用双引号引在外面 select name as “名’称” from temp; 6、 也可以给table去别名 select t.name Name from temp as t; 7、 查询常量 类似于SQL Server select 5 + 2; select concat('a', 'bbb'); 8、 distinct 去掉 重复 数据 select distinct id from temp; 多列将是组合的 重复 数据 select distinct id, age from temp; 9、 where 条件查询 大于>、大于等于>=、小于<、小于等于<=、等于=、不等于<> 都可以出现在where语句 select * from t where a > 2 or a >= 3 or a < 5 or a <= 6 or a = 7 or a <> 0; 10、 and 并且 select * from temp where age > 20 and name = ‘jack’; 查询名称等于jack并且年龄大于20的 11、 or 或者 满足一个即可 select * from tmep where name = ‘jack’ or name = ‘jackson’; 12、 between v and v2 大于等于v且小于等于v2 select * form temp where age between 20 and 25; 13、 in 查询 可以多个条件 类似于or select * from temp where id in (1, 2, 3); 查询id在括号 出现的数据 14、 like 模糊查询 查询name以j开头的 select * from temp where name like ‘j%’; 查询name包含k的 select * from temp where name like ‘%k%’; escape转义 select * from temp where name like ‘/_%’ escape ‘/’; 指定/为转义字符,上面的就可以查询name 包含“_”的数据 15、 is null、is not null 查询为null的数据 select * from temp where name is null; 查询不为null的数据 select * from temp where name is not null; 16、 not select * from temp where not (age > 20); 取小于等于20的数据 select * from temp where id not in(1, 2); 17、 order by 排序,有desc、asc升序、降序 select * from temp order by id; 默认desc排序 select * from temp order by id asc; select * from temp order by id, age; Ø function 函数 函数的作用比较大,一般多用在select查询语句和where条件语句之后。按照函数返回的结果, 可以分为:多 函数和单 函数;所谓的单 函数就是将每条数据进 独立的计算,然后每条数据得到一条结果。 如:字符串函数;而多 函数,就是多条记录同时计算,得到最终只有一条结果记录。如:sum、avg等 多 函数也称为聚集函数、分组函数,主要用于完成一些统计功能。MySQL的单 函数有如下特征: 单 函数的参数可以是变量、常量或数据列。单 函数可以接受多个参数,但返回一个值。 单 函数就是它会对每一 单独起作用,每一 (可能包含多个参数)返回一个结果。 单 函数可以改变参数的数据类型。单 函数支持嵌套使用:内层函数的返回值是外层函数的参数。 单 函数可以分为: 类型转换函数; 流程控制语句; 加密解密函数; 单 函数 1、 char_length字符长度 select char_length(tel) from user; 2、 sin函数 select sin(age) from user; select sin(1.57); 3、 添加日期函数 select date_add('2010-06-21', interval 2 month); interval是一个关 字,2 month是2个月的意思,2是数值,month是单位 select addDate('2011-05-28', 2); 在前面的日期上加上后面的天数 4、 获取当前系统时间、日期 select curdate(); select curtime(); 5、 加密函数 select md5('zhangsan'); 6、 Null 处理函数 select ifnull(birthday, 'is null birthday') from user; 如果birthday为null,就返回后面的字符串 select nullif(age, 245) from user; 如果age等于245就返回null,不等就返回age select isnull(birthday) from user; 判断birthday是否为null select if(isnull(birthday), 'birthday is null', 'birthday not is null') from user; 如果birthday为null或是0就返回birthday is null,否则就返回birthday not is null;类似于三目运算符 7、 case 流程函数 case函数是一个流程控制函数,可以接受多个参数,但最终只会返回一个结果。 select name, (case sex when 1 then '男' when 0 then '女' else '火星人' ) sex from user; 组函数就是多 函数,组函数是完成一 或多 结果集的运算,最后返回一个结果,而不是每条记录返回一个结果。 1、 avg平均值运算 select avg(age) from user; select avg(distinct age) from user; 2、 count 记录条数统计 select count(*), count(age), count(distinct age) from user; 3、 max 最大值 select max(age), max(distinct age) from user; 4、 min 最小值 select min(age), min(distinct age) from user; 5、 sum 求和、聚和 select sum(age), sum(distinct age) from user; select sum(ifnull(age, 0)) from user; 6、 group by 分组 select count(*), sex from user group by sex; select count(*) from user group by age; select * from user group by sex, age; 7、 having进 条件过滤 不能 在where子句 过滤组,where子句仅用于过滤 。过滤group by需要having 不能 在where子句 用组函数,having 才能用组函数 select count(*) from user group by sex having sex <> 2; Ø 多表查询和子查询 数据库的查询功能最为丰富,很多时候需要用到查询完成一些事物,而且不是单纯的对一个表进 操作。而是对多个表进 联合查询, MySQL 多表连接查询有两种规范,较早的SQL92规范支持,如下几种表连接查询: 非等值连接 广义笛卡尔积 SQL99规则提供了可读性更好的多表连接语法,并提供了更多类型的连接查询,SQL99支持如下几种多表连接查询: 使用using子句的连接 使用on子句连接 全部连接或者左右外连接 SQL92的连接查询 SQL92的连接查询语法比较简单,多将多个table放置在from关 字之后,多个table用“,”隔开; 连接的条件放在where条件之后,与查询条件直接用and逻辑运算符进 连接。如果条件 使用的是相等, 则称为等值连接,相反则称为非等值,如果没有任何条件则称为广义笛卡尔积。 广义笛卡尔积:select s.*, c.* from student s, classes c; 等值:select s.*, c.* from student s, classes c where s.cid = c.id; 非等值:select s.*, c.* from student s, classes c where s.cid <> c.id; select s.*, c.name classes from classes c, student s where c.id = s.classes_id ands.name is not null; SQL99连接查询 1、交叉连接cross join,类似于SQL92的笛卡尔积查询,无需条件。如: select s.*, c.name from student s cross join classes c; 2、自然连接 natural join查询,无需条件,默认条件是将2个table 的相同字段作为连接条件,如果没有相同字段,查询的结果就是空。 select s.*, c.name from student s natural join classes c; 3、using子句连接查询:using的子句可以是一列或多列,显示的指定两个表 同名列作为连接条件。 如果用natural join的连接查询,会把所有的相同字段作为连接查询。而using可以指定相同列及个数。 select s.*, c.name from student s join classes c using(id); 4、 join … on连接查询,查询条件在on 完成,每个on语句只能指定一个条件。 select s.*, c.name from student s join classes c on s.classes_id = c.id; 5、 左右外连接:3种外连接,left [outer] join、right [outer] join,连接条件都是通过用on子句来指定,条件可以等值、非等值。 select s.*, c.name from student s left join classes c on s.classes_id = c.id; select s.*, c.name from student s right join classes c on s.classes_id = c.id; 子查询就是指在查询语句 嵌套另一个查询,子查询可以支持多层嵌套。子查询可以出现在2个位置: from关 字之后,被当做一个表来进 查询,这种用法被称为 内视图,因为该子查询的实质就是一个临时视图 出现在where条件之后作为过滤条件的值 子查询注意点: 子查询用括号括起来,特别情况下需要起一个临时名称 子查询当做临时表时(在from之后的子查询),可以为该子查询起别名,尤其是要作为前缀来限定数据列名时 子查询用作过滤条件时,将子查询放在比较运算符的右边,提供可读性 子查询作为过滤条件时,单 子查询使用单 运算符,多 子查询用多 运算符 将from后面的子查询当做一个table来用: select * from (select id, name from classes) s where s.id in (1, 2); 当做条件来用: select * from student s where s.classes_id in (select id from classes); select * from student s where s.classes_id = any (select id from classes); select * from student s where s.classes_id > any (select id from classes); Ø 操作符和函数 1、 boolean只判断 select 1 is true, 0 is false, null is unknown; select 1 is not unknown, 0 is not unknown, null is not unknown; 2、 coalesce函数,返回第一个非null的值 select coalesce(null, 1); select coalesce(1, 1); select coalesce(null, 1); select coalesce(null, null); 3、 当有2个或多个参数时,返回最大的那个参数值 select greatest(2, 3); select greatest(2, 3, 1, 9, 55, 23); select greatest('D', 'A', 'B'); 4、 Least函数,返回最小值,如果有null就返回null值 select least(2, 0); select least(2, 0, null); select least(2, 10, 22.2, 35.1, 1.1); 5、 控制流函数 select case 1 when 1 then 'is 1' when 2 then 'is 2' else 'none' end; select case when 1 > 2 then 'yes' else 'no' end; 6、 ascii字符串函数 select ascii('A'); select ascii('1'); 7、 二进制函数 select bin(22); 8、 返回二进制字符串长度 select bit_length(11); 9、 char将值转换成字符,小数取整四舍五入 select char(65); select char(65.4); select char(65.5); select char(65.6); select char(65, 66, 67.4, 68.5, 69.6, '55.5', '97.3'); 10、 using改变字符集 select charset(char(0*65)), charset(char(0*65 using utf8)); 11、 得到字符长度char_length,character_length select char_length('abc'); select character_length('eft'); 12、 compress压缩字符串、uncompress解压缩 select compress('abcedf'); select uncompress(compress('abcedf')); 13、 concat_ws分隔字符串 select concat_ws('#', 'first', 'second', 'last'); select concat_ws('#', 'first', 'second', null, 'last'); Ø 事务处理 开始事务:start transaction 提交事务:commit 回滚事务:rollback 设置自动提交:set autocommit 1 | 0 atuoCommit系统默认是1立即提交模式;如果要手动控制事务,需要设置set autoCommit 0; 这样我们就可以用commit、rollback来控制事务了。 在一段语句块 禁用autocommit 而不是set autocommit start transaction; select @result := avg(age) from temp; update temp set age = @result where id = 2; select * from temp where id = 2;//值被改变 rollback;//回滚 select * from temp where id = 2;//变回来了 在此期间只有遇到commit、rollback,start Transaction的禁用autocommit才会结束。然后就恢复到原来的autocommit模式; 不能 回滚的语句 有些语句 不能 被回滚。通常,这些语句包括数据定义语言(DDL)语句,比如创建或取消数据库的语句, 和创建、取消或更改表或存储的子程序的语句。 您在设计事务时,不应包含这类语句。如果您在事务的前部 发布了一个 不能 被回滚的语句, 则后部的其它语句会发生错误,在这些情况下,通过发布ROLLBACK语句 不能 回滚事务的全部效果。 一些操作也会隐式的提交事务 如alter、create、drop、rename table、lock table、set autocommit、starttransaction、truncate table 等等, 在事务 出现这些语句也会提交事务的 事务 不能 嵌套事务 事务的保存点 Savepoint pointName/Rollback to savepoint pointName 一个事务可以设置多个保存点,rollback可以回滚到指定的保存点,恢复保存点后面的操作。 如果有后面的保存点和前面的同名,则删除前面的保存点。 Release savepoint会删除一个保存点,如果在一段事务 commit或rollback,则事务结束,所以保存点删除。 Set Transaction设计数据库隔离级别 SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE } 本语句用于设置事务隔离等级,用于下一个事务,或者用于当前会话。 在默认情况下,SET TRANSACTION会为下一个事务(还未开始)设置隔离等级。 如果您使用GLOBAL关 词,则语句会设置全局性的默认事务等级, 用于从该点以后创建的所有新连接。原有的连接不受影响。使用SESSION关 测可以设置默认事务等级, 用于对当前连接执 的所有将来事务。 默认的等级是REPEATABLE READ全局隔离等级。 select 1+1; # 单 注释 select 1+1; -- 单 注释 select 1 /* 多 注释 */ + 1; Ø 基本数据类型操作 select 'hello', '"hello"', '""hello""', 'hel''lo', '/'hello'; select "hello", "'hello'", "''hello''", "hel""lo", "/"hello"; /n换 select 'This/nIs/nFour/nLines'; select 'hello / world!'; select 'hello /world!'; select 'hello // world!'; select 'hello /' world!'; Ø 设置数据库mode模式 SET sql_mode='ANSI_QUOTES'; create table t(a int); create table "tt"(a int); create table "t""t"(a int); craate talbe tab("a""b" int); Ø 用户变量 set @num1 = 0, @num2 = 2, @result = 0; select @result := (@num1 := 5) + @num2 := 3, @num1, @num2, @result; Ø 存储过程 创建存储过程: delimiter // create procedure get(out result int) begin select max(age) into result from temp; end// 调用存储过程: call get(@temp); 查询结果: select @temp; 删除存储过程: drop procedure get; 查看存储过程创建语句: show create procedure get; select…into 可以完成单 记录的赋值: create procedure getRecord(sid int) begin declare v_name varchar(20) default 'jason'; declare v_age int; declare v_sex bit; select name, age, sex into v_name, v_age, v_sex from temp where id = sid; select v_name, v_age, v_sex; call getRecord(1); 函数类似于存储过程,只是调用方式不同 例如:select max(age) from temp; 创建函数: create function addAge(age int) returns int return age + 5; 使用函数: select addAge(age) from temp; 删除函数: drop function if exists addAge; drop function addAge; 显示创建语法: show create function addAge; 声明游标:declare cur_Name cursor for select name from temp; 打开游标:open cur_Name; Fetch游标:fetch cur_Name into @temp; 关闭游标:close cur_Name; CREATE PROCEDURE cur_show() BEGIN DECLARE done INT DEFAULT 0; DECLARE v_id, v_age INT; DECLARE v_name varchar(20); DECLARE cur_temp CURSOR FOR SELECT id, name, age FROM temp; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur_temp; REPEAT FETCH cur_temp INTO v_id, v_name, v_age; IF NOT done THEN IF isnull(v_name) THEN update temp set name = concat('test-json', v_id) where id = v_id; ELSEIF isnull(v_age) THEN update temp set age = 22 where id = v_id; END IF; END IF; UNTIL done END REPEAT; CLOSE cur_temp; Ø 触发器 触发器分为insert、update、delete三种触发器事件类型 还有after、before触发时间 创建触发器: create trigger trg_temp_ins before insert on temp for each row begin insert into temp_log values(NEW.id, NEW.name); end// 删除触发器: drop trigger trg_temp_ins
《SQL Server 2008宝典》全面介绍了SQL Server 2008各方面的知识,全书由6部分组成:第1部分为数据库的基础篇,介绍了数据库的类型、概念、 对象 、SQL语言等;第2部分为SQLServer 2008的准备篇,介绍了SQL Server 2008的功能、特性、各版本的比较、安装方法、SQL Server 2008的服务、客户端的工具等;第3部分为SQL Server 2008的基本操作篇,介绍如何管理与配置SQL Server 2008服务器、如何创建数据库和数据表、如何对数据库里的数据进 操作;第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进 复杂的运算,以及如何使用视图、存储过程、触发器、 引、用户定义数据类型、用户定义函数、全文 引、游标、事务和锁、统计信息和同义词等方面的知识;第5部分为SQL Server高级技术,介绍如何进 数据库备份与恢复、如何规划数据库、如何保证数据库的安全、复制与发布、自动化管理、如何使用性能工具优化数据库、数据的导入导出、SQL Server邮件的使用、Analysis Services、Reporting Services、SQL Server与XML的应用,以及如何使用客户端和应用程序访问SQL Server;第6部分为SQL Server 2008改进篇,介绍了SQL Server 2008相对于之前版本进 了哪些方面的重大改进和优化,进一步帮助读者了解SQL Server 2008更多的独有特性。   《SQL Server 2008宝典》适合SQL Server 2008的初学者学习,也适合子数据库的管理人员和开发人员阅读和参考。   《SQL Server 2008宝典》:实例丰富,内容充实。书 针对每一个知识点列举了大量实例来说明该功能如何实现,全书共有超过500个精彩实例。   讲解通俗,步骤详细。通过通俗易懂的语言讲解SQL Server 2008的各个强大功能,并配以插图讲解和详细的步骤说明,帮助读者快速掌握实用技能。   由浅入深,难易穿插。《SQL Server 2008宝典》面向入门级和提高级两类读者,每个知识点都采用由浅入深的讲解方式,并穿插介绍重点和难点。   提供源码,方便学习。书 涉及到的T—SQL程序在网站上提供下载,打开相应SQL文件即可直接执 的代码。   SQL Server 2008是一个能用于大型联机事务处理、数据仓库和电子商务等方面应用的数据库平台,也是一个能用于数据集成、数据分析和报表解决方案的商业智能平台,为用户提供了强大、集成、便于使用的工具,使系统管理员与普通用户能更方便、更快捷地管理数据库或设计、开发应用程序。 封面 -33 封底 803 扉页 -32 版权 -31 前言 -30 目录 -26 第1部分 基础篇 1 第1章 认识数据库 2 1.1 数据库的类型 2 1.1.1 结构型数据库 2 1.1.2 网络型数据库 2 1.1.3 关系型数据库 2 1.1.4 面向 对象 型数据库 3 1.2 数据库的基本概念 3 1.2.1 数据 3 1.2.2 数据库 3 1.2.3 数据库管理系统 3 1.2.4 数据库系统 3 1.3 常见的数据库 对象 3 1.3.1 表与记录 4 1.3.2 主 与外 4 1.3.3 引 4 1.3.4 约束 5 1.3.5 视图 5 1.3.6 关系图 5 1.3.7 默认值 5 1.3.8 规则 5 1.3.9 存储过程 6 1.3.10 触发器 6 1.3.11 用户和角色 6 1.4 数据库管理系统的基本功能 6 1.4.1 定义数据 6 1.4.2 处理数据 6 1.4.3 保证数据安全 6 1.4.4 备份和恢复数据 6 1.5 SQL语言简介 6 1.5.1 SQL语言的历史 7 1.5.2 SQL语言的优点 7 1.5.3 SQL语言分   《SQL Server 2008宝典》全面介绍了SQL Server 2008各方面的知识,全书由6部分组成:第1部分为数据库的基础篇,介绍了数据库的类型、概念、 对象 、SQL语言等;第2部分为SQLServer 2008的准备篇,介绍了SQL Server 2008的功能、特性、各版本的比较、安装方法、SQL Server 2008的服务、客户端的工具等;第3部分为SQL Server 2008的基本操作篇,介绍如何管理与配置SQL Server 2008服务器、如何创建数据库和数据表、如何对数据库里的数据进 操作;第4部分为数据库管理篇,介绍如何使用T-SQL程序对数据进 复杂的运算,以及如何使用视图、存储过程、触发器、 引、用户定义数据类型、用户定义函数、全文 引、游标、事务和锁、统计信息和同义词等方面的知识;第5部分为SQL Server高级技术,介绍如何进 数据库备份与恢复、如何规划数据库、如何保证数据库的安全、复制与发布、自动化管理、如何使用性能工具优化数据库、数据的导入导出、SQL Server邮件的使用、Analysis Services、Reporting Services、SQL Server与XML的应用,以及如何使用客户端和应用程序访问SQL Server;第6部分为SQL Server 2008改进篇,介绍了SQL Server 2008相对于之前版本进 了哪些方面的重大改进和优化,进一步帮助读者了解SQL Server 2008更多的独有特性。   《SQL Server 2008宝典》适合SQL Server 2008的初学者学习,也适合子数据库的管理人员和开发人员阅读和参考。   《SQL Server 2008宝典》:实例丰富,内容充实。书 针对每一个知识点列举了大量实例来说明该功能如何实现,全书共有超过500个精彩实例。   讲解通俗,步骤详细。通过通俗易懂的语言讲解SQL Server 2008的各个强大功能,并配以插图讲解和详细的步骤说明,帮助读者快速掌握实用技能。   由浅入深,难易穿插。《SQL Server 2008宝典》面向入门级和提高级两类读者,每个知识点都采用由浅入深的讲解方式,并穿插介绍重点和难点。   提供源码,方便学习。书 涉及到的T—SQL程序在网站上提供下载,打开相应SQL文件即可直接执 的代码。   SQL Server 2008是一个能用于大型联机事务处理、数据仓库和电子商务等方面应用的数据库平台,也是一个能用于数据集成、数据分析和报表解决方案的商业智能平台,为用户提供了强大、集成、便于使用的工具,使系统管理员与普通用户能更方便、更快捷地管理数据库或设计、开发应用程序。 封面 -33 封底 803 扉页 -32 版权 -31 前言 -30 目录 -26 第1部分 基础篇 1 第1章 认识数据库 2 1.1 数据库的类型 2 1.1.1 结构型数据库 2 1.1.2 网络型数据库 2 1.1.3 关系型数据库 2 1.1.4 面向 对象 型数据库 3 1.2 数据库的基本概念 3 1.2.1 数据 3 1.2.2 数据库 3 1.2.3 数据库管理系统 3 1.2.4 数据库系统 3 1.3 常见的数据库 对象 3 1.3.1 表与记录 4 1.3.2 主 与外 4 1.3.3 引 4 1.3.4 约束 5 1.3.5 视图 5 1.3.6 关系图 5 1.3.7 默认值 5 1.3.8 规则 5 1.3.9 存储过程 6 1.3.10 触发器 6 1.3.11 用户和角色 6 1.4 数据库管理系统的基本功能 6 1.4.1 定义数据 6 1.4.2 处理数据 6 1.4.3 保证数据安全 6 1.4.4 备份和恢复数据 6 1.5 SQL语言简介 6 1.5.1 SQL语言的历史 7 1.5.2 SQL语言的优点 7 1.5.3 SQL语言分
当我们需要将数据存入数据库的时候,由于我们不确定该数据是否已经存在数据库 ,而无法确定是执 插入 操作还是更新操作,通常我们会先根据建立了 唯一索引 的字段去查询,如果不存在,则选择 插入 ,如果存在,则选择更新selet count(0) count from table where 唯一索引 字段的条件 if count == 0 insert update这里我们就需要先进 ...
引分为聚集 引和非聚集 引,数据库 引类似于一本书的目录,在一本书 通过目录可以快速找到你想要的信息,而不需要读完全书。 引主要目的是提高了SQLServer系统的性能,加快数据的查询速度与减少系统的响应时间。 但是 引对于提高查询性能也不是万能的,也不是建立越多的 引就越好。 引建少了,用 WHERE 子句找数据效率低,不利于查找数据。 引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQLSERVER 除了要更新数据表本身,还要连带立即更新所有的相关 引,而且...
在我们使用mybatis对mysql数据库进 增删改查的时候,可能会碰到比较棘手的情况,如这个问题: 当主 id自增时,同一个订单号下的数据可能经过多次更新,且要保证数据库 订单号 唯一 重复 ,我们只能进 更新操作;但对于数据库本不存在的订单号,我们又想进 insert操作,且通过同一条sql语句实现这个功能,那我们该怎么做呢? 操作方法: #第一步:建立 唯一索引 你希望数据库 哪个字段的值作为 唯一索引 ,到MySQL查询界面,使用以下命令: ALTER TABLE student a..
1. 将一个存储过程发布并启用快照时(可更新订阅),分发事务表和命令表 插入 重复 导致冲突,程序不断重试。 队列读取器不断报错,同时也导致分发代理出错 不能 分发。错误如下: 错误消息: 进程无法在“ServerName”上执 “sp_MSadd_replcmds”。 (源: MSSQLServer,错误号: 1007) 不能 具有 唯一索引 'ucMSrepl_transactio
上次说了同一个 对象 里面不同触发器的执 顺序。今天我也想分享一些我在同一个表里面,建上不同的 唯一 约束,不同的 唯一索引 ,看下结果会怎样 首先简单建个测试表,不多,就4列 CREATE TABLE AAA3 (ID INT IDENTITY(1,1),Col1 VARCHAR(50),Col2 VARCHAR(50),Col3 VARCHAR(50)) 情况1:然后往Col1 都添加上 唯一 ...
sql server ,在把旧表数据导入到新表数据 一直出现这个错误,后面原来是设置了 唯一索引 ,才会这样,遇到这种情况应该去检查数据,是否出现 重复 ,后面删掉了才能导入 INSERT INTO [APS2022].[dbo].[新表]( [machine_sn] ,[machine_name] ,[machine_ton] ,[class_name] ,[status] ,[created_by] ,[creat...
### 回答1: mapper自带的批量 插入 方法是MyBatis框架提供的一种快速向数据库 插入 多条记录的方式。这个方法可以一次性处理多个 对象 插入 操作,减少了与数据库的交互次数,提高了 插入 的效率。 使用mapper自带的批量 插入 方法,需要传入一个 对象 的集合作为参数。这个集合 的每个 对象 表示一个要 插入 的记录。在执 插入 操作时,框架会自动将集合 的每个 对象 转化为对应的 插入 语句,从而实现批量 插入 。 与传统的单条 插入 相比,mapper自带的批量 插入 方法 具有 以下优点: 1. 提高了数据库的 插入 效率,减少了与数据库的交互次数。 2. 简化了代码,减少了 重复 插入 操作,提高了开发效率。 3. 对于大量数据的 插入 ,使用批量 插入 方法可以有效地降低系统的负载和资源消耗。 不过,在使用mapper自带的批量 插入 方法时,也需要注意以下几点: 1. 插入 对象 必须是相同的类型,且 对象 的属性与数据库表的字段对应。 2. 每个 对象 的属性值 不能 为null,否则会报错。 3. 在 插入 大量数据时,可能会导致数据库连接超时或内存溢出等问题,需要根据具体情况进 性能优化。 总之,mapper自带的批量 插入 方法是一种方便快捷的 插入 数据的方式,能够提高数据库 插入 的效率和开发效率,适用于批量 插入 大量数据的场景。 ### 回答2: mapper自带的批量 插入 方法是指在使用MyBatis的Mapper接口操作数据库时,可以使用MyBatis提供的批量 插入 方法,一次性 插入 多条数据。 在MyBatis ,我们可以通过使用Mapper接口的`insertList`方法来实现批量 插入 。该方法接收一个List作为参数,List 的每个元素都是要 插入 对象 。 使用Mapper自带的批量 插入 方法有以下几个好处: 1. 效率更高:使用批量 插入 方法可以减少与数据库的交互次数,提高 插入 数据的效率。这样可以有效地减少数据库的负载,提高系统的整体性能。 2. 简便快捷:使用批量 插入 方法可以简化程序开发过程,减少编写 插入 语句的工作量。只需将要 插入 对象 封装到一个List ,然后调用Mapper的insertList方法即可。 3. 可维护性高:使用Mapper自带的批量 插入 方法可以使代码更加易读、易维护。通过统一的接口方法,可以减少代码冗余,提高代码的复用性。 需要注意的是,批量 插入 方法只适用于使用相同的 插入 语句 插入 多条记录的情况。如果在批量 插入 过程 有某条 插入 失败,整个批量 插入 操作将会被回滚。因此,在进 批量 插入 前,需要确保要 插入 的数据的有效性,以避免数据 插入 异常。 ### 回答3: mapper自带的批量 插入 方法是MyBatis框架 的一种快速 插入 数据的功能。通过这种方法,可以批量 插入 多条数据,提高数据 插入 的效率。 使用mapper自带的批量 插入 方法,我们首先需要定义一个 插入 语句,在 插入 语句 使用批量 插入 的语法。接下来,在mapper接口 定义一个批量 插入 的方法,并将 插入 语句的ID作为该方法的参数。在使用时,通过调用该方法并传入需要 插入 的数据列表,即可实现批量 插入 。 对于大量数据的 插入 操作,使用mapper自带的批量 插入 方法相比于逐条 插入 的方式,其性能表现更佳。这是因为批量 插入 可以减少与数据库的交互次数,从而节省了网络带宽和数据库连接资源的开销。同时,批量 插入 还可以利用数据库的批量 插入 功能,提高数据的 插入 速度。 需要注意的是,使用批量 插入 方法时,我们需要保证 插入 的数据格式正确,即数据的顺序与 插入 语句定义的列顺序一致,并且数据的类型与列的类型相匹配。此外,如果 插入 的数据 存在 重复 的记录,需要注意数据库 是否已经设置了主 唯一索引 约束,以避免 插入 重复 数据造成的异常。 总而言之,mapper自带的批量 插入 方法是一种便捷且高效的数据 插入 方式,适用于需要 插入 大量数据的场景,能够极大地提升 插入 数据的效率。