oracle基础数据类型:
1. 字符型:字符串
varchar2(最大4000), nvarchar2(最大2000, 支持unicode)--->可变长度
2. 数字类型
包括整数和小数
number(有效位数, 小数位数);
number(11) 11位
number(5, 3)99.999
3. 日期类型:时间
date:取值范围:公元前4712年1月1号---公元9999年12月31号, 可以直接精确到秒
4.算术运算符 注意这个地方没有取余的运算符( %) , 取余使用mod函数)
NOT IN 等同于<>all ()
如果子查询作为条件时,其中有一个值为null,则尽量避免使用not in
<>/!=(不等于) ,两种表现形式
5.逻辑运算符(and or not)
字符串连接符(||)
6.数据库约束:
主键约束 ( PK_nmae ,主键起的名字) 非空, 唯一
一个表中只能有一个主键(某一列),
外键约束 ( FK_name ,外键起的名字)
唯一一个涉及两个表中的字段约束
唯一约束(unique) (UK_name,唯一起的名字)
保证字段值的唯一性 与主键的区别: 唯一约束可以为空值, 唯一约束可以有多个,但是主键不可以为空
检查约束(cheeck_ name ,检查起的名字) 定义一个值的范围
6.常用关键字
select t.*, t.rowid from YUAN t ALTER TABLE yuan ADD sfzh NUMBER --给表格添加列 SELECT s.* FROM yuan s --打印所有信息 SELECT s.sname,s.sage FROM yuan s --从中打出名字,年龄的信息,后面的表名可以起一个别名 SELECT s.* FROM yuan s WHERE s.sage>24 --打印出年龄大于24的所有的信息 INSERT INTO yuan(ID , sname,sage)VALUES (106,'小黑',24);--指定添加的部分 COMMIT; --提交 INSERT INTO yuan VALUES (107,'小赵',21,SYSDATE,NULL,NULL); --所有的信息都添加,SYSDATE,系统默认时间 COMMIT; UPDATE yuan s SET s.sage = 26 WHERE s.id = 102; --更新数据 COMMIT; DELETE yuan s WHERE s.id = 105; --删除数据 COMMIT;
SELECT y.* FROM yuan y SELECT y.* FROM yuan y WHERE y.id IN (101,107,106) --某个范围里的任意值 SELECT * FROM yuan y WHERE y.sname LIKE '%赵' --%表示任意几个字符,包括啥也没有, SELECT * FROM yuan y WHERE y.sname LIKE '小_' -- _表示单个字符 SELECT * FROM yuan y ORDER BY y.sage ASC --正序(默认) SELECT * FROM yuan y ORDER BY y.sage DESC --desc倒序 SELECT * FROM yuan y ORDER BY y.cid DESC ,y.sage ASC --先根据id排列,后再根据sage排列 SELECT * FROM yuan y ORDER BY 3,4 --索引是从1开始的,查询结果(*),按照列看索引 SELECT y.id,y.birthday FROM yuan y GROUP BY y.id,y.birthday --按某几列分组 SELECT y.id ,y.sage FROM yuan y GROUP BY y.id,y.sage ORDER BY y.id --按照某几列分组 SELECT y.id ,COUNT(1) FROM yuan y GROUP BY y.id--count 是计数的意思 SELECT y.id,COUNT(1) FROM yuan y GROUP BY y.id HAVING COUNT (1)=1 ----having关键字是用在group by之后对分组信息的过滤 --过滤出来计数等于1的id项 SELECT y.sname 名字, --CASE y.sex WHEN 1 THEN '女'WHEN 2 THEN '男'END 性别 --case...when...---类似于分支 CASE WHEN y.sex = 1 THEN '女' ELSE '男' END 性别 -- case ... when ....then ...else...end 别称 FROM yuan y SELECT DISTINCT y.cid FROM yuan y --去重,查看到底有几个部门 SELECT * FROM yuan y WHERE y.sage BETWEEN 22 AND 27 --闭合区间, 即包括前面的数, 也包括后面的数 SELECT * FROM yuan y WHERE y.birthday BETWEEN to_date ('20171101','yyyymmdd') AND to_date ('20171201','yyyymmdd') SELECT * FROM yuan y WHERE y.sage >= ALL(SELECT y.sage FROM yuan y ) --all,所有元素,取年龄的最大值 SELECT * FROM yuan y WHERE y.sage <= ANY(SELECT y.sage FROM yuan y ) --any/some---表示一个集合中任意一个元素 --取的是所有的数据