[关闭]
@demonly 2017-01-28T03:30:33.000000Z 字数 3955 阅读 1033

管理数据库

SQL


定义数据结构

基本数据类型

管理数据库对象

规划是与数据库某个用户名相关联的数据库对象的集合。数据库里可以有一个或多个规划。当用户创建了一个对象时就是在自己的规划里创建了它。

使用用户名 USER1 创建一个名为 EMPLOYEE_TBL 的表,这个表的实际名称是 USER1.EMPLOYEE_TBL。当访问自己所拥有的表时不用加规划名称,如果其他用户要访问这个表就必须要加规划名。

CREATE TABLE语句

创建表的基本语法如下所示

  1. CREATE TABLE table_name
  2. ( field1 data_type [ not null ],
  3. field1 data_type [ not null ],
  4. field1 data_type [ not null ] );

示例

  1. CREATE TABLE EMPLOYEE
  2. (EMP_ID CHAR(9) NOT NULL,
  3. EMP_NAME VARCHAR(48) NOT NULL,
  4. EMP_ST_ADDR VARCHAR(20) NOT NULL,
  5. EMP_PHONE INTEGER(10) NULL);

ALTER TABLE命令

这个命令可以对已创建的表进行修改,可以添加列、修改列定义、添加和去除约束。

基本语法如下

  1. alter table table_name [modify] [column column_name][datatype|null not null]
  2. [restrict|cascade]
  3. [drop] [constraint constraint_name]
  4. [add] [column] column definition

修改表的元素

列的属性指的是其所包含的数据规则和行为,利用这个命令可以修改列的属性。

  1. ALTER TABLE EMPLOYEE_TBL MODIFY
  2. EMP_ID VARCHAR(10);

添加列

如果表中已经包含数据,那么添加的列就不能定义为 NOT NULL,如果要添加的话需要添加一列,定义为 NULL,然后在每条记录中都插入数据,最后再将列的定义修改为 NOT NULL。列的默认属性是 NULL,可以不必明确设置。

添加自动增加的列

使用 IDENTITY 类型可以添加自动增加的列。

  1. CREATE TABLE TEST_INCREMENT(
  2. ID INT IDENTITYY(1, 1) NOT NULL,
  3. TEST_NAME VARCHAR(20));

从现有表新建另一个表

利用 CREATE TABLE 语句与 SELECT 语句的组合可以复制现有表。

  1. create table new_table_name as
  2. select [ *|column1, column2 ]
  3. from table_name
  4. [ where ]

删除表

  1. drop table table_name

在 SQL Server 中删除表必须要删除与该表有引用关系的所有对象。

完整性约束

完整性约束用于确定关系型数据库里数据的准确性和一致性。

主键约束

主键在表里的每条记录都具有唯一的值,主键在创建表时指定。以下两种方法都是可行的。

  1. CREATE TABLE EMPLOYEE
  2. (EMP_ID CHAR(9) NOT NULL PRIMARY KEY,
  3. EMP_NAME VARCHAR(48) NOT NULL,
  4. EMP_ST_ADDR VARCHAR(20) NOT NULL,
  5. EMP_PHONE INTEGER(10) NULL);
  1. CREATE TABLE EMPLOYEE
  2. (EMP_ID CHAR(9) NOT NULL,
  3. EMP_NAME VARCHAR(48) NOT NULL,
  4. EMP_ST_ADDR VARCHAR(20) NOT NULL,
  5. EMP_PHONE INTEGER(10) NULL,
  6. PRIMARY KEY (EMP_ID));

唯一性约束

唯一性约束唯一性约束要求某个字段在每条记录中都是唯一的,跟主键约束非常相似。

  1. CREATE TABLE EMPLOYEE
  2. (EMP_ID CHAR(9) NOT NULL PRIMARY KEY,
  3. EMP_NAME VARCHAR(48) NOT NULL,
  4. EMP_ST_ADDR VARCHAR(20) NOT NULL UNIQUE,
  5. EMP_PHONE INTEGER(10) NULL);

外键约束

  1. CREATE TABLE EMPLOYEE
  2. (EMP_ID CHAR(9) NOT NULL,
  3. EMP_NAME VARCHAR(48) NOT NULL,
  4. EMP_ST_ADDR VARCHAR(20) NOT NULL,
  5. EMP_PHONE INTEGER(10) NULL);
  6. CONSTRAINT EMP_ID_FK FOREIGN KEY (EMP_ID) REFERENCES EMPLOYEE_TBL

NOT NULL 约束

检查约束

检查约束可以对检查输入的数据的有效性做出约束。

  1. CONSTRAINT CHK_EMP_ZIP CHECK( EMP_ZIP = '46234' )
  2. --检查 EMP_ZIP 是否等于 '46234'
  3. CONSTRAINT CHK_EMP_ZIP CHECK( EMP_ZIP in ('46234','46277','46745') )
  4. --检查 EMP_ZIP 是否在上述值之中
  5. CONSTRAINT CHK_PAY CHECK( PAY_RATE > 12.50 )
  6. --检查 PAY_RATE 是否大于 12.50

去除约束

可以通过定义约束时设置的约束名来去除约束

  1. ALTER TABLE EMPLOYEES DROP CONSTRANT EMPLOYEES_PK;

SQL还提供了去除特定约束的快捷方式

  1. ALTER TABLE EMPLOYEES DTOP PRIMARY KEY;

操作数据

INSERT 命令

基本语法,使用这种语法时 VALUES 列表里必须要包含表里的每个列,而且要使用创建列时的顺序。

  1. INSERT INTO TABLE_NAME
  2. VALUES ('value1','value2', [ NULL ]),
  3. ('value1','value2', [ NULL ]);

也可以仅对指定的字段插入。

  1. INSERT INTO EMPLOYEE_TBL
  2. (EMP_ID, LAST_NAME, FIRST_NAME)
  3. VALUES
  4. ('1', 'SMITH', 'JOHN'),
  5. ('2', 'TITO', 'JOHN');

利用 INSERT 语句和 SELECT 语句的组合可以实现从另一个表中插入数据。

  1. insert into table_name [('column1', 'column2')]
  2. select [*|('column1', 'column2')]
  3. from table_name
  4. [where condition(s)];

UPDATE 命令

UPDATE 语句用于更新表里的一列数据。

  1. update table_name
  2. set column_name = 'value'
  3. [where condition];

UPDATE 语句通常与 WHERE 子句一起使用,当没有使用 WHERE 子句时 UPDATE 命令会更新所有记录的响应字段。

更新多个字段。

  1. update table_name
  2. set column1 = 'value',
  3. [column2 = 'value',]
  4. [column3 = 'value']
  5. [where condition];

DELETE 命令

  1. delete from table_name
  2. [ where condition ];

DELETE 语句可以删除一行或者多行数据,如果没有 WHERE 子句,那么表中所有数据都会被删除。

管理数据库事务

事务是对数据库执行的一个操作单位,事务是对数据库所做的一个或多个修改。所有事务都会暂时保存在回退区域内,直到被提交或者被回退。在 SQL SERVER 中需要手动设定 BEGIN TRANSACTION 才会将事务保存在回退区域。

COMMIT 命令

  1. commit [ work ];

COMMIT 命令用于把事务所做的修改保存到数据库上,它把上一个 COMMIT 或 ROLLBACK 命令之后的全部事务保存到数据库上。对于大规模的数据加载或者撤销应该多使用 COMMIT,因为一旦临时回退区域没有空间了,数据库就可能挂起,禁止进一步的事务。

ROLLBACK 命令

  1. rollback [ work ];

ROLLBACK 命令用于撤销还没有被保存到数据库的命令。

SAVEPOINT 命令

  1. savepoint savepoint_name

保存点是事务过程的一个逻辑点,可以借由 ROLLBACK TO SAVEPOINT 命令会退到这个点而不用回退整个事务。

  1. ROLLBACK TO SAVEPOINT_NAME;

RELEASE SAVEPOINT 命令用于删除创建的保存点。

  1. RELEASE SAVEPOINT SAVEPOINT_NAME

SET TRANSACTION 命令

  1. SET TRANSACION READ WRITE;
  2. SET TRANSACION READ ONLY;

这个命令用于初始化数据库事务,可以指定事务的特性。在生成报告时使用 READ ONLY 能够提高事务完成的速度。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注