关闭

oracle数据库

102人阅读 评论(0) 收藏 举报

1、sql语句:结构化查询语句,对大小写不敏感,但是查询的内容则区分大小写。

2、表的概念
表: table (实体集EntrySet)
行:row(实体Entry)
列:column(字段field)
3、条件判断
空值(null)处理: is(not) null ,并且没有空串‘’
select  * from emp where sal>=1000 and sal<=3000查询慢
select  * from emp where sal between 1000 and 3000查询较快,between是左右闭,等价于>=,<=
枚举(NOT)in在小数据时效率高,大数据时用or,此外in 不能查null,查null必须使用is
4、排序:
默认为升序asc(ascent)字符串按字母升序
降序为desc(descent)
5、注释/**/或
--
6、,case when else end[别名]
当前字段的属性值是依据原表中的值进行判断后重新进行赋值得到的,语法结构如下:
,case when exp1 then 结果1
when exp2 then 结果2
else  其他结果

end [别名]

该段程序的结果显示的是将表中的列进行了改造后的

7、单行函数
length(str):获得字符串str的字符长度
concat(str1,str2):相当于 || 的功能,
字符串使用||拼接或者concat
substr(str,begin,length):对str做截取,从begin(下标从1开始)开始截length位,数据库的下标起始位置是1而不是java数组的0
instr(str1,str2,begin):在str1里查找str2,从begin位(下标从1开始)开始查找。找到返回str2首字母所在的下标,否则返回0
lower(str) , upper(str) :将str转换成小写/大写


mod(num1,num2) -- 取模,num1%num2
trunc(n,length) --对数字n进行截断,精度到小数点后length位,
但是受精度影响,末尾的0将不计入
round(n1, length) --对数字n四舍五入,精度到小数点后length位
abs(num) --对num取绝对值

SYSDATE表示当前系统时间
add_months(myDate, num) --对myDate做月份的算术运算
last_day(myDate) -- 获取myDate所在月份的最后1天
months_between(myDate1,myDate2) --计算两个日期之间相隔几个月,返回值为小数
trunc(myDate, 日期格式字符串) --对myDate日期,根据指定日期格式(只能单独或年或月等)做截断,默认为年月日时分秒

Tochar :把日期转成换字符串
Todate:把字符串转换成日期
Tonumber: number的格式化
cast(str as Number)强制类型转换

nvl(row,value) --判断row是否是null,是null执行value,否则执行row。

8、组函数(忽略null值)
sum(列名[*])     --求一组数据的总和
avg(列名[*])     --求一组数据的平均值
max(列名[*])    --在一组数据中找出最大值
min(列名[*])     --在一组数据中找出最小值
count(列名[*])   --统计查询结果中该列的非空记录(统计结果中该列不为null的行数)


group by 

规则1:只有出现在group by 中的列才能出现在 select 子句中或order by子句中

规则2:如果在group by子句中的列上应用了某些函数,select子句中或order by子句的相应列也必须应用同样的函数

规则3:那些没有出现在group by 中的列,配合组函数可以出现在select子句中 或 order by子句中
如:select job,deptno,count(*),max(sal) from emp group by (job,deptno)就是合法的

Having对分组后的数据进行过滤,效率比where高
语法:having 过滤条件
查询语句规则:Select……from……  where……group by ……having……Order by……
9、列名不需要使用单引号,给列名取别名时,紧跟在要改的列名后


10、实体完整性是保证关系中的每个元组都是可识别的和唯一的(主码)
参照完整性一般是指多个实体(表)之间的关联关系。(外码)
用户定义的完整性(其它约束)

11.DQL(数据查询语言)Data Query Language:(不改变行列)
select:查询语句基本语法:
select 列名 from 表名(视图,索引,序列的所有操作和表是一样的)

12.DDL(数据定义语言) Data Define Language:(改变列)(表、视图、索引、序列、函数、存储过程、触发器)
create:创建表 
create table 表名(列名 字段类型 约束条件,)

alter:修改表结构(插入列,删除列,更改列名及其数据类型、约束条件等)
约束条件也是修改表结构,所以必有alter 同时条件约束属于表的定义范畴,因此同属于DDL,也就是说约束条件的所有操作是alter+其他DDL的组合,他的语法如下:
alter table 表名 add constraint 约束条件(约束名称,约束类型,约束列,[references参考表(外键约束列)])(非空约束以外可用)
alter table 表名 drop constraint 约束名称 
alter table 表名 modify 列名 constraint 约束条件(约束名称,约束类型)(非空约束只可使用,其他约束也可用)

alter table 表名 add(列名 数据类型[默认值][约束],……)插入列
alter table 表名 drop column(列名,……)删除列
alter table 表名 modify (列名 数据类型[默认值][约束],……) 修改列
alter table 表名 rename column 旧列名 to 新列名列重命名

drop:删除表等 删除表时会将与表有关的所有对象一起删掉,包括表中的数据和表结构
凡是使用create创建的都使用drop删除,包括视图、索引、序列、函数、存储过程、触发器
drop table 表名<对非全部列的操作属于修改范畴>

13.DML(数据操纵语言) Data Manipulate Language:(改变行)
insert:插入数据即插入行 
insert into 表名(字段名*可选,当全部插入时可以不必写) values(对应字段值)
以下两种语句的结果是一样的
--insert into test_1 values (2,null,null,null,null)
--insert into test_1(test_id) values (2)

update:更新数据,修正数据
update 表名 set 字段名=字段值,…… [where 条件……]

delete:仅删除数据,删除行,
delete from 表名 [where 条件……]

14、约束条件的定义:
--alter table test_1 add constraint test_unique unique (test_age)--添加唯一性约束条件
--alter table test_1 drop constraint test_unique--删除唯一性约束条件
--insert into test_1(test_id)values (1)--unique唯一性约束在插入时允许为null,此时不做唯一性判定
--delete from test_1--不加条件的删除是删除表中所有数据

--insert into test_1(test_id)values (1);--check检查性约束在插入时允许为null,此时不做检查性判定


--alter table test_1 modify test_age constraint test_check check(test_age>0)
--alter table test_1 modify test_age constraint test_unique unique
--alter table test_1 modify test_age constraint test_null not null--非空约束与其他约束相互独立
--以上三种modify修改约束条件都将新建一个约束条件
<因此约束条件的修改如下:
先drop再add,约束条件的变更不能通过modify改变。约束条件唯一、非空、检查、外键三者相互独立,因此如果通过modify修改现有约束条件会给该字段新添加一个约束条件>

外键要求:添加外键时,外键字段的内容要么为空 要么该字段的值在创建约束时在外表中存在
alter table test_1 add constraint test_foreign foreign key (test_class) references test_2(test_id)(仅此一种方法)
外键在插入数据时是检查性约束,约束条件类似于[字段值 in 外表字段]

15、distinct去除筛选出来的重复数据(行)必须放在开头,紧跟select
select distinct name from A
select distinct name, id from A
select count(distinct name) from A;

16、复杂查询的基本语法:

select 显示列 from 表a [inner]{left,right,full} join 表b on 外键连接条件 where筛选条件[最后] 多表查询就在其后再加[inner]{left,right,full} join 表b on 外键连接条件,


17、事务:

事务失败一定是rollback回滚

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8060次
    • 积分:209
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    最新评论