数据库程序员面试笔试通关宝典
上QQ阅读APP看书,第一时间看更新

2.3 数据库的定义和操作语言

数据库定义语言用于定义数据库模式;数据库操纵语言用于数据库的更新和查询操作。早期这些语言是相互独立存在的,而现在这些语言被集成在一起,形成了一个统一的数据库语言。

2.3.1 数据定义

数据定义语言用于改变数据库的结构,包括创建、更改和删除数据库对象。用于操纵表结构的数据定义语言命令有以下几点:

· CREATE TABLE(创建表)。

· ALTER TABLE(修改表)。

· TRUNCATE TABLE(删除表中数据)。

· DROP TABLE(删除表)。

1.创建表
    create table 表名(字段 字段类型  [default'输入默认值'] [null/not null])
2.修改表

(1)添加字段:

    alter table 表名
    add (字段 字段类型);

(2)修改字段类型:

    alter table 表名
    modify(字段 字段类型 [default '输入默认值'] [null/not null]);  //修改多个字段用逗号隔开

(3)删除字段:

    alter table 表名
    drop(字段);
3.删除表中数据
    truncate table 表名
4.删除表
    drop table 表名;

Truncate命令与Delete命令的区别:

Truncate命令能够快速删除记录并释放空间,它不使用事务处理,因此无法回滚。

Delete命令可以在执行删除操作之后,通过Rollback撤销删除。如果确定表中的数据不再使用,使用Truncate命令效率更高。

2.3.2 数据查询

SQL为使用者提供SELECT语句进行数据查询,语句一般格式如下:

    SELECT [ALL|DISTINCT]<目标列表达式1>,<目标列表达式2>,…
    FROM <表名或视图名>
    WHERE <条件表达式>
    GROUP BY <列名1>
    [HAVING <条件表达式>]
    ORDER BY <列名> [ASC|DESC];

语句的含义:根据WHERE子句的条件表达式从FROM子句指定的表中找出满足条件的元组,然后再按照SELECT子句中的目标表达式选出元组中对应的属性值形成目标表。

如果有GROUP BY子句,则将结果按<列名1>的值进行分组,属性值相等的元组为一个组。如果GROUP BY子句后带有HAVING语句,则只有满足HAVING语句的条件方可输出。如果有ORDER BY子句,结果还要按<列名>的值进行升(降)序排序操作后输出。

查询元组的满足条件及谓词如表2-2所示。

表2-2 查询条件及谓词

2.3.3 数据更新

在DML的操作语法中,除了查询之外还有数据库的更新操作。数据的更新操作主要指添加、修改和删除数据。这里考虑到emp表在后面的学习中还要继续使用,所以下面先将emp表复制一份,输入如下指令:

    CREATE TABLE myemp AS SELECT * FROM emp;

这个语法是Oracle数据库中支持的操作,其他数据库中的语法和Oracle是不一样的。

1.数据的添加

如果想实现数据的添加操作,则可以使用如下的语法:

    INSERT INTO 表名称 [(字段1,字段2,…)] VALUES(值1,值2,…);

对数据类型的处理如下:

增加数字:直接编写数字,例如“123”;

增加字符串:字符串应该使用“”声明。

2.添加DATE数据

(1)可以按照已有的字符串的格式编写字符串,例如“2020-05-28”。

(2)利用TO_DATE()函数将字符串变为DATE类型的数据。

(3)如果设置的时间为当前系统时间,则使用SYSDATE。

3.修改

如果要修改已有的数据,请按照如下的语法进行:

    UPDATE 表名称 SET  更新字段1=更新值1,更新字段2=更新值2,…[WHERE 更新条件(s)]

例如:更新雇员编号8888的基本工资为6000,职位改为MANAGER,奖金改为1000。

    UPDATE表名称SET job='MANAGER',sal=6000,comm=1000 WHERE empno=8888;

如果更新时不加更新条件,则更新全部数据,但这种方法不可取,如果表中数据量很大,这种更新所耗费的时间比较长,且性能也会明显降低。

4.删除

删除语法如下:

    DELETE FROM 表名称 [WHERE 删除条件(s)]

例如:删除2009年雇佣的员工信息。

    DELETE FROM表名称WHERE TO_CHAR(条件,'yyyy')=2009;

如果删除时没有匹配条件的数据存在,则更新记录为“0”。如果没有删除条件,则删除全部数据。