基本概念:
数据库对象:
表
约束条件:保证数据完整性。
视图:虚表,命名的查询语句。
索引:加速查询(加快查询的速度)。
序列:一串连续递增或递减的数字,步长相同,(代理键)。
同义词:一个对象的另外一个叫法(对象的别名)。
存储过程:用于操作
函数:用作复杂运算的。用于计算。
触发器:由事件触发的存储过程。
包:
数据库安全: 1、用户 2、方案或模式(Schema):是用户所对应的对象的集合。用户名等于方案名 3、权限 4、角色:权限组,一组权限。
5、配额(quota):答应被使用的空间。用户可以在表空间上可以使用的空间。
端口:2030
环境变量 -Oracle_BASE基本目录 -ORACLE_NAME 当前的主目录
-ORACLE_NLS33
使用US7ASCLL字符集时不用设
-PATH 路径
////////////////////////////////////////////////////////////////////////////////////////////////////////////
基本的SQL SELECT 语句口令中的第一个字符不能为数字。
语句:(一)查询:SELECT
数据操作语句:DML(数据的插入INSERT、删除DELETE、修改UPDATE、合并MERGE) (二)合并:把一个表中的数据合并到另一个表中去,假如数据在原表中存在做UPDATE,否则INSERT(9I独有)。(三)事务控制语句:COMMIT 提交、ROLLBACK 回滚、 SAVEPOINT 存储点(与 ROLLBACK 搭配使用)在回滚的时候可以回滚到某个存储点上。否则回滚到最初起点上。(四)数据定义语句:对对象操作。TRUNCATE 清除表中所有数据 /CREATE 创建 /DROP 删除 /ALTER 修改 (五)权限控制语句(DCL):GRANT 授予权限 /REVOKE 移除权限
SELECT: SELECT 查询列表 FROM 数据源; *&* SQL命令必须加分号。 ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK;
修改用户 解锁
给HR解锁 CONNECT(conn) HR/HR(密码) 用HR用户连接数据库。
*&*(不是SQL命令 是 SQLPLUS 命令)不用加分号 DESCRIBE(desc) DEPARTMENTS
要害字 表名描述表命令(SQLPLUS 命令)
SQL语句说明:(1)语句文本的书写不区分大小写。(但字符串在作为值的时候要注重大小写)
(2)语句可以写单行也可以写多行。
(3)要害字不能缩写或跨行。
(4)语句通常被分多行书写。
(5)缩进被用于提高语句的可读性。 数字和日期都可以使用数学运算符建立表达式。
+,-,*,/ <>不等于日期可以加减数字,数字默认为天。日期不能加日期,但日期可以减日期。字符不能加减。 定义空(NULL)值空值出现在表达式中会导致整个表达式的值为空。 NVL(字段名,将要赋予的值)函数
作用:将空值转换成其他有ASCLL码的值。 annual_salary年薪
别名可以加中文的字段别名。假如想强制地改变列名的大小写,可以在别名的定义时加上双引号,列名有空格时也要在列名上加双引号。
例:
select lastname as "employees name" from employees; spool +路径;
保存命令(将显示保存) 连接操作符:
select lastname 'work in' department_id from tablename; select last_name '''s salary is ' salary 员工月薪 from employees;
~~~
在单引号中还要使用单引号的话,就必须使用两个单引号来实现一个单引号的功能。
文本字符串: *可以代表字符、数字或是日期。
*当代表字符或日期的时候用单引号括起来,数字不需要。 在查询时默认显示所有的行,包括有重复值的行。 DISTINCT 消除重复行要害字,放在整查询列表的最前面。作用范围:整个查询列表的组合。消除重复行后会按字段的特性,做升序排列。(执行过程:先排序,再消除重复) select distinct department_id,job_id from employees; SQLPLUS 与 SQL 的关系 SQL *是一种语言
*ANSI标准
*要害字不能缩写
*用于操作数据库中的数据和表的定义
SQLPLUS命令的功能: *描述表的结构
*编辑SQL语句查询 SQLPLUS 命令 help + 命令 SQLPLUSW 在 WINDOWS 下运行的分析器。
登陆ISQLPLUS (1)先到服务中启动OracleOraHome92HTTPServer (2)在浏览器中输入:http://wnj:7778/isqlplus
~~~~~~~~~~~~~~~
URL(网页中的地址)
SQLPLUS 命令:与文件相关的命令:
spool + 路径
.
.
.
.
spool off save
把当前内存中的语句保存为文本文件。 run 或 /
运行当前内存中的语句 clear buffer(cl buff)
清空当前内存中的语句 start @
读取并执行 get
读取不执行 编辑命令: list
列出一条语句
*表示当前行 change
修改命令
原来c/jj/kk
c/jjj/xxx input
在当前行之后插入一行新的数据
append
在当前行中插入新的东西 n
写数字显示对应行
delete
del + 回车 删除当前行
del 1 3 删除第一到第三行 edit l,c,i,a,n,d,e 查看当前用户 SHOW USER 默认的日期格式
DD-MON-RR
日-月-年日期可以进行比较;字符可以进行比较(以字母的ASCLL码比较); IN(set)或NOT IN 匹配任何列表中的值; LIKE 模糊匹配字符串值; IS NULL 是否空值;
IS NOT NULL 是否不为空; BETWEEN 可以做数字、日期和字符的比较。 通配符 %
S_mith WHERE first_name like 's/_%'escape'/';
解释这个符号后的下划线为正常的字符。
假如不加,将被视为通配符作用的下划线。 '_'只能通配一个字符
主要用于通配固定位数的字符。例如查询月收入五位数以上的员工。五位就可以用'_'来查询。 逻辑操作符(用在WHERE子句中) AND OR NOT 先执行 NOT ,再执行 AND 最后执行 OR。 ORDER BY ORDER BY子句在 SELECT 语句的最后。 ASC:升序
DESC:降序空值作为无穷大来处理。 rownum 显示行数量约束的要害字(在结果中可以做代理键使用);可以按照查询列表中序号进行排序。系统在用户写出查询列表的同时就赋予每个列名一个序号,升序赋予。
例:
SELECT name,phone,adress from.........;
1 2 3
单行函数:对单行数据进行计算并返回一个值的函数。 *修改数据项
*接受参数返回一个值。
*对每行进行操作。
*每行返回一个结果。
*可以修改数据类型
*可以嵌套 character字符类型函数: LOWER()强制小写 UPPER()强制大写 INITCAP()每个单词首字母大写可以用在WHERE子句中。 CONCAT(‘’,‘’)连接函数
{
SUBSTR(string,a[,b])返回string的一部分,a和b以字符为单位。 SUBSTRB(string,a[,b])返回string的一部分,a和b是以字节为单位。 SUBSTRC(string,a[,b])返回string的一部分,a和b是以UNICODE完全字符为单位。 SUBSTR2(string,a[,b])返回string的一部分,a和b是以UCS2代码点为单位。 SUBSTR4(string,a[,b])返回string的一部分,a和b是以UCS4代码点为单位。 以上函数都是返回string的一部分,从字符位置A开始,长为B个字符。假如A是0,那它就被认为是1(字符串的开始位置)。假如A是正数,那么字符从左边开始数。假如是负数,则从STRING的末尾开始,从右边数。假如B不存在,那么缺省是整个字符串。假如B小于1,将返回NULL。假如A或B使用了浮点数,那么该数值首先被节取成一个整数,返回类型与STRING相同。
} {
LENGTH(string)
LENGTHB(string)
LENGTHC(string)
LENGTH2(string)
LENGTH4(string)
以上函数返回string的长度。因为CHAR类型的值是填充空格的,所以假如string是CHAR数据类型,那么末尾的空格算在长度之内。假如string是NULL,函数返回NULL。
} {
INSTR(string1,string2[,a][,b]) 返回string1中包含string2的位置。a和b以字符为单位。
INSTRB(string1,string2[,a][,b]) 返回string1中包含string2的位置。a和b是以字节为单位。
INSTRC(string1,string2[,a][,b])返回string1中包含string2的位置。a和b是以UNICODE完全字符为单位。 INSTR2(string1,string2[,a][,b]) 返回string1中包含string2的位置。a和b是以UCS2代码点为单位 INSTR4(string1,string2[,a][,b]) 返回string1中包含string2的位置a和b是以UCS4代码点为单位。
以上函数返回string1中包含string2的位置。从左边开始扫描string1,起始位置是A。假如A为负数那么从右边开始扫描。第B次出现的位置将被返回。A和B缺省都为1,即返回在string1中第一次出现string2的位置。假如string2在A和B的规定下没有找到那么就返回0。位置的计算是相对于string1的开始位置的,而不关A和B的取值。
}
LPAD(列名,数字,‘要补上的字符’)左补位 RPAD(列名,数字,‘要补上的字符’)右补位 TRIM(‘child_