美文网首页
oracle database

oracle database

作者: LunarShade | 来源:发表于2017-12-17 19:20 被阅读0次

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’的就是包

相关文章

网友评论

      本文标题:oracle database

      本文链接:https://www.haomeiwen.com/subject/ycduwxtx.html