Oracle ——————建表、select、视图
--建表 -- 关键字 : create -- 用法 : /* create table table_name ( lie1_name 数据类型 是否为空, lie2_name 数据类型 是否为空, lie3_name 数据类型 是否为空, …………………………………… ); */ create table infos ( stuid varchar2(7) not null , stuname varchar2(10) not null , gender varchar2(2) not null , age number(2) not null , seat number(2) not null , enrolldate date , studress varchar2(50) , classno varchar2(4) not null ) ; -- 添加约束 --添加主键 alter table infos add constraint pk_infos primary key(stuid) ; --check 约束 -- 性别只能是男或女 --作用: 条件限制 alter table infos add constraint ck_infos_gendertest check(gender='男' or gender='女') ; --唯一约束 --作用:使该列内容不重复 alter table infos add constraint un_stuname unique(stuname) ; --日期格式转换 select to_char(sbirthday , 'yyyy-mm-dd hh24:mi:ss') from student ; --查询系统时间 select sysdate from dual ; -- dual 伪列 ,只有一行一列数据 --绝对值函数 --abs() 括号内是数值型或可以隐形转换成数值型 select abs(122),abs(-123),abs(0) from dual ; --数据添加 -- insert into 表名 valus insert into student(sno,sname,ssex) values ('122','小明','男') ; --添加日期 --需要类型转换 to_date insert into student values(to_date('1990/2/3','yyyy/mm/dd')) ; --提交事务 commit ; --回滚事务 rollback ; --数据的复制 -- insert into 新的表名 select * from 要复制的表名 ; --查询数据去除重复 --distinct --select distinct 列名 from 表名 ; -- * 代表所有字段信息 -- != 或 <> 表示不等于 --|| 表示拼接 --修改表 --update 表名 set 条件或添加内容 update student set sclass = '666' where sname='小明' ; update student set sclass = '666' where sclass is null ; --删除表 --delete delete student where sname = '小明' ; --快速清空一个表 --truncate --truncate table 表名 ; --排序 --order by asc/desc 正序/倒序 --放于where条件后 --分组 --group by 列名 --查询位于两个数值之间的记录 --两种方法 select degree from score where degree >70 and degree < 85 ; --between 后面必须是小的数值 select degree from score where degree between 70 and 85 ; --查询 位于66,77,88 中的成绩 select degree from score where degree=66 or degree=77 or degree=88 ; select degree from score where degree in (66,77,88) ; /* 排序用法 order by asc 正序,默认 ,可不加 desc 降序 ; 语法: order by 字段名1 asc/desc ,字段名2 asc/desc ... 字段在前的优先级高, 先按字段1排序,再按字段2排序 有条件限制语句的话,放在where语句后面 */ -- 去除查询数据中的重复记录 --distinct --用法 --select distinct lie_name from biao_name ; --实例 select distinct depart from teacher ; -- 查询两个数据之间 -- 比较运算 例: select * from score where degree > 60 and degree < 80 ; -- 关键字:between 小值 and 大值 。 例: select * from score where degree between 60 and 80 ; -- 内置函数 -- 聚合函数 返回单个值 --- 记录条数(列名内容不为空,一般统计主键列) select count(*) from student where sclass = '95031'; -- 成绩求和 select sum(degree) 总成绩 from score ; -- 平均成绩 select avg(degree) 平均值 from score ; -- 最高分 select max(degree) 最高分 from score ; -- 最低分 select min(degree) 最低分 from score ; -- 伪列 -- rownum 内置列 select * from score where rownum = 1 ; --查询每门课的平均成绩大于80的 -- 先cno 分组,在 内置函数 select cno , avg(degree),count(cno) from score group by cno having avg(degree) > 80 ; select * from (select cno , avg(degree) a,count(cno) from score group by cno ) where a> 80 ; --纵向查询 --两个表之间查询的列数要相同,对应列数的数据类型要相同 select sname,ssex,sbirthday from student union select tname,tsex,tbirthday from teacher ; --模糊查询 --查询姓王的学生信息 select * from student where sname like '王%' ; --% 代表任意个数的字符 -- 一个下划线代表一个字符 _ -- 内置函数 --下限值 select floor(123.12) from dual ; --上限值 select ceil(123.12) from dual ; --四舍五入 select round(123.89) from dual ; --保留位数四舍五入 select round(125.456,2)from dual ; --直接舍掉 --作用: 格式化数据,统一格式 select trunc(123.456) from dual ; --并不会四舍五入 select trunc(123.456,2) from dual ; --绝对值 select ABS(-23) from dual ; --求余数 ,求模 select mod(78,69) from dual ; --计算字符串长度 select tname,length(tname) from teacher ; --去空格 --去前后空格 select trim(' a b cf ') from dual ; --去前空格 ltrim select ltrim(' sdf ') from dual ; --去后空格 rtrim select rtrim(' sdf ') from dual ; --查找替换 select replace(' s df g ',' ') from dual ; select sname,replace(sname,'王','李') from student ; --查找字符串(空格也算一个),从1开始,找不到返回0 select instr('sd wef','w') from dual ; --截取字符串 --3 第几位开始截取 --5 截取长度 select substr('sdfga fgh',3,5) from dual ; select sname,substr(sname,1,1) || '同学' from student ; --null值处理 select nvl(degree,0) from score ; select nvl2(degree,55,0) from score ; select t.*,decode(ssex,'男','1','女','2') from student t ; --返回当前用户登录名 select user from dual ; ---取得序列的当前值 select sq_test.nextval from dual ; select sq_test.currval from dual ; insert into weadafa values(sq_test.nextval,'王五') ; commit ; select * from weadafa ; --视图 create or replace view v_score as select t.*,s.sname,c.cname from score t,student s,course c where t.sno=s.sno and t.cno=c.cno ;