SQLserverOracleMysql语法与用法对比_第1页
SQLserverOracleMysql语法与用法对比_第2页
SQLserverOracleMysql语法与用法对比_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作SQ:LServerOracleMysql查看表结构execsp_help表名desc表名desc表名或describe表名或showcolumnsfrom表名;修改数据库名称execsp_renamedb旧数据库名,'新数据库名,不详修改表名execsp_rename旧表明,'新表明rename旧表名to新表名修改列名execsp_rename表.旧列名,'新列名altertable表名renamecolumn旧列名to新列名删除数据库dropdatabase数据库名不详添加表中一列altertable表名Add列名数据库类型altertable表明add(列名数

2、据类型)或altertable表名Add列名数据库类型删除表中一列altertable表名dropcolumn列名altertable表名dropcolumn歹1名修改表现有列altertable表名altercolumn列名新数据库类型大小altertable表明modify(列名数据类型)删除约束altertable表名dropconstraint约束名完全一样添加主键约束altertable表名addconstraint主键约束名primarykey例名)完全一样altertable表明addprimarykey(列名)删除主键约束altertable表名dropprimarykey添加

3、唯一约束altertable表名addconstraint唯一约束名unique(列名)完全一样altertable表名addunique(歹U名)添加默认约束altertable表名addconstraintdefault(值)for列名完全一样添加检查altertable表名完全一样约束addconstraintcheck(列名10)添加外键约束altertable子表addconstraint夕卜键约束名foreignkey(子表的列名)references主表(歹U名)onupdatecascade/onupdateaction注启、:默认和加onupdateaction表示更新受限加

4、onupdatecascade表小更新不受限,多项操作时用逗号隔开完全一样添加索引约束altertable表名addindex索引名(列名)添加普通索引:createindex索引名ON表名(列名)添加唯一索引:createunique索引名ON表名(列名)删除索引dropindex索引名on表名altertable表名dropindex索弓I名创建登陆帐户windows身份:execsp_grantlogWindows域名密码sql身份:execsp_addlogin登陆帐户,'密码创建数据库用户use数据库名Windwos身份:Execsp_grantdbaccessWindows

5、域名密码,数据库用户名Sql身份:Execsp_grantdbaccess登陆帐户,'数据库用户名,向数据库用户授权use数据库名Grant权限on表明to数据库用户删除权限revoke权限on表名from数据库用户删除数据库用户execsp_revokedbaccess数据正用户'删除登陆帐户windows身份:execsp_droplogin登陆帐户名sql身份:execsp_revokelogin登陆帐户名移动数据库1. 分离数据库:Execsp_detach_db数据库名2. 附加数据库:Execsp_attach_db数据库名,filename1='主数据文件

6、路径,filename2='日志文件路径数据库的信息查询查看数据库的所有对象:Select*fromsysobjects查询数据库select*fromsysdatabases注息:卜面都是通过(select*from对象)来查看信息触发器user_triggers过程user_procedures查看源代码usersource查看所有数据库showdatabases;查看库所有表showtables;(表)查看表结构和属性ExecSp_help表名查看所有数据库Execsp_databases查看数据库的位置和属性Execsp_helpdb数据库名查看表中的约束execsp_help

7、constraint表名查看表的索引execsp_helpindex表查看系统中的储畜过exec查看数据库对象user_objects查看错误信息showerrors查看索引信息user_indexes查看分区索引user_ind_partitions查看有关基于列创建的索引user_ind_columns查看表空间-user_tablespaces查看序歹U-user_sequences查看同义词-user_ind_columns查看用户表信息-user_tables册看用户所有的表信息:user_all_tablesspstoredprocedures储蓄过程/空查看表结构和属性usein

8、formation_schema;select*fromcolumnswheretable_name=表名查看表源代码showcreatetable表名;查看存储过程源代showcreateprocedure过程名查看视图源代码showcreateprocedure过程名查看视图资代码showcreateVIEW视图名查看表的索弓1showindexfrom表名查看表的索弓1showkeysfrom表明查看过程,函数,视图,Execsp_helptext对查看数据库所有登陆select*from查看数据库所有数据select*fromsysusers时间datetimesysdateNOW()

9、时间戳timestamp字符串varchar(20)varchar2(20)获取当前系统时间和时间戳getdate()sysdate数据插入不一定要指定具体列名不一定要指定具体列名必须指定具体列名标识identity(标识的开始值,标识种右)createsequence序歹U名1.序列名.nextval获取下一个序列的值2.序列名.currval获取当前的序列的值物理文件个数主数据文件:*.mdf=1次数据文件:*.ndf>=0日志文件:*.log>=1数据文件:*.dbf>=1日志文件:*.log>=1字符函数charindex(t_char,s_char,1)从s字

10、符串中的1位置开始查找t字符串所在的下标(默认从1开始)substring(char,pos,len)从pos位置开始截取lenlen(char)获取字符串的长度lower(char)把字符串全部转换成小写upper(char)把字符串全部转换成大写ltrim(char)清除左边的空格rtrim(char)清楚右边的空格left(char,3)从左边返回指定长度的字符串right(char,3)从右边返回指定长度的字符串replace(s_char,t_char,n_char)将s中的t替换成n字符串stuff(ABCDEFG'2,3,'我的音乐我的世界)返回:A我的音乐我的世

11、界EFG在一个字符串中,删除从2位置开始指定长度为3的字符串,并在该位置插入一个新的字符串instr(char,searchchar)查找第一个字符出现的位置索引从1开始substr(char,pos,len)截取字符串length(char)返回字符串的长度lower(char)转换为小写upper(char)转换为大与trim()截取左右空格initcap(char)首子母大与ltrim(char,set)左男裁rtrim(char,set)右男裁replace(charoldchar,newchar)字符串替换concat(char1,char2)连接字符串cha(67)根据ASCII码

12、返回对应的字符lpad()和rpad()在字符串的左边或右边添加东西需要3个参数第一个是字符串第二个是返回值的总长度,第三个是用来填充的字符转换函数cast(值asvarchar)不指7E长度convert(varchar(20),值)必须指定长度to_char(d|n,fmt)将数字或日期转换为指定格式的字符串to_date(char,frm)将char或varchar转换为日期数据类型to_number()将包含数字的字符转换为number数据类型其他函数abs(-1)->1取绝对值ceiling(43.5)->44取上界最小整数floor(43.5)->43取下界最大整

13、数power(5.2)->25取藉round(4.34,1)->4.3四舍五入,保留一位小数sign(-43)->-1正数返回1,负数返回-1sort(9)->3求平方根host_name()获取计算机名称nvl(ex1,ex2)如果ex1为null则返回ex2;如果ex1不为null则返回ex1;nvl2(ex1,ex2,ex3)如果ex1不为null则返回ex2如果ex1为null则返回ex3nullif(ex1,ex2)如果ex1=ex2则返回null否则返回ex1;分组函数(聚合函数)avg(列名)求这列的平均值min(列名)求这列的最小值max(列名)求这列的

14、取大值count(*)统计所有的行包括重复值和空值count(列名)统计指定列中非空值的个数count(distinct列名)统计不是重复值的个数groupby右句用于将信息表划分为组,按组进行聚合运算avg(列名)求这列的平均值min(列名)求这列的最小值max(列名)求这列的最大值count(*)统计所有的行包括重复值和空值count(列名)统计指定列中非空值的个数count(distinct列名)统计不是重复值的个数groupby右句用于将信息表划分为组,按组进行聚合运算日期函数getdate()返回当前系统时间dateadd(mm,4,'01/01/99')返回指定日期

15、上+指定部分后的日期datediff(mm,'01/01/99','05/01/99')返回两日期间指定部分的值datename(dw,'01/01/2a. add_months(d,n)返回给指定的日期加上指定的月数后的日期值selectadd_months(sysdate,2)fromdual;b. months_between(d,d)返回2个日期之间的月数selectmonths_between(date'2005-05-06',date'2005-9-01')000')返回指定日期的指定部分的字符串格式d

16、atepart(day,'01/15/2000')返回指定日期部分的整数形式fromdual;c. last_day(d)返回指定日期当月的最后一天的日期selectlast_day(sysdate)fromdual;d. round(d,fmt)返回日期值日期四舍五入为格式模型指定的单位selectround(date'2005-09-08','year')fromdual;返回2005-01-01selectround(date'2005-09-08','month')fromdual;返回2005-09-01

17、selectround(date'2005-09-08','day')fromdual;返回最靠近的一个星期日e. next_day(d,day)返回指定的下一个星期几的日期selectnext_day(sysdate,'星期二')fromdualf. trunc语法与round相同区别:trunc是只舍不入g. extract提取日期时间类型中的特定部分连接操作符+|连接字符串用于将2个或多个字符串合并成一个字符串集合查询操作(两个表中的数据类型和列名必须相同)a. unionunion操作符返回2个查询选定的所有不重复的行selectorde

18、rnofromorder_masterunionselectordernofromorder_detail;b. unionall合并2个查询选定的所有行包括重复的行c. intersect返回2个查询都有的行d. minus第1个查询在第2个查询中不存在的数据连接查询(n个表,至少有n-1个条件)原理:内连:1.内连接:(查询出条件匹配的所有行)1)Select左别名.列名,右别名.列名from左表as左另1J名innerjoin右表as右别名on左别名.完全一样连接分类:1内连接:条件2外连接1)左外连接:leftjoin或leftouterjoin1对1左外连:列名=右别名.列名2)Se

19、lect左表名.列名,右表名.列名from左表,右表where左表名.列名-右表名.列名2左外连接:(返回左表的所有行,如果右表没有与左表匹配的行则全部用null代替,存在则显示具体数据,显示出来的总行数由左表决定)Select左别名.列名,右别名.列名from左表as左别名leftjoin右表as右别名on左别名.列名=右别名.列名3右外连接:(返回右表的所有行,如果左表没有与右表匹配的行则全部用null代替,存在则显示具体数据,显示出来的总行数由右表决定)Select左别名.列名,右别名.列名from左表as左别名rightjoin右表as右别名on左别名.列名=右别名.列名2)右外连接:

20、rightjoin或rightouterjoin3)完整外连接:Fulljoin或Fullouterjoin3交叉连接:from-4.交义连接:(返回左右表的所有行,如果左表没有与右表匹配的行则全部用null代替,如果右表没有与左表匹配的行则全部用null代替,存在则显示具体数据,显示出来的总行数-表和右表行数和决定)Select左别名.列名,右别名.列名from左表as左另1J名rightjoin右表as右别名on左别名.列名-右别名.列名利用现有表创建新表a,表存在1. 完全拷贝:insertinto目标表select*from源表2. 部分拷贝:insertinto目标表(列名)sele

21、ct列名from源表b,表不存1.完全拷贝:select*into新表from源表a. 完全拷贝:createtabletempasselect*fromemp;b. 拷贝分createtabletempasselect列1,列2from表c. 只拷贝一个空表(根据一个假条件)createtabletempasselect*from表where1-2d. 使用列别名:selectstu_id,stu_nameas”学生姓名"fromstudent;2. 部分拷贝:select列名into新表from源表3. 拷贝表结构:select*into新表from源表Where1=2利用把A表

22、数据,同步B表方法1:update目标表set列=a.列from源表awherea.关联歹U=目标表.关联列方法2:updatebsetb.歹U=a.列from源表a,目标表bwherea,关联列=b,关联列方法3:update目标表set列=a,列from源表a,目标表bwherea,关联歹U=b.关联列update目标表a,源表ba, 列=b.列wherea,关联列b, 关联列setupdate目标表a,源表bseta列=b.歹Uwherea.关联列=b.关联列方法4:update目标表set目标表,列=a,列from源表a,目标表bwherea,关联列=b,关联列方法5:update目标

23、表set目标表,歹U=a.歹Ufrom源表awherea,关联列=目标表,关联列方法6:通过关联查询语句生成update语句数据操纵语言(DML)a,创建一个新表createstudent(stuidtableint,a,创建一个新表createtablestudent(stu_idint,stunamevarchar2(20)stu_namevarchar(20)b. 修改表中的列altertable表名altercolumn列名新数据库类型大小c. 添加表中的列altertable表名Add列名数据库类型d. 删除表中的列altertable表名dropcolumn列名e. 删除表中的记录

24、而不删除表的结构truncatetablestudentf. 只是查看表的结构g. 删除表中的数据及表的结构droptablestudent;tablespacelijiaob. 修改表中的列altertablestudentmodify(stu_namevarchar2(40)c. 添加表中的列altertablestudentadd(stu_ageint)d. 删除表中的列altertablestudentdropcolumnstu_agee. 删除表中的记录而不删除表的结构truncatetablestudentf. 只是查看表的结构descstudentg. 删除表中的数据及表的结构d

25、roptablestudent;事务控制语言事务:是单个的工作单元.将多条相关的语句一起全部执行(必须是相关的)执行一系列的操作a. commit命令(用于提交并结束事务处理)commitb. savepoint保存点类似于标记它将很长的事务处理划分为较小的部分他们用来标记事务中可以应用回滚的点savepointsavepoint_idc. rollbacework,rollbackd. 回滚到某个保存点rollbacktosavepointOracle中特有的伪列(伪列就像数据库中的一个表列,但实际上并未存储在表中,伪列只能查询)不存在a. rowid(可以唯一的标识数据库中的一行)b. r

26、ownum(代表行的序号)rownum不跟>,=,>=操作使用定一个局部变量Declare变量名DataType为变量赋值Set变量名=值或Select变量名=值带查询语句为变量赋值Select变量名=列名from表明where列名=条件常用的全局变量(用户不能定义的变量)error最后一个T-SQL错误号identity最后一次插入的标识值Servername本地服务器的名称输出语句Print值只出现在查询分析器中显示RaisError('值',16,1)能在前台用异常扑捉逻辑控制语句判断存在时判断不存在时If(条件)begin-endIf(条件)begin-en

27、delsebegin-endIfexists(select*from表名where列名=值)begin-.endIfnotexists(select*from表名where歹U名=值)begin-.enda) ifconditionthenexp_bodyendif;b) ifconditionthenexp_bodyelseexp_bodyendif;c) ifconditionthenexp_bodyelsifconditionthenexp_bodyelseexp_bodyendif;循环控制语句While(true)beginend1) loopconditionendloop2) w

28、hileconditionLoopexp_bodyendloop3) forvarableinREVERSEvalue1.value2(varable变量不需声明,是范围连接符)loopexp_bodyendloopCasea)select另U名=casewhen条件then值when条件then值a)selectcase歹U名when值then值when值then值else值endfrom表b)selectcase歹U名when值then值when值then值else值endfrom表else值endcasefrom表明b)selectcasewhen列名=值then值when歹U名=值then值els

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论