1. SQL简介
在第一学期的SQL Server学习中,已经知道,SQL是结构化查询语言(Structured Query Language),专门用于数据存取、数据更新及数据库管理等操作。并且已经学习了用SQL语句对数据库的表进行增删改查的操作。
在Oracle开发中,客户端把SQL语句发送给服务器,服务器对SQL语句进行编译、执行,把执行的结果返回给客户端。Oracle SQL语句由如下命令组成:
Ø
Ø
Ø
Ø
Ø
目前主流的数据库产品(比如:SQL Server、Oracle)都支持标准的SQL语句。数据定义语言,表的增删改操作,数据的简单查询,事务的提交和回滚,权限的授权和撤销等,Oracle与SQL Server在操作上基本一致。
1.
Oracle数据库的核心是表,表中的列使用到的常见数据类型如下:
类型 |
含义 |
CHAR(length) |
存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。 |
VARCHAR2(length) |
存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。 |
NUMBER(p,s) |
既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38为),s是指小数位数。 |
DATE |
存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年1月1日到公元后4712年12月31日。 |
TIMESTAMP |
不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。 |
CLOB |
存储大的文本,比如存储非结构化的XML文档 |
BLOB |
存储二进制对象,如图形、视频、声音等。 |
表1
1.
Oracle数据库的核心是表,表中的列使用到的常见数据类型如下:
类型 |
含义 |
CHAR(length) |
存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。 |
VARCHAR2(length) |
存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。 |
NUMBER(p,s) |
既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38为),s是指小数位数。 |
DATE |
存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年1月1日到公元后4712年12月31日。 |
TIMESTAMP |
不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。 |
CLOB |
存储大的文本,比如存储非结构化的XML文档 |
BLOB |
存储二进制对象,如图形、视频、声音等。 |
表1
1.创建表和约束
Oracle创建表同SQL Server一样,使用CREATE TABLE命令来完成。创建约束则
使用如下命令:
语法格式:ALTER TABLE命令
|
不论创建表还是约束,与SQL Server基本相同,注意:在Oracle中default是一
个值,而SQL Server中default是一个约束,因此Oracle的default设置可以在
建表的时候创建。
案例1:创建一个学生信息(INFOS)表和约束
create table infos
( stuId char(10) primary key,
);
数据操纵语言(DML)用于对数据库的表中数据进行添加、修改、删除和SELECT…For UPDATE(后面专门学习该查询)操作。对比一期学习过的SQL Server操作,接下来一一介绍在Oracle中的操作。
²
数据查询是用SELECT命令从数据库的表中提取信息。SELECT语句的语法是:
语法结构:简单查询
SELECT *|列名|表达式 FROM 表名 WHERE 条件 ORDER BY列名 |
语法解析:
1.
2.
3.
4.
5.
eg:select * from infos;
//显示infos表格内部学生号为04095043 和04095042学生的姓名、年龄。
select stuId,stuname , stuAge
//显示infos表格内部学生号为04095043 和04095042的学生的学号,姓名,年龄,此外按照学生年龄排升序。
²
用INSERT命令完成对数据的插入。
语法结构:根据结果集创建表
INSERT INTO 表名(列名1,列名2……) VALUES (值1,值2……) |
语法解析:
1.
2.
²
²
Oracle在表中更新数据的语法是:
语法结构:UPDATE操作
UPDATE 表名 SET 列名1=值,列名2=值…… WHERE 条件 |
代码演示:UPDATE操作
SQL> UPDATE INFOS SET CLASSNO='1002',STUADDRESS='山东莱芜' WHERE STUNAME='阮小二'; 1 rows updated SQL> commit; |
²
Oracle在表中删除数据的语法是:
语法结构:DELETE操作
DELETE FROM表名 WHERE 条件 |
代码演示:DELETE操作
SQL> DELETE FROM INFOS WHERE STUID='s100103'; 1 ROW DELETED SQL> COMMIT; |
²
truncate
在数据库操作中, TRUNCATE命令(是一个DDL命令)可以把表中的所有数据一次性全部删除,语法是:
语法结构:TRUNCATE
TRUNCATE TABLE 表名 |
TRUNCATE和DELETE都能把表中的数据全部删除,他们的区别是:
1.
2.
由于TRUNCATE命令比较危险,因此在实际开发中,TRUNCATE命令慎用。
Oracle默认安装中,已经创建了一个SCOTT用户,默认密码是:tiger,该用户下有四张表分别是:雇员表(EMP),部门表(DEPT),工资登记表和奖金表,请参考本章后面的附表。接下来很多操作都是在该用户下完成的。 |