Oracle ——————建表、select、视图

时间:2022-12-26 05:42:20
--建表
-- 关键字 : 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 ('','小明','男') ; --添加日期
--需要类型转换 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 = '' where sname='小明' ; update student set sclass = '' 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 = ''; -- 成绩求和 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,'男','','女','') 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 ;