1. 登陆
sqlplus ID PASSWORD
2. 控制行/列布局:
set linesize XX
set pagesize XX
3. 提取表的信息:
select 列名 from X
4. 提取全部表的信息:
select * from XX
5. 查看表中的列名:
desc 表名
6.从数据字典中获取表的信息:
SELECT 信息 FROM USER_TAB_COLUMNS WHERE TABLE_NAME=‘表名’
7. 对列进行算术运算:
select 列名的运算(先乘除后加减) from 表
8. 定义类的别名
select 类 as 名字 from
select 类 名字 from
select 类 “名字” from
9. 类连接
select 类名 ||‘ 句子 ’|| 类名 from 表
* 表达单引号: 要用‘’避免和||后的‘形成配对
10. 选不重复的记录:
select distinct 类名 from 表
*选了多个类: 给出的是所有的不同组合
11. 选择比较结果后的列:
select xxx from 表 where 判定条件
12. 选择变量的结果:
select xxx from 表 where 变量名 = ’ xxx‘
* xxx区分大小写(是表内信息就区分)
13. 选择日期的结果:
select xxx from 表 where hiredate = ’DD-MON-YY‘
14. 如果不确定日期格式:
select xxx from 表 where hiredate = to_date(’xxxxxxxx‘, ’ddmmyyyy‘)
15. 用between筛选;
select xxx from 表 where xxx between 低 and 高
16. 用in筛选:
select xxx from 表 where xxx in (xxxxxxxx)
17. 用like筛选:通配查询
select xxx from 表 where 变量 like ’----信息%‘
其中-代表一个字符
%代表任意个字符
18. 用like查询包含下划线的数据:
select xxx from 表 where 变量 like ’----\_信息-----‘ except ’\’;
*escap代表后面的字符在like里按普通字符处理
19. and查询/or查询/not查询
select xxx from 表 where 条件 and/or/not 条件
and筛选同时满足两个条件的列
or筛选只要满足一个即可
not筛选相反条件的列
20. 对筛选结果根据某一列排序: order语句
select xxx from 表 order by 列名 asc(升序,默认)/desc(降序);
*此处列名可以用前面命名的别名
*也可以多个列一起排:前面的优先级高,可以分别定义每个列按升序/降序
21.字符串函数:
字符函数被分为:
大小写转换函数
字符处理函数
LOWER(column | expression): 将字符转换为小写
UPPER(column | expression): 将字符转换不大写
INITCAP(column | expression): 将每一个单词的第一个字母大写其它小写
CONCAT(column | expression): 返回第一个串接上第二个串,它的作用和'||’ 运算是相同的
SUBSTR(column | expression,m[,n]): 返回从字母m开始,有n个字符长的字符串。
LENGTH(column | expression): 返回字符串长度
INSTR(column 1 expression.m[n]): 返回字符串中字符的位置
LPAD(column 1 cxpression,n,'string'): 在字符串前填补字符,使其长度达到n。
RPAD(column 1 cxpression,n,‘string’): 在字符串后填补字符,使其长度达到n。
22.数字函数接收数字输入返回数字值
ROUND(column | expression, n):返回舍入到小数点右边n位的值
TRUNC(column | expression, n):返回截断到n位的值
MOD(m,n):返回m和n相除后的余数
power(m,n) 返回m的n次方
sqrt(m) 返回m的开方
23. 返回当前日期:
SELECT SYSDATE FROM SYS.DUAL;
24:from dual里面这个dual是他妈什么:
DUAL:是一个SYS用户所拥有的表,所有的用户都可以访问。它包括一个列DUMMY和一条记录值为X。
25:日期相关的函数:
妈的不能复制表格 垃圾编辑器26. 数据类型的转换函数:
TO_CHAR(number | date,[ ‘fmt’]) :将数字或日期按格式转换成字符
TO_NUMBER(char) :将字符串转换成数字,此字符串必须是数字
TO_DATE(CHAR,[ 'fmt']) :将字符串按指定的格式转换成日期
27.NVL函数: 把空值转化为指定类型的值
NVL(列名, 转化值)
28. 表的连接:
从两个表中获取数据:需要将两个表进行连接
一个表中的记录可以根据两个表的相同列和另一个表的记录相连接
通过:table.column1 = table2.column2 将表连接起来的条件
当写一个有连接的SELECT命令时,为了避免同样的不同表具有同样的列名,应该在列前加表的名字或者表的别名
当在表中有相同的列名时,并且这个列作为显示内容或者查询条件,必须在列名前加表名或表的别名作为前缀
当在表中有相同的列名时,并且这个列作为显示内容或者查询条件,必须在列名前加表名或表的别名作为前缀。
29. 等值连接:
两个表连接的WHERE条件是一个表的列等于另外一个表的列。通常情况下,这种连接是主键和外键的连接。
30. 可以给表定义别名:
在from语句中给表指定名字:
emp e, dept d where.....
定义之后select和条件句都必须用定义的名字
31. 非等值连接:
没有直接对应列,关联关系是某一列和其他列的大小关系
32. 外连接:
返回表两边有一边是null的记录
WHERE table1.column = table2.column(+);
有(+)的一边表示这边的值要么等于另外一边,要么为NULL
不能两边一起加(+),但是加在左面右面都可以
33. 全外连接:
FULL JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
34. 自连接:
有的时候,需要对表进行自连接。例如上图所示,EMP表中的MGR列的代表员工的经理的员工编号,所以要想显示出每个员工的经理就要对EMP进行自连接,用MGR=EMPNO。实际上,自连接只是等连接(等外连接)的一个特例,同一张表用不同的别名,区别成了不同的表。
35. 分组函数:
COUNT({*/[DISTINCE/ALL]expr}) 返回记录数,这里expr赋非空值,*表示所有被选择的记录,包括重复记录和空值。
MAX([DISTNCT/ALL]expr):表达式的最大值,忽略空值
MIN([DISTNCT/ALL]expr):表达式的最小值,忽略空值
AVG([DISTNCT/ALL]expr):平均值,忽略空值
STDDEV[DISTINCT/ALL]X):返回标准差,忽略空值
SUM([DIXNTICT/ALL]n):求和,忽略空值
VARIANCE([DISTINCT/ALL]X):返回统计方差
这些分组函数中,COUNT是计算NULL值的,其它函数忽略NULL值。
36. 分组函数的作用:
和单行函数不同,分组函数作用于一组记录,每一组返回一个结果。这些组可能是整个表,也可能是由GROUP BY子句将表分成的多个组。
37. 用group语句:产生数据组
SELECT column, group_function
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
GROUP BY子句
使用GROUP BY 子句将一个表分成许多小组,并对每一个小组返回一个计算值。
Group_by_expression:指定按什么列分组
规则:
在SELECT子句中,如果使用分组函数,不能对GROUP BY子句中指定的列使用分组函数。
使用WHERE子句,可预先排除某些记录
在GROUP BY 子句中必须有表中的列
在GROUP BY子句中不能使用列的别名
缺省情况下在GROUP BY子句中的列以升序排,你可以使用order by子句改变它。
38. 多列分组:
可以通过在group by后添加多列的方式来为进行组中分组(先写的先分组)
39. 对分组函数的结果进行限定:
由于分组函数不能写在WHERE子句中,如果要对分组函数结果值进行限定,可以用HAVING子句
40.子查询:
将一个查询放在另一个里
SELECT select_list
FROM tablename
WHERE expr_operator
(SELECTselect_list
FROMtable);
41. 子查询分类:
单行(返回一条记录)
多行(返回多条记录)
多列(返回多个列)
42. 子查询注意事项:
1. 要用括号分割
2. 不能加order by
3. 多行查询用多行运算符(all....), 单行查询用单行运算符(》《=)
4. 常见错误:查询单行返回多行/查询内容为空
43. 向数据库中添加/删除数据:
需要执行 DML语句:一组DML语句叫做一个事务
通常包括:insert delete update
44. insert语句:
insert into 表 (列....) values (值.......)
没信息的列默认为空,不能默认空的列没有值会报错
45. 从其他表复制语句:
insert into 表 select xxxxx列 from 表 条件
或
create table 表 select xxxx列 from 表 条件
46. update语句:
update 表名 set 列 = 新的列条件(运算) where 条件
47. delete from 表名 where 条件
* 不加条件:所有信息都会被删除
48. 提交修改:
以上修改不会出现在别的会话中----为了保存,必须用commit命令
如果要取消修改: 用rollback命令
49. dml语句注意事项:
需要加合适的where条件以免修改错误
50. 常用的数据库对象:
表--存储数据
视图----表数据的子集
序列----生成键值
索引----加快某些查询速度
同义词---给出对象的另一个可选名字
51. 表和列的命名:
只能用a-z, A-Z, 0-9,_$#
只能用字母开头
52. 创建表的语句:
create table 表名 (列名 数据类型, 列名 数据类型..........)
*被标注了primary key的是主键:不能重复
53. 利用子查询创建表:
create table 表名 as select * from 表名
将一个表复制为另一个表---同时包含满足条件的数据
54. 用alter增加列:
alter table 表名 add 列名 数据类型
55. 用alter修改列:
alter table 表名 modify 列名 数据类型
56. 删除表:
drop table 表名
*不能回退 啥都没了
57. 给表重命名:
rename 旧表名 to 新表名
58. 清空表内内容:
truncate table 表名
*不可以回退 释放全部存储空间
59. 创建视图:
create view 视图名称 as 子查询
查询试图:
select * from 视图名称
删除试图:
drop view 视图名称
60. 查看索引:
create index on 表名(列名)
61. 其他:
•约束(constraints):用来防止存入不合法的数据,可以从user_constraints查看
•序列(sequences):通常用来一个序列编号,可以从user_sequences中查看
•同义词(synonyms):给其他Oracle对象的一个别名,可以从user_synonyms中查看
•函数和过程(procedures):执行某些复杂的、无法用简单语句实现的特殊处理的代码块。可以从user_procedures中查看。
•包(packages):可以把函数和过程集中在一个包里进行管理。在ALL_OBJECTS字典中的OBJECT_TYPE等于‘PACKAGE’的就是包
网友评论