与宽口径和标准口径的区别SQL的主要区别及解决方法

MaxCompute SQL与标准SQL的主要区别及解决方法
这里会列举一个写惯了关系型数据库里的SQL的用户,在使用MaxCompute SQL比较容易遇见的问题。但是具体的语法建议还是参考对应的 。希望这篇帖子配合文档,能帮助大家少踩坑,快速上手MaxCompute SQL。
不支持事物(没有commit和rollback,建议代码具有等幂性支持重跑,不推荐使用Insert Into,推荐Insert Overwrite写入数据)。不支持索引和主外键约束。不支持自增字段和默认值。如果有默认值,请在数据写入时自行赋值。分区
单表支持6万个分区。 。另外如果是2级分区且查询时只根据2级分区进行过滤,总的分区数大于1万也可能导致这个问题。 。精度
Double类型因为存在精度问题,不建议在关联时候进行直接等号关联两个Double字段。一个比较推荐的做法是把两个数做下减法,如果差距小于一个预设的值就认为是相同,比如abs(a1- a2) & 0.。目前产品上已经支持高精度的类型Decimal。但如果有更高精度要求的,可以先把数据存成String类型,然后使用UDF来实现对应的计算。数据类型转换
为了防止出现各种预期外的错误,建议如果有2个不同的字段类型需要做Join,还是自己先把类型转好了后再Join,同时还能让代码更容易维护。关于日期型和字符串的隐式转换。在需要传入日期型的函数里如果传入一个字符串,字符串和日期类型的转换根据yyyy-mm-dd hh:mi:ss格式进行转换。如果是其他格式请参考内建函数TO_DATE部分。DDL
不能修改分区列列名,只能修改分区列对应的值。具体分区列和分区的区别可以参考支持增加列,但是不支持删除列以及修改列的数据类型,参考 。如果有需要一定要操作,最安全的方法参考
最直观的区别就是Insert into/overwrite后面有个关键字Table。目前只支持Insert Into/Overwrite Table TabeName Select的语法批量插入数据,目前还不支持Insert Into/Overwrite Table TableName Values(xxx)的语法。但是如果确实有需要,可以参考。数据插入表的字段映射不是根据Select的别名做的,而是根据Select的字段的顺序和表里的字段的顺序。UPDATE/DELETE
目前不支持Update/Delete语句,如果有需要可以参考。另外对于删除,还可以参考。SELECT
。Group by查询里的Select字段,要么是Group By的分组字段,要么需要使用聚合函数。这里可以从逻辑角度理解,假如发现一个非分组列同一个Group By Key里的数据有多条,那么不使用聚合函数的话就没办法展示了。子查询
子查询必须要有别名。查询带个别名是个好习惯。IN/NOT IN
关于In/Not In,Exist/Not Exist,后面跟的子查询数据量不能超过1000条,解决办法参考。如果业务上已经保证了子查询返回结果的唯一性,可以考虑去掉Distinct增加查询性能。SQL返回10000条
MaxCompute限制了SQL语句返回的数据条数,用户可以参考配置。不过可以看到,目前最高可以设置到1万。如果需要查询的结果数据条数很多,可以参考配和Tunnel获取全部数据。MAPJOIN
Join不支持笛卡尔积,也就是Join必须要用On设置关联条件。如果有一些小表需要做广播表,需要用Mapjoin Hint。具体可以参考。ORDER BY
Order By 后面需要配合Limit n使用。如果希望做很大的数据量的排序,甚至需要做全表排序,可以把这个N设置的很大。但是谨慎使用,因为无法使用到分布式系统的优势,可能会有性能问题。可以参考。
原文链接:
http://click.aliyun.com/m/13939/
MaxCompute SQL 概要
如何用SQL对MaxCompute数据进行修改和删除
MaxComputeSql性能调优
【干货分享】大数据计算服务MaxCompute使用教程
MaxCompute访问TableStore(OTS) 数据
MaxCompute 学习计划(一)
MaxCompute基础与MaxCompute_SQL优化
MaxCompute SQL 2.0全新的计算引擎
一探究竟:善用 MaxCompute Studio 分析 SQL 作业
玩转MaxCompute studio SQL编辑器
没有更多推荐了,SQL 相关规则标准
SQL 相关规则标准
【sql栏目提醒】:网学会员,鉴于大家对sql十分关注,论文会员在此为大家搜集整理了“SQL 相关规则标准 - 技术总结”一文,供大家参考学习!
SQL 相关规则标准 2命名规则2.1表名XXX相关表以r_作为前缀YYY相关表以t_作为前缀。&&&&如r_acc、t_bcc。&&&&后台表名尽量与前台表名相同后台独有的表应以_b作为后缀。&&&&如r_gggd_b。&&&&命名应尽量反映存储的数据内容。&&&&2.2视图名视图以v_作为前缀。&&&&由于前台无视图故不需加_b。&&&&命名应尽量体现各视图的功能。&&&&2.3触发器名触发器名为相应的表名加上后缀Insert触发器加_iDelete触发器加_dUpdate触发器加_u如r_bch_ir_bch_dr_bch_u。&&&&2.4存储过程名存储过程应以sp_开头后续部分主要以动宾形式构成并用下划线分割各个组成部分。&&&&如增加BSC机架的DRT单板的存储过程为sp_ins_board_drt。&&&&2.5变量名变量名采用小写若属于词组形式用下划线分隔每个单词如my_err_no。&&&&2.6命名中其他注意事项以上命名都不得超过30个字符的系统限制。&&&&变量名的长度限制为29不包括标识字符。&&&&数据对象、变量的命名都采用英文字符。&&&&禁止使用中文命名。&&&&3编程结构和描述SQL SERVER系统中一个批处理是从客户传给服务器的一个完整的包可以包含若干条SQL语句。&&&&批处理中的语句是作为一组去进行语法分析、编译和执行的。&&&&触发器、存储过程等数据对象则是将批处理永久化的方法。&&&&3.1注释注释可以包含在批处理中。&&&&在触发器、存储过程中包含描述性注释将大大增加文本的可读性和可维护性。&&&&本规范建议1、注释以英文为主。&&&&实际应用中发现以中文注释的SQL语句版本在英文环境中不可用。&&&&为避免后续版本执行过程中发生某些异常错误建议使用英文注释。&&&&2、注释尽可能详细、全面。&&&&创建每一数据对象前应具体描述该对象的功能和用途。&&&&传入参数的含义应该有所说明。&&&&如果取值范围确定也应该一并说明。&&&&取值有特定含义的变量如boolean类型变量应给出每个值的含义。&&&&3、注释语法包含两种情况单行注释、多行注释单行注释注释前有两个连字符--最后以行尾序列CR-LF结束。&&&&一般对变量、条件子句可以采用该类注释。&&&&多行注释符号之间的内容为注释内容。&&&&对某项完整的操作建议使用该类注释。&&&&4、注释简洁同时应描述清晰。&&&&3.2函数注释编写函数文本--如触发器、存储过程以及其他数据对象--时必须为每个函数增加适当注释。&&&&该注释以多行注释为主主要结构如下CREATE PROCEDURE sp_xxx…3.3条件执行语句if…else条件语句块statenemt block以begin…end为边界仅在if子句的条件为真时才被执行。&&&&为提高代码的可读性建议嵌套不多于5层。&&&&还有当嵌套层次太多时应该考虑是否可以使用case语句。&&&&3.4重复执行while和跳转语句goto需要多次执行的语句可以使用while结构。&&&&其中控制while循环的条件在任何处理开始之前需要先执行一次。&&&&循环体中的保留字break无条件的退出while循环然后继续处理后续语句保留字continue重新计算while条件如果条件为真则从循环开始处重新执行各语句。&&&&使用跳转语句goto和标签label也可以方便地实现循环和其他更灵活的操作。&&&&SQL SERVER仅具有单通道语法分析器因此不能解析对尚未创建的对象所做的前向参考。&&&&换言之跳转到某标签的后续语句应该是可执行的如不存在可能尚未创建的数据对象。&&&&3.5书写格式数据库服务器端的触发器和存储过程是一类特殊的文本为方便开发和维护提高代码的易读性和可维护性。&&&&规范建议按照分级缩进格式编写该文本。&&&&顺序执行的各命令位于同一级条件语句块statenemt block以begin…end为边界位于下一级类推。&&&&SQL语句是该文本的主体。&&&&为适应某些教复杂的用户需求SQL语句可能比较庞大。&&&&为方便阅读和维护规范建议按照SQL语句中系统保留字的关键程度再划分为三级。&&&&具体分级请参照下表。&&&&其中非系统保留字如字段名、数据表名、标点符号相对本级保留字再缩进一级。&&&&多个连续的非保留字可以分行书写也可以写在同一行。&&&&当WHERE包含的条件子句教复杂时应该每行只写一个条件分句并为重要的条件字句填写单行注释。&&&&在保证基本缩进格式的前提下可以通过对齐某些重要关键字如条件关键字AND、OR符号、等来进一步提高文本的易读性和可维护性。&&&&相邻两级的缩进量为10个空格。&&&&这也是ISQL编辑器默认的文本缩进量。&&&&另外在ISQL编辑器中一个TAB键也相当于10个空格。&&&&注按照功能四类SQL语句SELECT、INSERT、UPDATE、DELETE的关键字可以划分为三类主关键字、次关键字、一般关键字。&&&&如下表所示主关键字次关键字一般关键字SELECTINSERTINTOUPDATEDELETE FROMWHEREVALUESINSERT…SELECT…FROM语句中的SELECT和FROM ANDORBETWEENINLIKE 3.6字体系统保留字应大写包括系统公共变量等。&&&&其他字符如用户自定义变量、用户自定义数据对象名小写。&&&&需要特殊强调的部分可以大写。&&&&一条完整注释语句的首字符应大写。&&&&对某变量、某条件字句的注释可以全部使用小写。&&&&通过下一节中生成表r_a的删除触发器的实例可以部分说明对象命名、注释、基本书写格式和字符大小写方面的一些注意事项。&&&&4触发器编程规范4.1范例下面通过一个例子说明触发器编程中应遵守的规范CREATE TRIGGER r_a_d ON r_a FOR DELETE AS IFROWCOUNT0-no rows deleted RETURN DELETE r_b FROM r_b bdeleted dWHERE b.idd.id IFERROR0 BEGIN RAISERRORError occurred deleting related records161ROLLBACK TRAN END RETURN作以下几点说明1.检查是否有行被修改。&&&&注意不论数据是否被修改触发器都会引发执行情况取决于T-SQL语句的执行而和任何潜在的where子句是否执行无关。&&&&2.因为被删除行在该表中不再可用所以应在被删除的表中查看。&&&&3.检查T-SQL语句的返回代码以捕获任何出错条件。&&&&4.2事务过程中的触发器1.触发器内的rollback将所有工作返回至最外层的begin tran完成触发器内的处理并异常终止当前的批处理。&&&&2.不可以从触发器内部返回至某个已命名的事务过程这将产生运行错误挂起所有工作并终止批处理。&&&&5存储过程编程规范5.1带有参数的执行在执行存储过程时可以通过名字来制定参数这样可以用任何顺序传递参数而且自动起到注释的作用因此建议编程时使用这种方法。&&&&5.2缺省参数值把参数的缺省值定为null这是捕获在过程内调用存储过程所产生的错误的常用方法不应让标准服务器消息报告参数丢失。&&&&在给定缺省之后可以校验该缺省值并在存储过程内采取措施。&&&&注意当附值SELECT语句不返回行时局部变量将保持在SELECT语句执行之前所具有的值。&&&&建议使用系统提供的某些全局变量如ROWCOUNT检测SELECT返回的结果。&&&&5.3返回值每个存储过程自动返回一个整数型的状态值成功完成时返回0而返回-1-99表示SQL Server检测到了错误。&&&&以下为SQL Server系统常用的返回状态码值含义0 Procedure was executed successfully-1 Object missing-2 Datatype error occurred-3 Process was chosen as deadlock victim-4 Permission error occurred-5 Syntax error occurred-6 Miscellaneous user error occurred-7 Resource errorsuch as out of spaceoccurred-8 Non-fatal internal problem encountered-9 System limit was reached-10 Fatal internal inconsistency occurred-11 Fatal internal inconsistency occurred-12 Table or index is corrupt-13 Database is corrupt-14 Hardware error occurred在程序中用return语句可指定大于0或小于-99的返回值调用程序可以设置局部变量接收和检查返回状态。&&&&5.4存储过程和事务处理如果事务处理在存储过程返回时的嵌套层次与执行时的层次不同SQL Server会显示信息提示事务处理嵌套失控。&&&&因为存储过程并不异常终止该批处理在执行和确认随后的语句时过程内的rollback tran会导致数据完整性损失。&&&&在编写存储过程时应遵守以下原则1.过程对trancount应无净改变。&&&&2.仅当存储过程发出begin tran语句时才发出rollback tran。&&&&5.5其他注意事项存储过程应该坚实可靠的因为它们是驻留在服务器中被频繁使用的。&&&&应仔细检查参数的有效性并在有问题时返回出错信息。&&&&应确保参数的数据类型和被比较的栏的数据类型匹配从而避免数据类型匹配错误。&&&&在每个SQL语句之后要检查error。&&&&6数据对象的国际化6.1关于数据对象的命名数据对象和变量的命名一律采用英文字符。&&&&禁止使用中文命名。&&&&其他命名注意事项和规范请参考2命名规则。&&&&6.2关于RAISERROR SQL SERVER系统的RAISERROR命令能够把某个出错情况返回给调用过程这对说明调用过程的执行情况很有必要同时可以部分避免客户端的冗余操作。&&&&另外结合系统存储过程sp_addmessage和sp_dropmessage可以方便实现数据对象在SQL SERVER端的国际化。&&&&SQL SERVER的MASTER数据库中有错误信息数据表sysmessages专门用于存储系 七乐无穷尽在新浪新版博客快来体验啊请点击进入
【】【】【】【】【】86标准sql与92标准SQL用法区别
在开发 9i时,
数据库还时间了ANSL SQL/92标准的链接语法, 在书中建议在使用Oracle 9i及更高版本时,应该使用SQL/92标准的语法;在使用Oracle 8i 及更低版本时,应该使用SQL/86标准的语法。
-----《Oracle Database 10g SQL 开发指南》
86标准sql是传统的表连接写法,就是直接将表写在FROM后边,将表连接条件与过滤条件都写在WHERE后边。92标准SQL是采用JOIN的表连接方法。分为LEFT JOIN,RIGHT JOIN,INNER JOIN,每一种JOIN方法都可以使用86版SQL转化得到相应写法,但并不是完全相同。
下面举例说下两种表连接的用法:
测试数据:
create table a (id integer,name varchar(20));
create table b (id integer,name varchar(20));
create table c (id integer,name varchar(20));
insert into a values(1,'a1');
insert into a values(2,'a2');
insert into a values(3,'a3');
insert into a values(4,'a4');
insert into a values(5,'a5');
insert into b values(2,'b2');
insert into b values(3,'b3');
insert into b values(4,'b4');
insert into b values(5,'b5');
insert into b values(6,'b6');
insert into c values(1,'c1');
insert into c values(2,'c2');
insert into c values(3,'c3');
insert into c values(4,'c4');
1: 等值连接
INNER JOINSQL& select a.id,a.name,b.id,b.name,c.id,c.name
from a inner join b on a.id=b.id
inner join c on a.id=c.
--------- -------------------- ---------- -------------------- ---------- ----
以上92版SQL 与以下86版SQL结果相似;
select a.id,a.name,b.id,b.name,c.id,c.name
from a ,b ,c
where a.id=b.id
and a.id=c.id
先看92两种写法得到的结果对比一下。
SQL& select a.id,a.name,b.id,b.name,c.id,c.name
from a left join b on a.id=b.id
left join c on b.id=c.
---------- -------------------- ---------- -------------------- ---------- -----
---------------
SQL& select a.id,a.name,b.id,b.name,c.id,c.name
from a left join b on a.id=b.id
left join c on a.id=c.
---------- -------------------- ---------- -------------------- ---------- -----
---------------
两种写法都是左连接,唯一不同的就是与表C进行连接时的连接条件不同。但得到的结果却完全不同。
在处理C表时,数据库判定左接连基准表的依据是ON 后边的连接条件。对于第一个SQL(b.id=c.id),C表是和处理过的B表的结果集进行
连接,从B表得到结果集中ID取值为2,3,4,5 。以此为结果为基准再与C表进行连接,因此,从C表中得到的符合条件数据的ID为2,3,4
对于第二个SQL,C表是和A表进行连接,因为自始至终A表都是左连接中的基准表,所以表中的数据量不变,C表再与之进行左连接时得到的结果集中的ID为1,2
对于以上两种SQL的写法,分别可以用以下写法代替
第一条SQL:
select a.id,a.name,b.id,b.name,c.id,c.name
from a ,b ,c
where a.id=b.id(+)
and b.id=c.id(+)
select a.id,a.name,b.id,b.name,c.id,c.name
from a ,b ,c
where a.id=b.id(+)--b表和a表进行左连接,以a表为准,称为左连接。注意哦,(+)是放在右边的
and a.id=c.id(+)--c表和a表进行左连接,以a表为准3:右连接
92版SQL写时,只需将LEFT换成RIGHT就可以了。
86版SQL,只需改变下(+)的位置不可以了。
4:92版sql中的where条件与ON条件86版中的连接条件与过滤条件都放在WHERE条件后边了。
但92版SQL中,连接条件放在ON 后边,过滤条件放在WHERE 后边。
注意区分,以下两个SQL得到的结果是不同的:
SQL& select a.id,a.name,b.id,b.name
from a left join b on a.id=b.id
and b.id&2 ;
---------- -------------------- ---------- ----------
SQL& select a.id,a.name,b.id,b.name
from a left join b on a.id=b.id
where b.id&2 ;
---------- -------------------- ---------- -----
虽然是相同的条件,但 放的位置不同,得到的结果不同。
对于第一个SQL。 b.id&2 是在进行表连接的时候对B表的数据进行过滤。
但对于第二个SQL, b.id&2 是对结果集进行过滤。
以上两种SQL的写法对应到86版SQL时的写法是:
select a.id,a.name,b.id,b.name
where a.id=b.id(+)
and b.id&2
它是与第二个SQL的结果保持一至的(这个地方一直怀疑,应该是数据库根据不同情况来应用b.id&2为驱动条件还是过滤条件,试验了发多数据,都没有得到是把 b.id&2当作驱动条件来使用的,都是当成过滤条件)。
SQL 92 标准
没有更多推荐了,SQL2008标准版和企业版的最大区别在哪_百度知道
SQL2008标准版和企业版的最大区别在哪
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
Daicx19知道合伙人
来自知道合伙人认证行家
知道合伙人
软件应用类行家
采纳数:1695
获赞数:3075
普实软件ERP专家
SQL Server 2008企业版是一个全面的数据管理和业务智能平台,为关键业务应用提供了企业级的可扩展性、数据仓库、安全、高级分析和报表支持。这一版本将为你提供更加坚固的服务器和执行大规模在线事务处理。SQL Server 2008标准版是一个完整的数据管理和业务智能平台,为部门级应用提供了最佳的易用性和可管理特性。
热心网友知道合伙人
到内蒙古几天能到
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。标准SQL语句总结
我的图书馆
标准SQL语句总结
标准SQL语句总结,标准SQL语言基本上适用于下面所列出的数据库软件-----------------------------------------------------------------------------数据库软件清单A商业数据库软件如下1.微软的MS SQL Server和Access2.IBM的DB2,informax3.Sybase的大型数据库ASE,中小型数据库ASA4.甲骨文公司的Oracle8.0,oracle9i系列5.Borland公司的InterBaseB多种开源免费数据库Mysql,PostgreSQL,SQLite、SimpleSQL、Berkely DB、Minosse、Firebird(Mysql,PostgreSQL是目前使用最广泛)-----------------------------------------------------------------------------最精简短小的SQL语句SQL分类:&DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)&DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)&DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)1、说明:创建数据库CREATE DATABASE database-name&2、说明:删除数据库drop database dbname3、说明:备份sql serverUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'开始备份BACKUP DATABASE pubs TO testBack&4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、说明:删除新表drop table tabname&6、说明:增加一个列Alter table tabname add column col type7、说明添加主键: Alter table tabname add primary key(col)&删除主键: Alter table tabname drop primary key(col)&8、创建索引:create [unique] index idxname on tabname(col….)&删除索引:drop index idxname9、说明:创建视图:create view viewname as select statement&删除视图:drop view viewname10、说明:几个简单的基本的sql语句选择:select * from table1 where 范围插入:insert into table1(field1,field2) values(value1,value2)删除:delete from table1 where 范围更新:update table1 set field1=value1 where 范围查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!排序:select * from table1 order by field1,field2 [desc]总数:select count as totalcount from table1求和:select sum(field1) as sumvalue from table1平均:select avg(field1) as avgvalue from table1最大:select max(field1) as maxvalue from table1最小:select min(field1) as minvalue from table1-------------------------------------------------------------------------------数据常用操作SELECT --从数据库表中检索数据INSERT --向数据库表添加新数据UPDATE --更新数据库表中的数据DELETE --从数据库表中删除数据-------------------------------------------------------------------------------数据库对象操作语句CREATE TABLE --创建一个数据库表ALTER TABLE --修改数据库表结构DROP TABLE --从数据库中删除表CREATE VIEW --创建一个视图ALTER VIEW --修改一个视图DROP VIEW --删除一个视图CREATE INDEX --为表创建一个索引DROP INDEX --从表中删除索引CREATE PROCEDURE--创建一个存储过程DROP PROCEDURE --删除存储过程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从删除触发器-------------------------------------------------------------------------------数据权限控制GRANT && --授予用户访问权限DENY && --拒绝用户访问REVOKE && --解除用户访问权限-------------------------------------------------------------------------------事务控制COMMIT && --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征-------------------------------------------------------------------------------数据库函数,过程,触发器脚本的SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询&-----------------------------------------------------------------------------SELECT --从数据库表中检索数据select *(列名) from table_name(表名) where column_name operator valueex:(宿主)select * from stock_information where stockid = str(nid)stockname = 'str_name'&stockname like '% find this %'&stockname like '[a-zA-Z]%' --------- ([]指定值的范围)stockname like '[^F-M]%' --------- (^排除指定范围)--------- 只能在使用like关键字的where子句中使用通配符)or stockpath = 'stock_path'or stocknumber & 1000and stockindex = 24not stock*** = 'man'stocknumber between 20 and 100stocknumber in(10,20,30)order by stockid desc(asc) --------- 排序,desc-降序,asc-升序order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 否则应在外层where子句中用一个in限定符select distinct column_name form table_name ---- distinct指定检索独有的列值,不重复select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_nameselect stockname , "stocknumber" = count(*) from table_name group by stockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select *&from table1, table2&where table1.id *= table2.id ---- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接select stockname from table1union [all] ----- union合并查询结果集,all-保留重复行select stockname from table2-----------------------------------------------------------------------------INSERT --向数据库表添加新数据insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber from Stock_table2)---value为select语句-----------------------------------------------------------------------------UPDATE --更新数据库表中的数据update table_name set&Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 4where ***-----------------------------------------------------------------------------DELETE --从数据库表中删除数据delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性drop table table_name --------------- 完全删除表-----------------------------------------------------------------------------标准SQL统计函数AVG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和AVG代码例子use panguselect avg(e_wage) as dept_avgWage from employee group by dept_idMAX代码例子--求工资最高的员工姓名use panguselect e_name from employee where e_wage =(select max(e_wage) from employee)-----------------------------------------------------------------------------标准SQL字符串函数ASCII() --函数返回字符表达式最左端字符的ASCII 码值CHAR() --函数用于将ASCII 码转换为字符--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULLLOWER() --函数把字符串全部转换为小写UPPER() --函数把字符串全部转换为大写STR() --函数把数值型数据转换为字符型数据LTRIM() --函数把字符串头部的空格去掉RTRIM() --函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置REPLICATE() --函数返回一个重复character_expression 指定次数的字符串select replicate('abc', 3) replicate( 'abc', -2)运行结果如下abcabcabc NULLREVERSE() --函数将指定的字符串的字符排列顺序颠倒REPLACE() --函数返回被替换了指定子串的字符串select replace('abc123g', '123', 'def')运行结果如下abcdefgSPACE() --函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串-----------------------------------------------------------------------------标准SQL语法局部变量和局变量---局部变量 (以@开头)格式:declare @变量名 类型--set @id = ''select @id = ''---全局变量 (必须以@@开头)格式:declare @@变量名 类型代码:select @@id = ''--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x & @yprint 'x & y' --打印字符串'x & y'else if @y & @zprint 'y & z'else print 'z & y'--CASEuse panguupdate employeeset e_wage =casewhen job_level =  then e_wage*1.08when job_level =  then e_wage*1.07when job_level =  then e_wage*1.06else e_wage*1.05end--WHILE&declare @x int @y int @c intselect @x = 1 @y=1while @x & 3beginprint @x --打印变量x 的值while @y & 3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--WAITFOR--例 等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay &#:03’select * from employee--例 等到晚上11 点零8 分后才执行SELECT 语句waitfor time &#:00’select * from employee
[转]&[转]&
喜欢该文的人也喜欢

我要回帖

更多关于 标准参数的制定方法主要 的文章

 

随机推荐