create table stuInfo(
sid int primary key , --主键约束
sname varchar2(10) not null, --非空约束
sex char(2) check(sex in('男','女')), --检查约束
age number(3,1) constraint ck_stuInfo_age check(age>10 and age<100),
tel number(15) unique not null, --唯一约束,
address varchar2(200) default '大魔王' --默认值
)
–表操作
–加字段
alter table 表名 add 字段名 类型
例:alter table classInfo add status varchar2(10) default '哈';
–修改字段类型
alter table 表名 modify 字段名 类型
例:alter table classInfo modify status number(1);
–修改字段名
alter table 表名 rename column 旧字段名 to 新的字段名
例:alter table classInfo rename column cname to 班级名;
–删除字段
alter table 表名 drop column 字段名
例:alter table classInfo drop column status ;
–修改表名
rename 旧表名 to 新表名;
rename classInfo to 班级信息;
–删除表
drop table 表名;–删除表结构和内容
truncate table classInfo;–截断表,全量删除内容,效率高,无法ROLLBACK
delete 表名 [where 条件];–条件删除,可以ROLLBACK
–增加数据语法
insert into 表名[(列名,....)] values (对应的数据的值)
–删除的语法
delete 表名 [where 条件];
–修改记录的语法
select *from emp;
通用函数
数值函数
–四舍五入
select round(12.234) from dual;–取整的四舍五入 12
select round (12.657,2) from dual; –保留2位小数
select trunc(12.48) from dual;–取整
select trunc(12.48675,2) from dual; –保留2位小数 –取余
select mod(10,3) from dual;--10/3取余 =1;
日期函数
–日期-数字=日期 ,日期+数字=日期, 日期-日期=数字
–查询员工进入公司的周数
select ename,round((sysdate -hiredate)/7) weeks from emp;
–查询所有员工进入公司的月数
select ename,round(months_between(sysdate,hiredate)) months from emp; –求三个月后的日期
select add_months(sysdate,6) from dual;
select next_day(sysdate,'星期一') from dual; –下星期
select last_day(sysdate) from dual;–本月最后一天
select last_day(to_date('1997-1-23','yyyy-MM-dd')) from dual; –转换函数
select ename ,
to_char(hiredate,'yyyy') 年,
to_char(hiredate,'mm')月,
to_char(hiredate,'dd') 日
from emp;
select to_char(10000000,'$999,999,999') from emp;
select to_number('20')+to_number('80') from dual; –数字相加 –查询员工年薪
select ename,(sal*12+nvl(comm,0)) yearsal from emp; –空和任何数计算都是空 –Decode函数,类似if else if (常用)
select decode(1,1,'one',2,'two','no name') from dual; –查询所有职位的中文名
select ename, decode(job,
'CLERK',
'业务员',
'SALESMAN',
'销售',
'MANAGER',
'经理',
'ANALYST',
'分析员',
'PRESIDENT',
'总裁',
'无业')
from emp;
select ename,
case
when job = 'CLERK' then
'业务员'
when job = 'SALESMAN' then
'销售'
when job = 'MANAGER' then
'经理'
when job = 'ANALYST' then
'分析员'
when job = 'PRESIDENT' then
'总裁'
else
'无业'
end
from emp;
数值函数
–四舍五入
select round(12.234) from dual;–取整的四舍五入 12
select round (12.657,2) from dual; –保留2位小数
select trunc(12.48) from dual;–取整
select trunc(12.48675,2) from dual; –保留2位小数 –取余
select mod(10,3) from dual;--10/3取余 =1;
日期函数
–简单多表–日期-数字=日期 ,日期+数字=日期, 日期-日期=数字
–查询员工进入公司的周数
–查询所有员工进入公司的月数
select ename,round((sysdate -hiredate)/7) weeks from emp;
select ename,round(months_between(sysdate,hiredate)) months from emp; –求三个月后的日期
select add_months(sysdate,6) from dual;
select next_day(sysdate,'星期一') from dual; –下星期
select last_day(sysdate) from dual;–本月最后一天
select last_day(to_date('1997-1-23','yyyy-MM-dd')) from dual; –转换函数
select ename ,
to_char(hiredate,'yyyy') 年,
to_char(hiredate,'mm')月,
to_char(hiredate,'dd') 日
from emp;
select to_char(10000000,'$999,999,999') from emp;
select to_number('20')+to_number('80') from dual; –数字相加 –查询员工年薪
select ename,(sal*12+nvl(comm,0)) yearsal from emp; –空和任何数计算都是空 –Decode函数,类似if else if (常用)
select decode(1,1,'one',2,'two','no name') from dual; –查询所有职位的中文名
select ename, decode(job,
'CLERK',
'业务员',
'SALESMAN',
'销售',
'MANAGER',
'经理',
'ANALYST',
'分析员',
'PRESIDENT',
'总裁',
'无业')
from emp;
select ename,
case
when job = 'CLERK' then
'业务员'
when job = 'SALESMAN' then
'销售'
when job = 'MANAGER' then
'经理'
when job = 'ANALYST' then
'分析员'
when job = 'PRESIDENT' then
'总裁'
else
'无业'
end
from emp;
select *from dept;
select *from emp,dept order by emp.deptno;
select *from emp e,dept d where e.deptno=d.deptno;
select e.*,d.dname from emp e,dept d where e.deptno=d.deptno; –外连接
select *from emp order by deptno;
–查询出每个部门的员工
/*
分析:部门表是全量表,员工表示非全量表,
在做连接条件时,全量表在非全量表的哪端,那么连接时全量表的连接条件就在等号哪断
*/
–左连接
select * from dept d,emp e where d.deptno=e.deptno(+) order by e.deptno;
–右连接
select * from emp e,dept d where e.deptno(+)=d.deptno order by e.deptno;