仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1414|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之三年夜数据库之间对照

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:38:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
CSV逻辑上由逗号分割数据的存储引擎数据|数据库
2004-11-16
以后最盛行的三年夜数据库之间对照:
mysqlsql-serveroracle

mysql
用户变量:set@varialname={integerexpression|realexpression|stringexpression}
sql-server
用户变量:declare@varialnameinteger
set@varialname=必需是数字型;
declare@varialnamevarchar(40)
set@varialname=必需是在所指定长度40个字符的字符型,假如长度凌驾40,则只
读出前40个字符。
也可用select语句来给用户变量赋值。即:select@varialname=aa
oracle
用户变量在分歧的地区有分歧的尺度。
比方:在DBA的函数内撑持尺度的java用户变量,
而在DBA的序列内:createsequencefstrname@PCTFREE20@PCTUSED10

mysql
撑持的字段范例:数字范例、日期和工夫范例和字符串(字符)范例

数字范例TINYINT[(M)][UNSIGNED][ZEROFILL]
一个很小的整数。有标记的局限是-128到127,无标记的局限是0到255。
SMALLINT[(M)][UNSIGNED][ZEROFILL]
一个小整数。有标记的局限是-32768到32767,无标记的局限是0到65535。
MEDIUMINT[(M)][UNSIGNED][ZEROFILL]
一其中等巨细整数。有标记的局限是-8388608到8388607,无标记的局限是0到16777215。
INT[(M)][UNSIGNED][ZEROFILL]
一个一般巨细整数。有标记的局限是-2147483648到2147483647,无标记的局限是0到4294967295。
INTEGER[(M)][UNSIGNED][ZEROFILL]
这是INT的一个同义词。
BIGINT[(M)][UNSIGNED][ZEROFILL]
一个年夜整数。有标记的局限是-9223372036854775808到9223372036854775807,无标记的局限是0到18446744073709551615。注重,一切算术运算用有标记的BIGINT或DOUBLE值完成,因而你不该该利用年夜于9223372036854775807(63位)的有标记年夜整数,除位函数!注重,当两个参数是INTEGER值时,-、+和*将利用BIGINT运算!这意味着假如你乘2个年夜整数(或来自于前往整数的函数),假如了局年夜于9223372036854775807,你能够失掉不测的了局。一个浮点数字,不克不及是无标记的,对一个单精度浮点数,其精度能够是<=24,对一个双精度浮点数,是在25和53之间,这些范例如FLOAT和DOUBLE范例即刻鄙人面形貌。FLOAT(X)有对应的FLOAT和DOUBLE不异的局限,可是显现尺寸和小数位数是不决义的。在MySQL3.23中,这是一个真实的浮点值。在更早的MySQL版本中,FLOAT(precision)老是有2位小数。该句法为了ODBC兼容性而供应。
FLOAT[(M,D)][ZEROFILL]
一个小(单严密)浮点数字。不克不及无标记。同意的值是-3.402823466E+38到-1.175494351E-38,0和1.175494351E-38到3.402823466E+38。M是显现宽度而D是小数的位数。没有参数的FLOAT或有<24的一个参数暗示一个单严密浮点数字。
DOUBLE[(M,D)][ZEROFILL]
一个一般巨细(双严密)浮点数字。不克不及无标记。同意的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。M是显现宽度而D是小数位数。没有一个参数的DOUBLE或FLOAT(X)(25<=X<=53)代表一个双严密浮点数字。
DOUBLEPRECISION[(M,D)][ZEROFILL]
 
REAL[(M,D)][ZEROFILL]
这些是DOUBLE同义词。
DECIMAL[(M[,D])][ZEROFILL]
一个未紧缩(unpack)的浮点数字。不克不及无标记。举动好像一个CHAR列:“未紧缩”意味着数字作为一个字符串被存储,值的每位利用一个字符。小数点,而且关于正数,“-”标记不在M上钩算。假如D是0,值将没有小数点或小数部分。DECIMAL值的最年夜局限与DOUBLE不异,可是对一个给定的DECIMAL列,实践的局限能够经由过程M和D的选择被限定。假如D被省略,它被设置为0。假如M被免却,它被设置为10。注重,在MySQL3.22里,M参数包含标记和小数点。
NUMERIC(M,D)[ZEROFILL]
这是DECIMAL的一个同义词.

日期和工夫范例
DATE
一个日期。撑持的局限是1000-01-01到9999-12-31。MySQL以YYYY-MM-DD格局来显现DATE值,可是同意你利用字符串或数字把值赋给DATE列。
DATETIME
一个日期和工夫组合。撑持的局限是1000-01-0100:00:00到9999-12-3123:59:59。MySQL以YYYY-MM-DDHH:MM:SS格局来显现DATETIME值,可是同意你利用字符串或数字把值赋给DATETIME的列。
TIMESTAMP[(M)]
一个工夫戳记。局限是1970-01-0100:00:00到2037年的某时。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格局来显现TIMESTAMP值,取决因而否M是14(或省略)、12、8或6,可是同意你利用字符串或数字把值赋给TIMESTAMP列。一个TIMESTAMP列关于纪录一个INSERT或UPDATE操纵的日期和工夫是有效的,由于假如你不本人给它赋值,它主动地被设置为比来操纵的日期和工夫。你以能够经由过程赋给它一个NULL值设置它为以后的日期和工夫。见7.3.6日期和工夫范例。
TIME
一个工夫。局限是-838:59:59到838:59:59。MySQL以HH:MM:SS格局来显现TIME值,可是同意你利用字符串或数字把值赋给TIME列。
YEAR[(2|4)]
一个2或4位数字格局的年(缺省是4位)。同意的值是1901到2155,和0000(4位年格局),假如你利用2位,1970-2069(70-69)。MySQL以YYYY格局来显现YEAR值,可是同意你把利用字符串或数字值赋给YEAR列。(YEAR范例在MySQL3.22中是新范例。)
CHAR(M)[BINARY]
一个定长字符串,当存储时,老是是用空格填满右侧到指定的长度。M的局限是1~255个字符。当值被检索时,空格尾部被删除。CHAR值依据缺省字符集以巨细写不辨别的体例排序和对照,除非给出BINARY关头词。NATIONALCHAR(短情势NCHAR)是ANSISQL的体例来界说CHAR列应当利用缺省字符集。这是MySQL的缺省。CHAR是CHARACTER的一个缩写。

字符串(字符)范例。
[NATIONAL]VARCHAR(M)[BINARY]
一个变长字符串。注重:当值被存储时,尾部的空格被删除(这分歧于ANSISQL标准)。M的局限是1~255个字符。VARCHAR值依据缺省字符集以巨细写不辨别的体例排序和对照,除非给出BINARY关头词值。见7.7.1隐式列指定变更。VARCHAR是CHARACTERVARYING一个缩写。
TINYBLOB
 
TINYTEXT
一个BLOB或TEXT列,最年夜长度为255(2^8-1)个字符。见7.7.1隐式列指定变更。
BLOB
 
TEXT
一个BLOB或TEXT列,最年夜长度为65535(2^16-1)个字符。见7.7.1隐式列指定变更。
MEDIUMBLOB
 
MEDIUMTEXT
一个BLOB或TEXT列,最年夜长度为16777215(2^24-1)个字符。见7.7.1隐式列指定变更。
LONGBLOB
 
LONGTEXT
一个BLOB或TEXT列,最年夜长度为4294967295(2^32-1)个字符。见7.7.1隐式列指定变更
ENUM(value1,value2,...)
列举。一个唯一一个值的字符串工具,这个值式选自与值列表value1、value2,...,或NULL。一个ENUM最多能有65535分歧的值。
SET(value1,value2,...)
一个汇合。能有零个或多个值的一个字符串工具,个中每个表value1,value2,...选出。一个SET最多能有64个成员。

sql-server
撑持的字段范例:
数字范例:realnumericbitintdecimal
工夫范例:datetimesmalldatetime
字符范例:varcharcharnvarchartext
oracle
数字范例:number
工夫范例:date
字符范例:varchar2

mysql
表布局的保护语句:
创立表布局
createtabletable2(finttable2idint,fstrtable2datedate,fstrtable2codevarchar(20),fstrtable2namevarchar(50));

修正表布局
在sdeptname以后加一字符型字段,字段名“finttable1id”
ALTERTABLE`dept`ADD`finttable1id`VARCHAR(11)NOTNULLAFTER`sdeptname`;

纪录的保护语句:
拔出表纪录语句:
撑持格局:
insertintotable1selectJPG00000101,J0203,必需从值列
也撑持格局:
insertintotable1(finttable1id,fstrtable1code,fstrtable1name)
values(JPB000000077,G00098,见7.7.1隐式列)
也撑持格局:
insertintotable1selectJPG00000123,Y0101,分明保藏union
allselectJGH000000002,JGH0011,可心站点;

查询表纪录语句:
select*fromtable1wherefstrfieldnamelike%0(含混查找)
select*fromtbale1limit10,30(显现从第10行到第30行的查询)

实行上面的语句
selectfstrfieldname+aafromtable1
显现的纪录集以下:
fstrfieldname+aa
0
0
0
而实行上面的语句
selectfstrfieldnamefromtable1
fstrfieldname
JPH0000000
JGP0000001
JPH0000100

修正表纪录语句:
updatetable1setfstrfieldname=SGML000000010wherefstrfieldname=JPG00000002
updatedept`setfinttable1id=SGML002wheresdeptid=a2a


删除表纪录语句:
DELETEFROMtable1WHEREfstrtable1name=导出

sql-server
表布局的保护语句:
创立表布局语句
createtabletable2(finttable2idint,fstrtable2datedate,fstrtable2codevarchar(20),fstrtable2namevarchar(50));

修正表布局语句
在sdeptname以后加一字符型字段,字段名“finttable1id”
ALTERTABLE`dept`ADD`finttable1id`VARCHAR(11)NOTNULL

纪录的保护语句:
拔出表纪录语句:
撑持格局:
insertintotable1selectJPG00000101,J0203,必需从值列
也撑持格局:
insertintotable1(finttable1id,fstrtable1code,fstrtable1name)
values(JPB000000077,G00098,见7.7.1隐式列)
也撑持格局:
insertintotable1selectJPG00000123,Y0101,分明保藏union
allselectJGH000000002,JGH0011,可心站点;

查询表纪录语句:
select*fromtable1wherefstrfieldnamelike%0(含混查找)
selecttop10*fromtable1(显现前10行的查询)

实行上面的语句
selectfstrfieldname+aafromtable1
显现的纪录集以下:
fstrfieldname+aa
JPH0000000aa
JPH0000001aa
JPH0000100aa
而实行上面的语句
selectfstrfieldnamefromtable1
fstrfieldname
JPH0000000
JGP0000001
JPH0000100


修正表纪录语句:
updatetable1setfstrfieldname=exportoutwherefstrfieldname=导出

删除表纪录语句:
deletetable1wherefstrfieldname=导出



oracle
表布局的保护语句:
创立表布局
createtabletable2(finttable2idint,fstrtable2datedate,fstrtable2codevarchar(20),fstrtable2namevarchar(50));

修正表布局
在sdeptname以后加一字符型字段,字段名“finttable1id”
ALTERTABLE`dept`ADD`finttable1id`VARCHAR(11)NOTNULL

纪录的保护语句:
拔出语句:
撑持格局:
insertintotable1selectJPG00000101,J0203,必需从值列
也撑持格局:
insertintotable1(finttable1id,fstrtable1code,fstrtable1name)
values(JPB000000077,G00098,见7.7.1隐式列)
不撑持格局:
insertintotable1selectJPG00000123,Y0101,分明保藏union
allselectJGH000000002,JGH0011,可心站点;

查询语句:
select*fromtable1wherefstrfieldnamelike%0(含混查找)
selecttop10*fromtable1(显现前10行的查询)

实行上面的语句
selectfstrfieldname+aafromtable1
显现的纪录集以下:
fstrfieldname+aa
aa
aa
aa
而实行上面的语句
selectfstrfieldnamefromtable1
fstrfieldname
JPH0000000
JGP0000001
JPH0000100

修正表纪录语句:
updatetable1setfstrfieldname=exportoutwherefstrfieldname=导出

删除表纪录语句:
deletetable1wherefstrfieldname=导出


因此我们看到,这些信息足够让我们对单个操作实现“逆操作”。
小女巫 该用户已被删除
沙发
发表于 2015-1-19 20:04:10 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
不帅 该用户已被删除
板凳
发表于 2015-1-28 10:20:44 | 只看该作者
入门没那么困难,精通没那么容易
若天明 该用户已被删除
地板
发表于 2015-2-13 13:20:28 | 只看该作者
入门没那么困难,精通没那么容易
小妖女 该用户已被删除
5#
发表于 2015-3-3 21:59:30 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
6#
发表于 2015-3-11 14:12:25 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
兰色精灵 该用户已被删除
7#
发表于 2015-3-18 22:50:57 | 只看该作者
还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。
柔情似水 该用户已被删除
8#
发表于 2015-3-26 20:07:39 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 19:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表