Chinaunix首页 | 论坛 | 博客
  • 博客访问: 163906
  • 博文数量: 46
  • 博客积分: 2981
  • 博客等级: 少校
  • 技术积分: 475
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-01 12:43
文章分类

全部博文(46)

文章存档

2010年(4)

2009年(9)

2008年(33)

我的朋友

分类: 数据库开发技术

2008-04-03 15:51:20

1. 数据库对象限定符
一个数据库对象的完整名称由4个标识符组成:
   [[[服务器.][数据库].][所有者].]数据库_对象
  所有者是创建对象的用户的名称。



2. 字符字符串

CHAR,VARCHAR,VARCHAR2类型的区别与使用

区别:
  1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于   CHAR(20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2(20)      则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。
   varchar 数据类型占用两个额外的字节,以便记录字符串的长度。
  2.CHAR的效率比VARCHAR2的效率稍高。
  3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是      oracle不这样做,尽管它保留以后这样做的 权利。Oracle自己开发了一个数据类型 VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的 特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。
  
 何时该用CHAR,何时该用varchar2?
   CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
   VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。

  text数据类型用于存储大型数据, 一个字段可存储的信息量可多达2GB(2^31 - 1 字节)。这种情况下,表中只存储了一个指向该数据的16字节的指针。


3. Unicode 字符字符串
  • nchar
  • nvarchar
  • ntext
  这些新数据类型和老字符数据类型之间主要区别在于,新数据类型可以保存Unicode字符(每个Unicode字符占用两个字节).因此,它们可以存储的最大字符串长度只是相应老数据类型的一半(对于nchar和nvarchar来说是4000个字符).

4. 全局变量
  几个重要的全局变量
  @@identity

语法

identity [ (seed , increment) ]
  用例:
USE AdventureWorks
IF OBJECT_ID ('dbo.new_employees', 'U') IS NOT NULL
   DROP TABLE new_employees
GO
CREATE TABLE new_employees
(
 id_num int IDENTITY(1,1),
 fname varchar (20),
 minit char(1),
 lname varchar(30)
)

INSERT new_employees
   (fname, minit, lname)
VALUES
   ('Karin', 'F', 'Josephs')

INSERT new_employees
   (fname, minit, lname)
VALUES
   ('Pirkko', 'O', 'Koskitalo')

  @@error

如果前一个 Transact-SQL 语句执行没有错误,则返回 0。

如果前一个语句遇到错误,则返回错误号。

用例:

USE AdventureWorks;
GO
UPDATE HumanResources.EmployeePayHistory
    SET PayFrequency = 4
    WHERE EmployeeID = 1;
IF @@ERROR = 547
    PRINT N'A check constraint violation occurred.';
GO

  @@rowcount

Transact-SQL 语句可以通过下列方式设置 @@rowcount 的值:

  • 将 @@rowcount 设置为受影响或被读取的行的数目。可以将行发送到客户端,也可以不发送。

  • 保留前一个语句执行中的 @@rowcount。

  • 将 @@rowcount 重置为 0 但不将该值返回到客户端。


阅读(548) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~