当前位置:文档之家› SQL Server与oracle区别总结

SQL Server与oracle区别总结

SQL Server与oracle区别总结
SQL Server与oracle区别总结

SQL Server与oracle区别总结

●开发语法

A.SQL 语法

两者的SQL语法基本上是相同的,只是一些细节方面的问题

一:表的管理:修改表的结构,如增加,删除列,创建表

修改表

1.修改表的列的数据类型,大小的定义不同,如下面修改数据类型。

Ms sql是ALTER TABLE table_name ALTER COLUMN col DECIMAL (5, 2) Oracle是 Alter TABLE table_name modify(col decimal(5,2))

2.增加和删除表的列,两者是相同的

Alter tabe table_name add(col definition)

Alter tabe table_name drop column col_name

3 .Oracle如果不要用某列,然后又不想删除,就可以将某个列标记为未用

Alter tabe table_name set unused(tel_no)

.创建临时表

Oracle 的语法是:

Create global temporary table aa(col number) on commit preserve rows;

临时表只在用户会话时存在的表,或其数据在用户事务处理期间可

持续存在的表,创建临时表时可以指定该表是否应当在用户会话

期间持续存在(使用on commit preserve rows)

On commit delete rows 表示事务处理完成后删除它的行

Ms sql的语法是:

Select * into #temptable from existedtable

二查询方面:

1.查表的前N行记录

oracle 是用rownum 如select * from table_name where rownum

Ms sql 是用top 如select top n * from table_name

2.查询表的结构

Orace 可以通过desc来查看表的结构语法是:desc table_name

或者使用数据字典表user_tab_coumns也可以查看到

Select column_name,data_type from user_tab_coumns

Where table_name=''

Ms sql可以通过一些系统的存储过程来看表的结构

语法是:exec sp_help table_name

3.将一个表的数据添加到另外一个表中

a.新表存在前提下:两者语法是一样的,如

insert into newtable(col1)select col1 from old_table

b.新表不存在前提下,可以用

oracle 可以用Create tabe new _table_name as select * from old_table ms sql 可以用Select * into new_table from old_table

三操作符

1.连接操作符

Oracle是‘||’; Ms sql是‘+’

2. Oracle的比较操作符中不等于除了'<>'之外,还有一个'!='

3. 算术操作符,都是+-*/;逻辑操作符都是and,not,or(相同点)

4. oracle集合操作符除了union,union all之外还加入intersect,minus

Intersect是仅返回两个查询都有行,minus返回第一个查询有第二个查询没有的行

四函数

1.转换函数

Oracle 中有to_char(),to_date(),to_number()

Ms sql 中有cast,convert

2.系统日期:

Oracle: sysdate

Ms sql: getdate()

Select sysdate from dual 一定要from子句

Select getdate() 不一定要from子句

3.Decode函数相当if else,或者ms 中的case语句

语法是decode(value,if1,then1,if2,then2....)

如decode(col1,'1','true','0','fase')

4.常规函数

Nvl 语法是NVL(EXP1,EXP2) 表示如果ex1为空则返回ex2

Nvl2 语法是nvl(exp1,exp2,exp3)表示如果ex1为空,则返回ex3,否则返回ex2

Nullif 语法是nullif(ex1,ex2) 如果这两个表达式相等则返回空

coalesce语法是coalesce(ex1,ex2,....exn)返回第一个非空表达式

5.分组函数

Oracle 中的分组函数Rollup,cube

Rollup返回的结果集包含分组行和小计行,cube产生交叉报表

如:

Select a,b,sum(c) from tabname group by rollup(a,b)

Select a,b,sum(c) from tabname group by cube(a,b)

Ms sql中的分组函数compute 和compute by

Compute子句为行聚集函数生成汇总值,该汇总值做为一个附加的行显示

在结果集中。没有GROUP BY 子句的情况下,也可以使用关键字COMPUTE.

此关键字使用MAX,MIN,SUM,COUNT,AVG等函数生成汇总值,而compute by 则在控制中断时给出该汇总值,compute by 必须包括在order by 子句中。

还有很多函数,诸如日期函数,字符串函数等等,就不一一作比较了。

Oracle中还有很多比较好的分析函数,也不列举了。

五.Oracle中的数据库对象

同义词

作用:简化SQL语句;隐藏对象的名称和所有者,提供对象的公共访问等。

语法:CREATE PUBLIC SYNONYM seqname FOR OBJECT

序列

用来生成唯一、边续的整数,它通常用来自动生成主键或唯一值的键。

创建序列:create sequence seqname [increment by 1] start with 1 maxvalue 10 minvalue 1 cycle cache

访问序列:

Select seqname.nextval from dual 将返回序列的初始值

Select seqname.currval from dual 返回序列的当前值

簇(cluster):

簇是共享相同数据块的一组表,因为这些表具有相同的列,并且经常一起使用。

当两个或多个表的存储在物理上十分接近时,可以通过簇来提高使用这些表的

SQL联接语句的性能。簇是存储表的方法

应该先创建簇,然后再创建簇中的表,

六.Oracle中的对象类型

1. 抽象数据类型

此类型是包含一个或多个子类型的数据类型,并且这些数据类型并不局限于标准的oracle数据类型

如:create or replace type t_mm as object(col number(3),

col2 varchar2(20))/

此时可以在创建表时使用该类型,如下

Create table test (aa varchar2(5),bb t_mm, cc number(10))

插入记录:

Insert into test values('cccc', t_mm(1,'col'))

类型声明:

用户定义的数据类型也可以声明为final,not final,instantiable,

not instantiabe

Not final表示允许类型派生子类型。默认是final

create or replace type t_mm as object(col number(3),

col2 varchar2(20)) Not final

not instantiabe表示类型没有构造函数。

2. 可变数组

可变数组有助于在单个行中存储和重复记录的属性。

数据与表中的其它数据是存储在一起的,有限数目的行,不能被索引

创建可变数组的语法是:

create type array1 as varray(5) of varchar2(5)

向可变数组中插入记录

Insert into test1 values ('2ee', array1('1','2','3','4','5') )

Select * from test1 结果集如下

2ee

'1','2','3','4','5'

Select col2 from test1 结果集如下

'1','2','3','4','5'

Select * from table(select t.col2 from test1 where col1='2ee'); 结果集如下

1

2

3

4

5

3. 嵌套表

它是包含在表中的表,对每行数据项数目没有限制,一个表在

另一表中是作为一列,主表中的每一行的嵌套表可以包含若干行。

创建嵌套表

先创建一个类型

Create type ord_ty as object(itemcode varchar2(5),qty _ord number(5),

Qty_held number(5));

创建另一个抽象数据类型,即嵌套表数据类型

Create type ord_nt as table of ord_ty

创建嵌套表

Create table order_mas (orderno varchar2(5),odate date,

vencode varchar2(5), dets ord_nt) nested table dets store as ord_nt_tab;

向嵌套表中插入数据:

Insert into order_mas values(‘001’,to_date('18-07-08','DD-MM-YY'),

'V009',ord_nt( ord_ty('i001',10,5),ord_ty('i002',34,2));

更新嵌套表的值:

Update table(select e.dets from order_mas e where e.orderno='001') p

Set value(p) =ord_ty('i090',8,9) where p.itemcode='i001';

删除嵌套表的值:

Delete from table(select e.dets from order_mas e where e.orderno='001') p where p.itemcode='i001';

4. 对象表

在对象表中每一行都是一个行对象,对象表与关系表不同:

对象表中的每一行都有一个OID值,即对象标识符值。该值是在创建行时

分配的。可以使用create table 命令来创建对象表。

在创建对象类型时,Oracle 中是不允许为属性定义约束条件,但是

可以在创建对象表时为对象类型的属性指定约束条件。

Create table vend_master of vend_ty(vencode constraint vc_pk primary key);

创建对象表与关系表语法不同

表的使用方法不同插入数据可以使用抽象数据类型的构造函数,如果对象

表所基于抽象数据类型又基于另一抽象数据类型,则必须多个构造函数的嵌

套调用。

Insert into vend_master values (vend_ty());

5. 对象视图

借助对象视图可以将面向对象的结构(如抽象数据类型)应用于现有已经

投入使用的表,而不需重建整个应用程序

B.PL/SQL与T_SQL语法

一批处理

SQL的能力毕竟有限,诸如事务处理方面,批处理于是oracle与ms 都把它进行了扩展,oracle 的扩展叫PL/SQL 由声明部分,可执行部分,异常处理部分组成顺序如下:

Declare declarations

Begin

Executable statements

Exception

Handles

End

Ms 的扩展叫Transact_SQL,简称T_SQL.

批处理:就是一次执行处理一组命令的过程。GO关键字樗着批处理的结束。

如use master

go

复杂一点也是由三部分组成:声明部分,可执行部分,异常处理部分。

不同的是,异常处理部分一般用跳转语句来实现。

例如:

Declare declarations

Begin

Excutable statements

IF @ERROR <>0 GOTO ERROR

End

BEGIN

RAISERROR(20058, 16, -1)

return (1)

END

二逻辑控制语句

1. 控制结构:

Oracle

If condition then ........

End if

Case selector

when exp1 then statements

Else statements

End case

SQL SERVER

IF condition

Sql statements

ELSE

Sql statements

Case selector

When ex1 then statements

Else statements

End

2. 迭代结构

oracle

Loop statements end loop;

While condition

Loop statement end loop;

Sql server

While condition

Begin

Sql statement

面象对象编程涉及的概念有对象,类,属性和方法,面向对象的三大特性是:

封装,继承和多态。

将数据和函数包装到一个单元中的过程称为封装。不能从外部访问数据,只能包装在类中的那些函数才能访问数据

继承可以是SQL类型的继承和方法的继承。

多态是一个对象可以呈现多种形式的能力,这使得不同的对象可以具有相同的名称的方法,这些方法实现的任务相似,但实现方式却不同。

三.变量与常量

Pl/sql变量与常量可以具有属性,支持的属性类型有

%type,%rowtype

声明引用数据库列或变量的数据类型的变量时,可以使用%type属性。如:

Declare

Variable_name table_name.col_name %type

使用这个优点是,不需要知道列vencode的准确数据类型

%rowtype属性提供表示表中行的记录类型。

四.过程与函数(Procedure & Function)

a. 建立存储过程的语法不同:

Ms sql 的语法是:

Create procedure procedure_name

(

@Id int =null,

@name varchar(10) out[put]

)

as

[变量定义区]

begin sql_statement end

--------------------------------------------------------------------

CREATE FUNCTION function_name (@DATE datetime)

RETURNS int

AS begin sql statement end

面向对象的特性之一是封装,程序包就是对相关PL/SQL类型,子程序,游标,异常,变量,和常量的封装,它包含两部分程序包规格说明和程序包主体

在包规格说明书中,可以声明类型,变量,常量,异常,游标,子程序

程序包主体实现在程序包规格中定义的游标、子程序

包头语法部分:

Create or replace package package_name is|as

Public type and item declarations

Subprogram specifications

End package_name

实例如下:

Create or replace package pack_me is

Procedure order_proc(orno varchar2);

Function order_fun(ornos varchar2) return varchar2;

End pack_me

包体语法部分:

Create or replace package body package_name is|as

Private type and item decarations

Subprogram bodies

End package_name;

包体具体实例就不写了,包头只是起一个声明作用,具体实现部分都在包体里面。

下面是创建存储过程的语法:

Create [or replace] procedure procedure_name[arg1 in|out|in out]type {is|as}

[变量定义区]

Begin

Execute Sql statement

Exception handlers

End

注意:参数列表那里,oracle是先定义参数是输入还是输出参数,然后再定义

参数类型; 而sql server正好相反

创建函数的语法:

Create function function_name argument

Return datatype is|as

Local decaration

Begin

Excutable statement

Exception

Handles

End;

b.变量赋值

1. Oracle里的用法:存储过程中边查询边给变量赋值。select 某一列名into 变量名from table where ..;

相当于sql server中的select 变量名=列. From table where …. 注意:select * /某一列名into 表名

2. Oracle 直接赋值的符号是:' := '

五触发器(Trigger)

Oracle

Create or replace trigger trigger_name [before/after]

[insert/update/delete] on table_name

变量声明

begin

Sql statement

end

Ms sql

Create trigger trigger_name on table

{for |after|instead of} [insert|update|delete] as sql_statements 六游标(Curcor)

Oracle中提供两种游标类型,它们是静态游标和ref游标静态游标又分为隐式游标与显式游标

Ref游标,游标变量是一种引用类型

隐式游标属性包括%notfound,%found,%rowcount,%isopen 如:

Begin

Delete from ta where ord='ddd'

If sql%notfound then

Dbms_output.put_line(''未找到值)

Else

Dbms_output.put_line(找到并删除之)

End if

End

显示游标:可以用下面语句控制游标

Open cursorname

Fetch cursor_name into var_name

Close cursor_name

创建游标语法:

Oracle:

declare variable

Cursor test is select * from order

Sql server

Declare test cursor for select * from order

七 .错误处理(Exception & test & debug)

有两种类型的异常:一种预定义,另外一种是用户自定义

预定义的类型有很多,如No_data_found,Cursor_already_open

对于Oracle的调试,可以借助第三方工具,如toad,Pl.sql Developer,

对于sql server采用变量或者print 形式进行调试

Oracle异常定义部分的示例:

Exception

When then statements

When others then

Statements

End;

其中是系统预定义的名字。

Raiser_application_error用于创建用户定义的错误信息的过程,用户定义的错误消息可以指定的异常描述的更详细

Sql server在错误处理上多采用自定义。或者是用goto跳转的方式

如:

Begin

Sql statements

if @error<>0 goto error

end

Error:

Return;

或是直接用raiserror

if @error<>0

begin

raiserror('发生错误.',-1,-1)

return (1)

end

好了,两者的主要的差异就写到这,但愿我表述清楚了,由于东西比较多,所以还有很多具体东西没有写

第二部分:

模式匹配

SQL Server的LIKE关键字提供了有用的通配符搜索功能,这个功能在Oracle中不支持

除了所有的RDBMS都支持的(%)和(_)通配符以外,SQL Server还支持([ ])和([^])通配符。

([ ])字符用来查询在一个范围内的所有单个字符。例如,如果你需要查询包含一个从a到f的字符的数据,

你可以这样写:“LIKE '[a-f]'”或者“LIKE '[abcdef]'”。这些附加的通配符的有效性在下表中给出。

Oracle Microsoft SQL

SELECT * FROM STUDENT_ADMIN.STUDENT

WHERE LNAME LIKE 'A%'

OR LNAME LIKE 'B%'

OR LNAME LIKE 'C%' SELECT * FROM STUDENT_ADMIN.STUDENT

WHERE LNAME LIKE '[ABC]%'

[^]通配符用来标记那些不在特定范围内的字符。例如,如果除了a到f以外的所有字符都是可以接受的,你可以这样书写:

LIKE '[^a - f]'或者LIKE '[^abcdef]'。

欲了解关于LIKE关键字的详细信息,请参阅SQL Server联机手册。

在比较中使用NULL

尽管Microsoft SQL Server传统上支持SQL-92标准的和一些非标准的NULL行为,但是它还是支持Oracle中的NULL 的用法。

为了支持分布式查询,SET ANSI_NULLS必须设定为ON。

在进行连接的时候,SQL Server的SQL Server ODBC驱动程序和OLE DB提供者自动把SET ANSI_NULLS设定为ON。

这个设置可以在ODBC数据源、ODBC连接属性、或者是在连接到SQL Server之前在应用程序中设置的OLE DB 连接属性中进行配置。

在从DB-Library应用程序中连接时,SET ANSI_NULLS缺省为OFF。

当SET ANSI_DEFAULTS为ON时,SET ANSI_NULLS被允许。

欲了解关于NULL用法的详细信息,请参阅SQL Server联机手册。

字串连接

Oracle使用两个管道符号(||)来作为字串连接操作符,SQL Server则使用加号(+)。这个差别要求你在应用程序中做小小的修改。

Oracle Microsoft SQL

SELECT FNAME||' '||LNAME AS NAME

FROM STUDENT_ADMIN.STUDENT

-----------------------------------------------

SELECT FNAME +' '+ LNAME AS NAME

FROM STUDENT_ADMIN.STUDENT

流控制(Control-of-Flow)语言

流控制语言控制SQL语句执行流,语句块以及存储过程。PL/SQL和Transact-SQL提供了多数相同的结构,但是还是有一些语法差别。

关键字

这是两个RDBMS支持的关键字。

语句Oracle PL/SQL ---------------------Microsoft SQL Server Transact-SQL

声明变量DECLARE DECLARE

语句块BEGIN...END; BEGIN...END

条件处理IF…THEN,

ELSIF…THEN,

ELSE

ENDIF;

--------------------------------------------------------

IF…[BEGIN…END]

ELSE

[BEGIN…END]

ELSE IF

CASE expression

无条件结束RETURN------------ RETURN

无条件结束当前程序块后面的语句EXIT BREAK

重新开始一个WHILE循环N/A CONTINUE

等待指定间隔N/A (dbms_lock.sleep) WAITFOR

循环控制WHILE LOOP…END LOOP;

------------

LABEL…GOTO LABEL;

FOR…END LOOP;

LOOP…END LOOP;

WHILE

BEGIN… END

LABEL…GOTO LABEL

程序注释/* … */, -- /* … */, --

打印输出RDBMS_OUTPUT.PUT_LINE PRINT

引发程序错误(Raise program error)RAISE_APPLICATION_ERROR --------------------RAISERROR 执行程序EXECUTE----------------------EXECUTE

语句终止符Semicolon (------------------N/A

声明变量

Transact-SQL和PL/SQL的变量是用DECLARE关键字创建的。Transact-SQL变量用@标记,

并且就像PL/SQL一样,在第一次创建时,用空值初始化。

Oracle Microsoft SQL

DECLARE

VSSN CHAR(9);

VLNAME VARCHAR2(20);

VBIRTH_DATE DATE;

VLOAN_AMOUNT NUMBER(12,2);

-----------------------------------------

DECLARE

@VSSN CHAR(9),

@VFNAME VARCHAR2(12),

@VLNAME VARCHAR2(20),

@VBIRTH_DATE DATETIME,

@VLOAN_AMOUNT NUMERIC(12,2)

Transact-SQL不支持%TYPE和%ROWTYPE变量数据类型定义。一个Transact-SQL变量不能在DECLARE命令中初始化。

在Microsoft SQL Server数据类型定义中也不能使用Oracle的NOT NULL和CONSTANT关键字。

像Oracle的LONG和LONG RAW数据类型一样。文本和图形数据类型不能被用做变量定义。

此外,Transact-SQL不支持PL/SQL风格的记录和表的定义。

给变量赋值

Oracle和Microsoft SQL Server提供了下列方法来为本地变量赋值。

Oracle Microsoft SQL

Assignment operator (:=) ---------------------SET @local_variable = value

SELECT...INTO syntax for selecting column values from a single row

-------------------------

SELECT @local_variable = expression [FROM…] for assigning a literal value,

an expression involving other local variables, or a column value from a single row

FETCH…INTO syntax------------------------------- FETCH…INTO syntax

这里有一些语法示例

Oracle Microsoft SQL

DECLARE VSSN CHAR(9);

VFNAME VARCHAR2(12);

BEGIN

VSSN := ?'

SELECT FNAME, LNAME INTO VFNAME, VLNAME FROM STUDENTS WHERE SSN=VSSN; END;

------------------------------------------------------------------------------

DECLARE @VSSN CHAR(9),

@VFNAME VARCHAR(12),

@VLNAME VARCHAR(20)

SET @VSSN = ?'

SELECT @VFNAME=FNAME, @VLNAME=LNAME FROM STUDENTS WHERE SSN = @VSSN

语句块

Oracle PL/SQL和Microsoft SQL Server Transact-SQL都支持用BEGIN…END术语来标记语句块。Transact-SQL不需要在DECLARE语句后使用一个语句块。

---------------------------------------------------------------------------------

-如果在Microsoft SQL Server

中的IF语句和WHILE循环中有多于一个语句被执行,则需要使用BEGIN…END语句块。

Oracle Microsoft SQL

DECLARE

DECLARE VARIABLES ...

BEGIN -- THIS IS REQUIRED SYNTAX

PROGRAM_STATEMENTS ...

IF ...THEN

STATEMENT1;

STATEMENT2;

STATEMENTN;

END IF;

WHILE ... LOOP

STATEMENT1;

STATEMENT2;

STATEMENTN;

END LOOP;

END; -- THIS IS REQUIRED SYNTAX DECLARE

DECLARE VARIABLES ...

BEGIN -- THIS IS OPTIONAL SYNTAX

PROGRAM_STATEMENTS ...

IF ...

BEGIN

STATEMENT1

STATEMENT2

STATEMENTN

END

WHILE ...

BEGIN

STATEMENT1

STATEMENT2

STATEMENTN

END

END -- THIS IS REQUIRED SYNTAX

条件处理

Microsoft SQL Server Transact-SQL的条件语句包括IF和ELSE,但不包括Oracle PL/SQL中的ELSEIF语句。可以用嵌套多重IF语句来到达同样的效果。对于广泛的条件测试,用CASE表达式也许更容易和可读一些。Oracle Microsoft SQL

DECLARE

VDEGREE_PROGRAM CHAR(1);

VDEGREE_PROGRAM_NAME VARCHAR2(20);

BEGIN

VDEGREE_PROGRAM := 'U'

IF VDEGREE_PROGRAM = 'U' THEN

VDEGREE_PROGRAM_NAME := 'Undergraduate'

ELSIF VDEGREE_PROGRAM = 'M' THEN VDEGREE_PROGRAM_

NAME := 'Masters'

ELSIF VDEGREE_PROGRAM = 'P' THEN VDEGREE_PROGRAM_

NAME := 'PhD'

ELSE VDEGREE_PROGRAM_

NAME := 'Unknown'

END IF;

END;

-----------------------------------------------------

DECLARE

@VDEGREE_PROGRAM CHAR(1),

@VDEGREE_PROGRAM_NAME VARCHAR(20)

SELECT @VDEGREE_PROGRAM = 'U'

SELECT @VDEGREE_PROGRAM_

NAME = CASE @VDEGREE_PROGRAM

WHEN 'U' THEN 'Undergraduate'

WHEN 'M' THEN 'Masters'

WHEN 'P' THEN 'PhD'.

ELSE 'Unknown'

END

重复执行语句(循环)

Oracle PL/SQL提供了无条件的LOOP和FOR LOOP。Transact-SQL则提供了WHILE循环和GOTO语句。

WHILE Boolean_expression

{sql_statement | statement_block}

[BREAK] [CONTINUE]

WHILE循环需要测试一个布尔表达式来决定一个或者多个语句的重复执行。

只要给定的表达式结果为真,这个(些)语句就一直重复执行下去。如果有多个语句需要执行,则这些语句必须放在一个BEGIN…END块中。

Oracle Microsoft SQL

DECLARE

COUNTER NUMBER;

BEGIN

COUNTER := 0

WHILE (COUNTER <5) LOOP

COUNTER := COUNTER + 1;

END LOOP;

END;

------------------------------------------------------

DECLARE

@COUNTER NUMERIC

SELECT@COUNTER = 1

WHILE (@COUNTER <5)

BEGIN

SELECT @COUNTER =

@COUNTER +1

END

语句的执行可以在循环的内部用BREAK和CONTINUE关键字控制。BREAK关键字使WHILE循环无条件的结束,

而CONTINUE关键字使WHILE循环跳过后面的语句重新开始。BREAK关键字同Oracle PL/SQL中的EXIT关键字是等价的。

而在Oracle中没有和CONTINUE等价的关键字

GOTO语句

Oracle和Microsoft SQL Server都有GOTO语句,但是语法不同。GOTO语句使Transact-SQL跳到指定的标号处运行,

在GOTO语句后指定标号之间的任何语句都不会被执行。

Oracle Microsoft SQL

GOTO label;

<

PRINT语句

Transact-SQL的PRINT语句执行同PL/SQL的RDBMS_OUTPUT.put_line过程同样的操作。该语句用来打印用户给定的消息。

用PRINT语句打印的消息上限是8,000个字符。定义为char或者varchar数据类型的变量可以嵌入打印语句。

如果使用其它数据类型的变量,则必须使用CONVERT或者CAST函数。本地变量、全局变量可以被打印。可以用单引号或者双引号来封闭文本。

从存储过程返回

Microsoft SQL Server和Oracle都有RETURN语句。RETURN使你的程序从查询或者过程中无条件的跳出。RETURN 是立即的、

完全的、并且可以用于从过程、批处理或者语句块的任意部分跳出。在REUTRN后面的语句将不会被执行。

Oracle Microsoft SQL

RETURN expression: RETURN [integer_expression]

引发程序错误(Raising program errors)

Transact-SQL的RAISERROR返回一个用户定义的错误消息,并且设置一个系统标志来记录发生了一个错误。

这个功能同PL/SQL的raise_application_error异常处理器的功能是相似的。

RAISERROR语句允许客户重新取得sysmessages表的一个入口,或者用用户指定的严重性和状态信息动态的建立一条消息。

在被定义后,消息被送回客户端作为系统错误消息。

RAISERROR ({msg_id | msg_str}, severity, state

[, argument1 [, argument2>

[WITH options]

在转换你的PL/SQL程序时,也许用不着使用RAISERROR语句。在下面的示例代码中。

PL/SQL程序使用raise_application_error异常处理器,但是Transact-SQL程序则什么也没用。

包括raise_application_error异常处理器是为了防止PL/SQL返回不明确的未经处理的异常错误消息。

作为代替,当一个不可预见的问题发生的时候,异常处理器总是返回Oracle错误消息。

当一个Transact-SQL失败时,它总是返回一个详细的错误消息给客户程序。因此,除非需要某些特定的错误处理,

一般是不需要RAISERROR语句的。

Oracle Microsoft SQL

CREATE OR REPLACE FUNCTION

DEPT_ADMIN.DELETE_DEPT

(VDEPT IN VARCHAR2) RETURN NUMBER AS

BEGIN

DELETE FROM DEPT_ADMIN.DEPT

WHERE DEPT = VDEPT;

RETURN(SQL%ROWCOUNT);

SQL学习总结

SQL学习 2.1 SQL 简介 当面对一个陌生的数据库是,通常需要一种方式与它进行交换,以完成用户所需要的各种工作,这个时候,就要用到SQL语言了,由于SQL 语言的标准化,所以大多数关系型数据库系统都支持SQL语言,它已经发展成多种平台进行交互操作的底层会话语言。 2.2 SQL 使用入门 2.2.1 SQL分类 SQL 语句主要可以划分为以下3个类别 1)、DDL (Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop、alter等。 2)、DML(Data Manipulation Languagr)语句:数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。 3)、DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别、主要的语句关键字包括grant、revoke等。 2.2.2 DDL 语句 DDL是数据定义语言的缩写,是对数据库内部的对象进行创建(create)、删除(drop)、修改(alter)的操作语言,它和DML语句的最大区别是DML只是对表内部数据的操作,而不涉及表定义,结构的修改,更不会涉及其它的对象,DDL语句更多地被数据库管理员(DBA)所使用,一般开发人员很少使用。 下面通过一些例子来介绍MySQL中常用的DDL语句的使用方法。 1、创建数据库 因为所有的数据都存储在数据库中,因此需要学习的第一个命令是创建数据库,语法如下:

SQL常用命令汇总

SQL常用命令汇总 SQL是结果化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据定义、数据操纵和数据控制四个部分。SQL简洁、功能齐全,已成为目前应用最广的关系数据库语言。 一、SQL的发展及标准化 1.SQL的发展 SQL是当前最为成功、应用最为广泛的关系数据库语言,其发展主要经历了以下几个阶段; (1)1974年,由Chamberlin和Boyce提出,当时称为SEQUEL(Structured English Query Language); (2)1976年,IBM公司对SEQUEL进行了修改,并将其用于本公司的SYSTEM R关系数据库系统中; (3)1981年,推出了商用关系数据库SQL/DS,并将其名字改为SQL,由于SQL功能强大,简洁易用,因此得到了广泛的应用; (4)今天,SQL广泛应用于各种大型数据库,如Sybase,INFORMIX,SQL Server,Oracle,DB2,INGRES等,也用于各种小型数据库,如FoxPro,Access等。 2.SQL标准化 随着关系数据库系统和日益广泛,SQL的标准化工作也在紧张地进行着,二十多年来已制订了多个SQL标准:SQL-86,SQL-89,SQLL2和SQL-99。 二、SQL的基本概念 1.基本表——一个关系对应一个表。基本表是独立存在的表,不是由其他的表导出的 表。 2.视图——是一个或几个基本表导出的表,是一个虚拟的表。它本身不独立存在于数 据中,数据库中只存放视图对应的数据,这些数据仍存放在导出视图的基本表中。 当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。 三、SQL的主要特点 SQL有如下几个特点。 (1)SQL是类似于英语的自然语言,简洁易用。 (2)SQL是一种非过程语言。 (3)SQL是一种面向集合的语言。 (4)SQL既是自含式语言,又是嵌入式语言;可独立使用,也可以嵌入到宿主语言中。 (5)SQL是数据库查询(Query)、数据定义(Definition)、数据操纵(Manipulation)和数据控制(Control)四种功能。 创建数据表 语法格式:CREA TE TABLE<表名>(<列定义>[{,<列定义>|<表约束>}]) 例:create table s(xingm c(8),xueh c(8),chengj c(3)) 结果:

sql,心得体会

sql,心得体会 篇一:数据库SQL2000实验总结与心得体会 《数据库系统概论(第四版)》 体 会 学号:姓名:班级:教师: 学 期实验总结与心得 【实验名称】数据库的创建【实验内容】1、新建SQL注册表。2、新建数据库。主数据文件:逻辑文件名为Student_data,物理文件名为Student.mdf, 初始大小为10mB,最大尺寸为无限大,增长速度为10%; 数据库的日志文件:逻辑名称为Student_log,物理文件名为Student.ldf,初始大小为1mB,最大尺寸为5mB,增长速度为 1mB 3、修改已注册的SQLServer属性为使用SQLserver身份验证。 【实验名称】数据库的附加、分离、导入导出及分离【实验内容】 1.数据库文件的附加与分离 2.数据库文件的导入和导出 3..数据库的删除

4.修改数据库 【实验名称】数据库的创建(书中作业)【实验内容】 1.在数据库STUdEnT中创建一个学生基本信息表 1.用企业管理其创建表 2.用查询分析器创建表 2.SQLServer20XX的系统数据类型分为哪几类?常用的数据类型有哪些? 答:字符串类型、整型、长整型、短整型、浮点数类型、定点数类型、日期、时间。常用的数据类型有:字符串类型、整型、长整型、短整型、浮点数类型、定点数类型、日期、时间 3.在数据库STUdEnT中创建一个名为t_couse(课程信息表) 1.用企业管理其创建t_course表 2.用查询分析器创建t_course 4.在数据库STUdEnT中创建一个名为t_score(学生成绩)的表 5.SQLServer20XX中有多少种约束?其作用分别是什么 答:非空约束,作用指定某一列不允许空值有助于维护数据的完整性,因为这样可以确保行中的列永远保护数据。 主键约束,作用可以保证实体的完整性,是最重要的一种约束。 唯一约束,作用指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。 检查约束,作用对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。

ACCESS数据库中常见的SQL语句汇总教程

ACCESS数据库的SQL语句教学 1、查询所有记录:Select *通常用于快速查看表中的记录。当对表的结构无法确切记忆时,或要快速查看表中的记录时,使用Select *是很方便的。 use 企业销售管理系统 Select * from 职工 2、投影查询:很多时候并不需要将所有列的数据都显示出来。投影查询就是允许用户显示所需要的列。假设显示职工表中职工号、姓名、工资信息,具体操作方法如下。 Select 职工号,姓名,工资 from 职工 在Select查询中,还可以按照实际的需要或自己的喜好安排显示列的顺序,如果要把姓名放到第一列,则代码如下: Select 姓名, 职工号,工资 from 职工 3、条件查询:显示wh1或wh2仓库、性别不为女、工资在1300~2100之间的职工信息。具体操作如下: Select * from 职工号 where(仓库号='wh1' or 仓库号='wh2') And not 性别='女' and 工资>=1300 and 工资<=2100 在这里一定要注意,(仓库号='wh1' or仓库号='wh2')一定要加括号,否则就不是原题的意思。 4、谓词In查询:在查找特定条件的数据时,如果条件较多,就需要用到多个Or运算符,以查找满足其中任一条的记录。但使用多个Or运算符,将使Where子句变得过于冗长,这时使用In就非常清楚。另外,在后面讲解的嵌套查询中,也必须使用In查询。下面以显示zg1、zg2、zg11、zg15的订购单信息为例具体讲解一下。

使用Or运算符 Select * from 订购单 where 职工号='zg1' or 职工号='zg2' Or 职工号='zg11' or 职工号='zg15' 使用谓词In Use 企业销售管理系统 Select * from 订购单 where 职工号 in('zg1', 'zg2', 'zg11', 'zg15') 在Select语句中,还支持In与Not结合使用。假设显示职工号不为zg1, zg2, zg11, zg15的订购单信息,具体代码如下: 使用Or运算符 Select * from 订购单 where 职工号!='zg1' or 职工号!='zg2' Or 职工号!='zg11' or 职工号!='zg15' 使用谓词In Use 企业销售管理系统 Select * from 订购单 where 职工号 not in('zg1', 'zg2', 'zg11', 'zg15') 5、模糊Like查询:有的时候,我们不清楚所要查询的信息,如显示职工信息,但不能确定该职工的姓名,只知道他姓名中含有“王”字,那该如何查找呢?SQL中提供了Like关键字,使用Like进行了查询时,还要指定通配符。 通配符及其含义

SQL学习总结

1、With ties :查出与返回数据的最后一行的相同的数据 2、用法:select top(5) with ties 字段名FROM 表名 3、Over的使用 Over称为窗口函数 用法:sum(valus) over() 其是指对搜索出来的数据进行求和,不需要在进行分组,如果需要有限定条件则sum(valus) over(partition by字段名) 4、数据的计算 在进行数据与字段的乘除的时候,数字后面加一个点,(110.),这样就可以把整数字段隐式的装换为十进制数据进行乘除,否则则会使正式除法,回省略小数5、In 、like 、between的用法 In主要是指在多个数据中选择一个,进字段名的值在in之内 Like主要进行迷糊查询,例:like ‘ %as’ Between 主要是指字段值在两个值之间 6、N 的用法 N 表示国际化(national)用于表示字符串Unicode(nchar、nvarchar) 数据类型numeric是指实数例:numeric(12,2)(12指数据长度,2指小数位数)7、数据的优先级 1、() 2、x 、/、% 3、+ 、-、 4、 5、NOT 6、and 7、between 、in、like、or 8、= 8、case表达式的使用 Select 字段一,case 字段二 When‘条件’then 结果 When ‘条件’then 结果

End as 字段名from 表名 Case 与end是成对出现的 Case与case表达式的区别是,case表达式可以添加条件,但是case不可以While 语句的使用:进行1+2+3+…….+100 declare@sum int set@sum=0 declare@I int SET@I=0 WHILE@I<100 BEGIN SELECT@SUM=@SUM+@I SELECT@I=@I+1 END SELECT (@sum) 求得日期的月份 select MESBUSINESS20.dbo.fun_GetRealYYYYMMByDate(SubmitDat e) 其中fun是函数 9、数据类型 Varchar 和char nvarchar 和nchar 前者是一个字节来保存一个字符,语言只能限定于英语,后者是用两个字节来保存一个字符,不进行语言限制 在进行查询时如果把null值当做空字符串进行连接时,则可以通过一个CONCAT_NULL_YIELDS_NULL 保持OFF状态 语法:SET CONCAT_NULL_YIELDS_NULL OFF 同时也可以使用COALESEC 函数进行转变COALESEC(字段) Nvarchar 和varvhar的区别: Nvarchar在分配内存是可以根结自身的大小进行调整,nvarchar(100),其中一百是自己的最大地址,varchar(100)不会根据自身大小进行调整,100就是其占用的内存,不会改变

SQLServer数据库入门学习总结

SQL Server数据库入门学习总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作组成;对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2.数据库是如何操作数据的 insert,update,delete T-sql 函数存储过程触发器 3.数据库是如何显示数据的 select SQLServer数据库学习总结 1.SQL基础 SQL Server2000安装、配置,服务器启动、停止,企业管理器、查询分析器 第一代数据库--网状数据库和层次数据库;第二代数据库--关系数据库 数据库(DB);数据库管理系统(DBMS);数据库系统(DBS) SQL Server 2000 提供了不同版本:企业版、标准版、个人版、开发版 SQL Server中的数据类型:整数:int,smallint,tinyint,bigint;浮点数:real,float,decimal;二进制:binary,varbinary;逻辑:bit;字符:char,nchar,varchar,nvarchar;文本和图形:text,ntext,image;日期和时间:datetime,smalldatetime;货币:money,smallmoney 数据库的创建和删除;数据库表的创建、修改和删除 数据完整性:实体完整性:Primary Key,Unique Key,Unique Index,Identity Column;域完整性:Default,Check,Foreign Key,Data type,Rule;参照完整性:Foreign Key,Check,Triggers,Procedure;用户定义完整性:Rule,Triggers,Procedure;Create Table中得全部列级和表级约束 SQL Server中有5种约束:主键约束(Primary Key Constraint)、默认约束(Default Constraint)、检查约束(Check Constraint)、唯一性约束(Unique Constraint)、外键约束(Foreign Key Constraint). 关系图 数据库设计的步骤:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护 两个实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n) 实体关系模型-- E-R图

常用sql操作总结_尚硅谷_宋红康

SQL语句的多表查询方式 例如:按照department_id查询employees(员工表)和departments(部门表) 的信息。 方式一(通用型):SELECT ... FROM ... WHERE SELECT https://www.doczj.com/doc/4416295389.html,st_name,e.department_id,d.department_name FROM employees e,departments d where e.department_id = d.department_id 方式二:SELECT ... FROM ... NATURAL JOIN ... 有局限性:会自动连接两个表中相同的列(可能有多个:department_id和manager_id) SELECT last_name,department_id,department_name FROM employees NATURAL JOIN departments 方式三:SELECT ... JOIN ... USING ... 有局限性:好于方式二,但若多表的连接列列名不同,此法不合适 SELECT last_name,department_id,department_name FROM employees JOIN departments USING(department_id) 方式四:SELECT ... FROM ... JOIN ... ON ... 常用方式,较方式一,更易实现外联接(左、右、满) SELECT last_name,e.department_id,department_name FROM employees e JOIN departments d ON e.department_id = d.department_id --内连接 1) --等值连接 --不等值连接 2) --非自连接 --自连接 --外连接 --左外连接、右外连接、满外连接

数据库应用SQL总结

数据库应用SQL总结 1 数据库的操作 (3) 1.1 数据库的创建 create database name (3) 1.2 数据库的修改 alter database name (3) 1.2.1 修改方式1:修改modify (3) 1.2.2 修改方式2:添加add (4) 1.2.3 修改方式3:删除remove (4) 1.3 数据库的删除 drop database (4) 2 关系表的操作 (5) 2.1 关系表的创建 create table name (5) 2.2 关系表的修改 alter table name (5) 2.2.1 修改方式1:修改alter column (5) 2.2.2 修改方式2:添加add (5) 2.2.3 修改方式3:删除drop column (6) 2.3 关系表的删除 drop table name (6) 3 表数据的操作 (7) 3.1 表数据的录入 insert into table values (7) 3.2 表数据的修改 update table set (7) 3.3 表数据的删除 delete from name (7) 4 数据表查询 (8) 4.1 对列的相关查询 select table_list from table (8) 4.1.1 选择一个表中指定的列 select table_list from table (8) 4.1.2 查询全部列 select * from table (8) 4.1.3 修改查询结果中列标题 select list as list_name from table (8) 4.1.4 替换查询结果中数据select list case when then end from table . 8 4.1.5 查询经过计算的值 select expression from table (9) 4.2 对行的相关查询select table_list from table (9) 4.2.1 消除结果集中的重复行distinct (9) 4.2.2 限制结果集的返回行数 top n percent (9) 4.2.3 查询满足条件的行 select list from table where (9) 4.3 对查询结果排序 order by list_name asc|desc (10) 4.4 使用聚合函数 SUM( )AVG( )MIN( )MAX( )COUNT() (11) 4.5 对查询结果分组 group by (11)

sql子查询总结

在SQL语言中,当一个查询语句嵌套在另一个查询的查询条件之中时,称为子查询。子查询总是写在圆括号中,可以用在使用表达式的任何地方。如:嵌套在Select 、Insert 、Update 或Delete语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。 许多包含子查询的 Transact-SQL 语句都可以改用联接表示。在 Transact-SQL 中,包含子查询的语句和语义上等效的不包含子查询的语句在性能上通常没有差别。但是,在一些必须检查存在性的情况中,使用联接会产生更好的性能。否则,为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。所以在这些情况下,联接方式会产生更好的效果。 以下示例显示了返回相同结果集的Select子查询和Select联接: Select Name FROM AdventureWor ks.Production.Product Where ListPrice = (Select ListPrice FROM AdventureWor ks.Production.Product Where Name = ’Chainring Bolts’ ) Select Prd1. Name FROM AdventureWor ks.Production.Product AS Prd1 JOIN AdventureWor ks.Production.Product AS Prd2 ON (Prd1.ListPrice = Prd2.ListPrice) Where Prd2. Name = ’Chainring Bolts’ 嵌套在外部Select语句中的子查询包括以下组件: ●包含常规选择列表组件的常规Select查询。 ●包含一个或多个表或视图名称的常规 FROM 子句。 ●可选的 Where 子句。 ●可选的 GROUP BY 子句。 ●可选的 HAVING 子句。 子查询的Select查询总是使用圆括号括起来。它不能包含COMPUTE 或 FOR BROWSE 子句,如果同时指定了 TOP 子句,则只能包含 or DER BY 子句。 子查询可以嵌套在外部 Select,Insert,Update 或 Delete语句的 Where 或 HAVING 子句内,也可以嵌套在其他子查询内。尽管根据可用内存和查询中其他表达式的复杂程度的不同,嵌套限制也有所不同,但嵌套到 32 层是可能的。个别查询可能不支持 32 层嵌套。任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值。

经典SQL面试题总结

表 Student(S#,Sname,Sage,Ssex) 学生表 CREATE TABLE student ( sid varchar(10) NOT NULL, sName varchar(20) DEFAULT NULL, sAge datetime DEFAULT '1980-10-12 23:12:36', sSex varchar(10) DEFAULT NULL, PRIMARY KEY (sid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Course(C#,Cname,T#) 课程表 CREATE TABLE course ( cid varchar(10) NOT NULL, cName varchar(10) DEFAULT NULL, tid int(20) DEFAULT NULL, PRIMARY KEY (cid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; SC(S#,C#,score) 成绩表 CREATE TABLE sc ( sid varchar(10) DEFAULT NULL, cid varchar(10) DEFAULT NULL, score int(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8; Teacher(T#,Tname) 教师表 CREATE TABLE teacher ( tid int(10) DEFAULT NULL, tName varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 数据:(MySQL) insert into teacher(tid,tName) values (1,'李老师'),(2,'何以琛'),(3,'叶平'); insert into student(sid,sName,sAge,sSex) values ('1001','张三丰','1980-10-12 23:12:36','男'),('1002','张无极','1995-10-12 23:12:36','男'),('1003','李奎','1992-10-12 23:12:36','女'),('1004','李元宝','1980-10-12 23:12:36','女'),('1005','李世明','1981-10-12 23:12:36','男'),('1006','赵六','1986-10-12 23:12:36','男'),('1007','田七','1981-10-12 23:12:36','女'); insert into sc(sid,cid,score) values ('1','001',80),('1','002',60),('1','003',75),('2','001',85),('2','002',70),('3','004',100), ('3','001',90),('3','002',55),('4','002',65),('4','003',60); insert into course(cid,cName,tid) values ('001','企业管理',3),('002','马克思',3),('003','UML',2),('004','数据库',1),('005 ','英语',1); 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于60分的同学的学号和平均成绩;

经典实用SQL语句大全总结

经典实用SQL语句大全总结 [编辑语言]2015-05-26 19:56 本文导航 1、首页 2、11、说明:四表联查问题: 本文是经典实用SQL语句大全的介绍,下面是该介绍的详细信息。 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC 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 only 5、说明: 删除新表:drop table tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:

MSSQL常用命令汇总

首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC 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 only 5、说明:删除新表drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的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 11、说明:几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL 随UNION 一起使用时(即UNION ALL),不消除重

最新Sql-Server-基础知识总结

一、语句建库、表 1.回顾 1)数据库文件 主数据文件(.mdf) 次数据文件(.ndf) 日志文件(.ldf) 2.建库 1)语法

2)必要属性 存储位置 初始大小 增长速度 3)示例 4)注意事项 单位必须完整(必须具有”B”,eg:KB、MB等) 数据库的逻辑名称不能出现重复

5)建议 将数据文件和日志文件进行分开存放 数据库的初始大小及增长速度计算后在定义 3.删除数据库 1)语法 2)示例 3)建议 删除数据库之前尽量使用判断语句检查数据库是否存在。 4.建表 1)数据类型 字符类型 ?Char :非unicode的固定长度的字符类型 ?Varchar :非unicode的可变长度的字符类型 ?Nchar :unicode的固定长度的字符类型

?Nvarchar :unicode的可变长度的字符类型 ?Text 数值 Int、float、decimal、number 布尔类型 Bit 日期类型 Datetime 二进制 Image 2)语法 注:特征—非空(Not null)、自增(Identity) 3)示例

4)数据完整性 实体完整性 ?要求 唯一标识每行记录 ?实现 主键、唯一、自增 域完整性 ?要求 保证列数据的有效性 ?实现 数据类型、非空、默认值、检查 引用完整性 ?要求 引用完整性约束保证两(多)表之间数据的有效性 ?实现 引用关系 自定义完整性 ?要求 通过编写自定义的逻辑或规则实现数据的验证。 ?实现 存储过程、触发器、规则

5)约束(Constraint) 主键约束(Primary Key Constraint) 作用:数据唯一且不允许出现null值 唯一约束(Unique Key Constraint) 作用:数据唯一但允许出现一次null值 检查约束(Check Constraint) 作用:数据符合规则 引用约束(Foreign Key……References) 作用:保证两表之间数据的有效性 默认值约束(Default Constraint) 作用:提供默认的字段值 6)命名规则 缩写_列名 7)分类 行内约束

数据库中SQL知识点重点章节总结与归纳很全的哦

第一章绪论 1. 基本概念 (1) 数据库;(2) 数据库管理系统;(3) 数据库系统;(4) 实体;(5) 属性;(6) 码;(7) 域; (8) 实体型;(9) 实体集;(10) 联系(1:1) (1:n) (m:n) (11)现实世界、观念世界(信息世界)、数据世界 2.数据管理技术的发展阶段 人工管理阶段、文件系统阶段、数据库系统阶段和高级数据库技术阶段等各阶段的特点。3. 数据库系统的特点 (1) 数据结构化 (2) 共享性高,冗余度低,易扩充 (3) 独立性高 (4) 由DBMS统一管理和控制 4. DBMS的数据控制功能 (1) 数据的安全性保护 (2) 数据的完整性检查 (3) 并发控制 (4) 数据库恢复 5. 数据模型的组成要素 数据结构、数据操作、数据的约束条件 6. 最常用的数据模型 层次、网状、关系、面向对象模型 7. 关系模型 关系: 一张表 元组: 表中的一行 属性: 表中的一列 主码: 表中的某个属性组,它可以唯一确定一个元组 域: 属性的取值范围 分量: 元组中的一个属性值 关系模式: 对关系的描述。 表示为:关系名(属性1,属性2,…属性n) 8. 关系数据模型优缺点 (1) 建立在严格的数学概念基础之上 (2) 概念单一 (3) 存取路径对用户透明 9. 数据库系统的三级模式结构 内模式、外模式、模式 二级映射 10. 数据库系统的组成 本章重要概念 (1)DB、DBMS和DBS的定义 (2)数据管理技术的发展阶段 人工管理阶段、文件系统阶段、数据库系统阶段和高级数据库技术阶段等各阶段的特点。(3)数据描述

概念设计、逻辑设计和物理设计等各阶段中数据描述的术语,概念设计中实体间二元联系的描述(1:1,1:N,M:N)。 (4)数据模型 数据模型的定义,两类数据模型,逻辑模型的形式定义,ER模型,层次模型、网状模型、关系模型和面向对象模型的数据结构以及联系的实现方式。 (5)DB的体系结构 三级结构,两级映象,两级数据独立性,体系结构各个层次中记录的联系。 (6)DBMS(数据库管理系统)DBMS的工作模式、主要功能和模块组成。 (7)DBS(数据库系统)DBS的组成,DBA,DBS的全局结构,DBS结构的分类。第二章关系数据库 1. 基本概念 关系,候选码,主码,主属性,非主属性,键 2. 完整性约束 实体完整性、参照完整性、用户定义完整性 3. 笛卡儿积 4. 关系的性质 列是同质的 不同的列可出自同一个域,每一列为一个属性,不同的属性要有不同的属性名 列的顺序无所谓 任意两个元组不能完全相同 行的顺序无所谓 分量必须取原子值,即每一个分量必须是不可分的数据项 5.关系的完整性 实体完整性、参照完整性、用户定义的完整性 6. 关系代数 (1) 并、交、差、广义笛卡儿积 (2) 选择 (3) 投影 (4) 连接:等值连接、自然连接 超键(Super Key):在关系中能惟一标识元组的属性集称为关系模式的超键。 候选键(Candidate Key):不含有多余属性的超键称为候选键。也就是在候选键中,若要再删除属性,就不是键了。 主键:(Primary Key):用户选作元组标识的一个侯选键称为主键。一般,如不加说明,则键是指主键。 外键:(Foreign Key):如果关系R中属性K是其他模式的主键,那么K在模式R中称为外键 例如:学生(学号,姓名,性别,驾驶证号)假定学生不重名 超键:(学号,姓名),(学号,性别),(学 号,姓名,性别),(姓名,性别)等等 候选键:学号,姓名 主键:你在数据库定义的时候,如果选择学号作为 键,那么学号就是候选键

EBS常用SQL总结

Session相关 1)查看session状态 Pl/Sql developer->tools->sessions 2)查看那些表被哪个session锁定 SELECT a.object_name, a.object_type, v.session_id FROM all_objects a, v$locked_object v WHERE v.object_id = a.object_id;

查找配置文件 select t.PROFILE_OPTION_NAME,a.application_name ,https://www.doczj.com/doc/4416295389.html,ER_PROFILE_OPTION_NAME,T.DESCRIPTION from FND_PROFILE_OPTIONS_VL t, fnd_application_tl a where1=1 --AND t.PROFILE_OPTION_NAME like '%ZZOM207%' and t.APPLICATION_ID=a.application_id and https://www.doczj.com/doc/4416295389.html,nguage='ZHS'; 请求相关 1)查找所有请求对应的职责 SELECT FRTL.RESPONSIBILITY_NAME, https://www.doczj.com/doc/4416295389.html,ER_CONCURRENT_PROGRAM_NAME, PROS.CONCURRENT_PROGRAM_NAME FROM FND_RESPONSIBILITY_TL FRTL, FND_RESPONSIBILITY FR, FND_REQUEST_GROUP_UNITS REQ, FND_CONCURRENT_PROGRAMS_TL PRO, FND_CONCURRENT_PROGRAMS PROS WHERE FRTL.RESPONSIBILITY_ID = FR.RESPONSIBILITY_ID AND FRTL.APPLICATION_ID = FR.APPLICATION_ID AND https://www.doczj.com/doc/4416295389.html,NGUAGE = 'ZHS' AND FR.REQUEST_GROUP_ID = REQ.REQUEST_GROUP_ID AND REQ.REQUEST_UNIT_ID = PRO.CONCURRENT_PROGRAM_ID

MySQL常用基本SQL语句小结

MySQL:常用基本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 dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice ?disk?, ?testBack?, ?c:mssql7backupMyNwind_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 only 5、说明: 删除新表:drop table tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

NoSQL数据库总结

数据库 一、N oSQL数据 简介 NoSQL(NoSQL = Not Only SQL ),意即反SQL运动,指的是非关系型的数据库,是一项全新的数据库革命性运动 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 优点 可以处理超大量的数据 可以运行在便宜的PC服务器集群上 打破了性能的瓶颈 NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间,执行速度变得更快。 “SQL并非适用于所有的程序代码,” 对于那些繁重的重复操作的数据,SQL 值得花钱。但是当数据库结构非常简单时,SQL可能没有太大用处。 没有过多的操作 Bootstrap支持 因为NoSQL项目都是开源的,因此它们缺乏供应商提供的正式支持。这一点它们与大多数开源项目一样,不得不从社区中寻求支持。 缺点 没有正式的官方支持,万一出了差错会是可怕的 nosql并未形成一定标准,各种产品层出不穷,内部混乱,各种项目还需时间来检验 二、N oSQL数据库开源软件 1.MongoDB: 简介 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson 格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

相关主题
文本预览
相关文档 最新文档