主键和联合主键
其实很简单,你就知道一下几点就可以了,在以后的工作中就足够了。
1,主键用于唯一标识表中的行数据,不能为空,一个主键值对应一行数据。另外,会自动在主键上创建索引,用于加快查询。
2,外键用于两个表的联系。两个表必须具有相同类型的属性,在该属性上有相同的值。该属性应为其中一个表的主键,在另外一个表设置为外键。约束内表的数据的插入和更新,从定义外键时可以发现 外键是和主键表联系,数据类型要统一,长度(存储大小)要统一。这样在更新数据的时候会保持一致性。
3,有时可以用两个字段来建立主键,这叫联合主键。这种情况出现在当一个字段无法唯一的时候要借助另一个字段来确保唯一性的时候。
主键作为外键,必须是主键,你的主键是复合主键,那么你作为外键的时候也必须是复合主键作为外键
create table person( name char(10), age number, primary key (name,age) );
外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值
索引--该字段没有重复值,但可以有一个空值
主键--主键只能有一个
外键--一个表可以有多个外键
索引--一个表可以有多个唯一索引
事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。事务性质:原子性、? 原子性。即不可分割性,事务要么全部被执行,要么就全部不被执行。
? 一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态
? 隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,
? 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。
分组函数:
nvl(null,0)将空赋值为0
avg(字段) 求平均值 只计算非空 数和非空的行的结果。
sum(字段) 求和
distinct 去重复 count (distinct 字段)
-------------------------------------------------------
substr('1234',2,3) ----234 数据库字符从1开始 与编程语言不同第二个参数是截取多少位,不包含最后一位。
round(123.45) -----123 四舍五入保留整数
round(123.45,1) -----123.5 小数点后保留一位小数
round(123.45,-1) ------120 小数点前一位四舍五入
trunc(123.11)---123 默认整数截断
trunc(123.11,1) ---123.1 小数后一位处截断
mod('1000','100')-------0求余
to_date('2018-1-1','yyyy-mm-dd') 字符转时间
to_char(sysdate,'yyyy-mm-dd') 时间转字符。
months_between(时间,时间)两个时间相差几个月
add_months(sysdate,1) -----当前日期加一个月
next_day(sysdate,'星期四')----当前时间的下一个星期四时间
last_day(字段) 该月最后一天
lower('SQLJAVA') ------sqljava 字符全小写
upper('Sql JAVA')------SQL JAVA 字符全大写
initcap('sql java')-------Sql Java 字符首字母大写
concat('sql','java' ) -----字符连接
length('sql') -----3
转换函数
to_char(12345,'999,999,999')---------12,345
to_char(12345,'000,000,000')---------------000,012,345 使用0会自动补前面。
to_char(12345,'L999,999,999')---------¥12,345
多表查询
////natural join 自然连接,会去找俩表字段名一样的当连接条件,只有都等值的才查找出来,局限
/////join using(字段) 使用一个字段名一样列等值连接。局限
sql 19999
join on 和where 一样设定等值条件 ,
left join on 左外链接 ,左表与另一个表无关联的数据也显示
right join on 右外链接 ,右表与另一个表无关联的数据也显示
full join on 全外链接 ,右表,左表与另一个表无关联的数据也显示