当尝试
插入
数据,或者更新某个表的时候出现
不能
在
具有
唯一索引
“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服务器、如何创建数据库和数据表、如何对数据库里的数据进
数据库备份与恢复、如何规划数据库、如何保证数据库的安全、复制与发布、自动化管理、如何使用性能工具优化数据库、数据的导入导出、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宝典》面向入门级和提高级两类读者,每个知识点都采用由浅入深的讲解方式,并穿插介绍重点和难点。
提供源码,方便学习。书
的代码。
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 常见的数据库
引 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服务器、如何创建数据库和数据表、如何对数据库里的数据进
数据库备份与恢复、如何规划数据库、如何保证数据库的安全、复制与发布、自动化管理、如何使用性能工具优化数据库、数据的导入导出、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宝典》面向入门级和提高级两类读者,每个知识点都采用由浅入深的讲解方式,并穿插介绍重点和难点。
提供源码,方便学习。书
的代码。
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 常见的数据库
引 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语言分
1. 将一个存储过程发布并启用快照时(可更新订阅),分发事务表和命令表