数据库第1天

--数据库 (管理数据的软件)
--Oracle 关系型数据库(mysql,db2,sqlServer)
--DDL语句  (数据库定义语言)
--CREATE TABLE 表名(字段定义);
--DROP TABLE 表名;
--RENAME 原表 TO 新表名;
--ALTER TABLE 表名 [DROP|ADD|MODIFY](字段列表)
--ALTER TABLE 表名 RENAME COLUMN原字段名 TO 新字段名;
--定义表对象
DROP TABLE EMP;
CREATE  TABLE EMP(
ename char(50),
empno number(4),
salary number(6,2),
birthday date
);
--字符类型 varchar2(x) char(x)
--variable character 可变的字符类型 4000字节
--可变:存多长的数据就占多少
--char  不可变的字符类型 2000字节
--不可变:定义多长存多长,用空格补位
--数字类型 number(n[,m])
--2个参数,n代表一共多少位,m代表小数位占几位
--日期类型 date
--7个字节,世纪,年,月,日,时,分,秒
--大数据类型 clob blob
--clob 存4GB 字符内容  (存放大文本内容)
--blob 存4GB 字节内容  (存放图片、影音文件内容)
--注:工作中一般将图片存到一个图片服务器中,数据库只保存URI

INSERT INTO EMP VALUES(
'HELLO',
1024,
9999.99,
TO_DATE('1999-02-02 02:58:58','YYYY-MM-DD HH:MI:SS'));

SELECT * FROM emp;
RENAME emp TO myEmp;
SELECT * FROM myemp;
ALTER TABLE myemp DROP(salary);
ALTER TABLE myemp ADD(salary number(6,2),hiredate date);
ALTER TABLE myemp MODIFY(salary number(7,2));
ALTER TABLE myemp RENAME COLUMN salary TO sal;
desc myemp;

--SQL语句 标准结构化查询语句
--SELECT 字段 FROM 表名;
select ename from myemp;
--SELECT 字段1,字段2 FROM 表名;
select ename,birthday from myemp;
--SELECT * FROM 表名
select * from myemp;
--练习:查找dept中dname,loc字段信息
select dname,loc from dept;
--字符串拼接 ||
select ename||'的薪水:'||sal from emp;
--列别名 "列别名"
select ename "员工 姓名" from emp;
--运算符
select ename,sal*12 from emp;
select ename,sal/21 from emp;
--单行函数
--1)字符串
--拼接函数
  select CONCAT(CONCAT(ename,'的薪资:'),sal) from emp;
--字符串长度
  select ename,LENGTH(ename) from emp;
--大小写转换
  select LOWER(ename) from emp;
  select UPPER(ename) from emp;
  insert into emp (empno,ename) values(8888,'yin wenhao');
  select INITCAP(ename) from emp; --每个单词首字母大写 以空格区分单词
 
--删除指定字符
select 'hello' from dual;--伪表
select TRIM('a' FROM 'aaahelloaaa') from dual;
select LTRIM('aaahelloaaa','a') from dual;
select RTRIM('aaahelloaaa','a') from dual;
--补位函数
select lpad('hello',10,'a') from dual;
select rpad('hello',10,'a') from dual;
--获取子字符串 substr
select substr('hello',3,2) from dual;
--查找子字符串位置
--instr(char1,char2[,n,m]) n 从哪一位开始查 m查找第几个
select instr('hello','ll') from dual;
select instr('hello hello','ll',4) from dual;
select instr('hello hello hello','ll',1,2) from dual;
--总结:
--1.concat(char1,char2) 拼接
--2.length(char1)       获取长度
--3.upper/lower/initcap(char) 小写、大写、首字母大写
--4.trim('a' from 'aaahelloaaa'); 删除两端指定字符
--  ltrim('aaahelloaaa','a')  --helloaaa
--  rtrim('aaahelloaaa','a')  --aaahello
--5.lpad/rpad('hello',n,'a'); 补位,n代表一共有多长
--6.substr(char,start,offset);从start,截取offset个字符
--7.instr(char1,char2[,n,m]); 从char1找char2 返回char2的位置
--              n 从哪开始查找
--              m 查找第几个

--练习题

--1.查询DEPT中所有的DNAME信息,要求最多显示7个字符

select substr(dname,1,7) from dept;

--2.查询DEPT中DNAME首字母是A的部门信息

select * from dept where substr(dname,1,1)='A';

--3.查询EMP表中员工的姓名和工作(JOB),要求显示结果:
--  Smith 的工作是 Clerk
select initcap(ename ||'的工作是 '||job) from emp;

--数字函数
--约数函数 ROUND(N,M)
--m>0,保留小数位后m位,四舍五入
--m=0,取整数
--m<0,从整数位第m位开始,四舍五入
select round(13.987,2) from dual; --13.99
select round(13.897,0) from dual; --14
select round(13.897,-1) from dual; --10

--截取函数 trunc
--函数与round方法使用基本一致,唯一区别是不四舍五入
select trunc(13.987,2) from dual; --13.98
select trunc(13.897,0) from dual; --13
select trunc(19.897,-1) from dual; --10
--取余函数  % mod
select mod(23,9) from dual;
--向上取整 ceil
select ceil(4.1) from dual;
--向下取整 floor
select floor(4.9) from dual;

--日期
--TO_DATE('2017-03-27 15:07:56','yyyy-mm-dd hh:mi:ss');
select TO_DATE('2017-03-27 15:07:56','yyyy-mm-dd hh24:mi:ss')
from dual;
--TO_CHAR(date,'yyyy-mm-dd');
select TO_CHAR(sysdate,'yy-mm*dd')from dual;
--MONTHS_BETWEEN(date1,date2) 两个日期相差多少月
select Floor(MONTHS_BETWEEN(sysdate,hiredate)) from emp;
查询所有员工入职多少月
select trunc(sysdate-hiredate,0)/365 from emp;
select hiredate from emp;
--ADD_MONTHS(date,n) 在原来日期基础上加n月
select hiredate,add_months(hiredate,-1) from emp;
--排NULL函数
--任何一个数字与NULL运算结果仍然为NULL
select ename,sal+comm from emp;
--任何字符串与NULL拼接,相当于什么都没有拼接
select ename||'的工资是:'||(sal+comm) from emp;
--nvl(n,m) 如果n是null,则由m代替
select nvl(comm,0) from emp;
select ename||'的工资是:'||(nvl(sal,0)+nvl(comm,0)) from emp;
--nvl2(n,exp1,exp2)
n==null 返回exp2
n!=null 返回exp1
select ename||nvl2(comm,''||comm,'没奖金') from emp;

--改密码语句:
--alter user system identified by a123456

--练习
--ENAME SALARY
--SMITH$$$$$$$$$800
--WARD$$$$$$$$$1600
--TURNER$$$$$$$$100

select rpad(ename,10,'$')||lpad(nvl(sal,0),10,'$') "ENAME SALARY"
from emp;

--查询emp入职信息
--ename,hiredate,workTime
--SIMTH,1980年2月2日,13456天

--在emp表中插入empno=1314,ename=siji,sal=999.99,
--comm=null的一条信息  
--查询姓名以S或s开头的员工的基本薪资和绩效和

--使用图形化界面,创建一张表,表名是fruits
--字段如下:
--f_id    水果编号 4位整数
--f_name  水果名称 50字符长
--f_price 水果价格 共8位保留2位小数
--s_id    供应商编号 4位整数

--插入10条你爱吃的水果信息,数据自己编
--水果编号不能重复,价格合理即可,供应商编号从1001-1003随机取
--插入数据后,添加一个AccessDate(到货日期) 字段,更新所有
--fruits信息,到货日期为昨天
 
 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值