好尴尬
这么久,都学到数据库了,可是之前的感觉还没巩固!!!
数据库基础来啦:
--建表
create table abc(stdname varchar2(20),stdnum number(10));
--查看表结构
desc abc;
--规定表字段的值不能为 null
alter table abc modify(stdnum number(10) not null);
--查看当前系统的所有表
select * from tab;
--插入数据
insert into abc(stdname,stdnum)) values ('张三',20125555);
--如果没有指定字段,则必须按照字段的顺序对所有字段赋值
insert into abc values ('张三',20134444);
--如果只对部分字段赋值,则字段名和值必须对应
insert into abc(stdnum) values (20143333);
--查询表
select * from abc;
--修改数据(把张三改成李四 如果后面不加 while 则表中所有的 stdname 都会改成李四)
update abc set stdname='李四' where stdname='张三';
--删除该表的全部数据
delete abc;
--删除指定的数据( 把名字为李四的人的全部数据删掉 )
delete abc where stdname='李四';
------------------------------------------------------------ 简单查询 --------------------------------------------------------------------
--使用scott用户
--查看emp表结构
desc emp;
--查询一张表的所有数据(如果不是查询所有字段 尽量不要使用 * 来查询)
select * from emp;
--查询指定表中的指定字段(只查询 empno 和 ename 这两行) 查询结果会按照指定的字段顺序来显示字段数据
select empno,ename from emp;
--非重复的查询某个字段(不显示重复的 可用来判断种类数) --- 去掉的是结果集当中的重复语句,不是把表中的删除了
select distinct job from emp;
--条件查询
--查询 smith 所在的部门,工作,薪水
select deptno,job,sal from emp where ename='SMITH'; --单引号里面的数据区分大小写
--查询部门编号等于 10 和 20 的所有员工
select * from emp where deptno=10 or deptno=20;
--查询薪水 >2000 并且 < 2500
select * from emp where sal>2000 and sal<2500;
--查询入职日期在 81 年 9 月 17 号之前的人
-- varchar 类型是可以比较大小的
select * from emp where hiredate<'17-11月-81';
--模糊匹配查询 ( % :表示通配任意个字符 , _ :表示通配一个字符 )
--查询名字中包含 K 的
select * from emp where ename like '%K%';
--查询名字中首字母是 S 的
select * from emp where ename like 'S%';
--查询名字第三个字母是 O 的(前两个打两个下划线 表示是任意字符)
select * from emp where ename like '__O%';
--查询没有上司的员工
select * from emp where mgr is null;
--使用别名查询(自己可更改组别的名字 as 可以省略)
select empno as 编号,ename as 名字 from emp where ename like 'S%';
--怎么查询 smith 的年薪?
select empno 编号,ename 姓名,sal*12 年薪 from emp where ename='SMITH';
--查询工资高于 500 或者是岗位为 MANAGER 的雇员,同时还要满足她们的姓名首字母为大写字母(记得括号的重要性)
select * from emp where (sal>500 or job='MANAGER') and ename like 'J%';
--查询所有的数据,要按照薪水从高到低的顺序显示
select * from emp order by sal desc ;
select * from emp order by sal desc ; --从低到高
--统计所有员工的编号,姓名,年薪(月薪 + 奖金)
--nvl(comm,0) 取得 comm 的值,如果为 null 则改为 0 参与计算(因为 null 一参与计算值也为 null 了)
select empno 编号,ename 姓名,(sal+nvl(comm,0))*12 年薪 from emp;
--根据别名排序
select empno as 编号,ename as 名字 from emp order by sal desc ;
--分组函数 max,min,avg( 平均数 ),sum,count( 计数 )
--查询最高月薪是多少
select max(sal) 月薪 from emp;
--查询出月薪最高或者最低的员工的编号 姓名 月薪
select empno,ename,sal from emp where sal=(select max(sal) 月薪 from emp);
select empno,ename,sal from emp where sal=(select min(sal) 月薪 from emp);
--同时找到月薪最低和最高的员工的编号 姓名 月薪
select empno,ename,sal from emp where sal=(select max(sal) 月薪 from emp) or sal=(select min(sal) 月薪 from emp);
--计算有多少员工
select count(empno) 员工数 from emp;
--计算总工资数
select sum(sal) 总工资 from emp;
--计算员工的平均月薪
select avg(sal) from emp;
select sum(sal)/count(empno) 平均工资 from emp;
------------------------------------------------------------ 分组查询 -----------------------------------------------------------------
--显示平均工资和最高工资
select avg(sal) 平均工资,max(sal) 最高工资 from emp;
--显示每个部门的平均工资和最高工资
--分组的条件一定要查询出来
select avg(sal) 平均工资 ,max (sal) 最高工资,deptno 部门 from emp group by deptno;
--显示每个部门各种岗位的平均工资和最低工资
select avg(sal) 平均工资 ,min (sal) 最低工资,deptno 部门,job 岗位 from emp group by deptno,job
--显示平均工资低于 2000 的部门和它的平均工资
select avg(sal) 平均工资,deptno 部门 from emp group by deptno having avg(sal)<2000;
--显示平均工资高于 2000 的部门和它的平均工资(总裁办 ( 部门编号10)不参与计算)
select avg(sal) 平均工资,deptno 部门 from emp where deptno!=10 group by deptno having avg(sal)>2000;
------------------------------------------------------------ 多表查询 -----------------------------------------------------------------
--查询部门表
select * from dept;
--显示雇员名,雇员工资及所在的部门的名字
select ename,sal,deptno from emp;
--笛卡尔积 ( 两个表的关联条件 )
select e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno; --联系到了两张表
--显示部门号为 10 的部门名,员工名和工资 emp-->e 别名
select e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno and e.deptno=10;
--显示各个员工的姓名,工资及工资的级别
select e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal;
--显示员工名,员工工资,所在部门的名字,并按部门排序
select e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno order by d.dname;
----------------------------------------------------------------------------------------------------------------------------------------
--查询 smith 的上司
select mgr from emp where ename='SMITH';
select ename from emp where empno=7902;
--嵌套查询
select ename from emp where empno=(select mgr from emp where ename='SMITH');
--自连接查询
select e1.ename,e1.mgr,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno and e1.ename='SMITH';
--如何让查询部门 10 的工作相同上午雇员名字、岗位、工资、部门号
--查询部门 10 中的所有工作类型
select job from emp where deptno=10;
--如果子查询返回多个结果 则用 in 代替 =
select ename,job,sal,deptno from emp where job in (select job from emp where deptno=10);
--如何显示工资比部门 30 的所有员工的工资高的员工的姓名、工资和部门号
--查询部门 30 中工资最高的
select max(sal) from emp where deptno=30;
--使用 max 函数
select ename,sal,deptno from emp where sal>(select max(sal) from emp where deptno=30);
--使用 >all
select ename,sal,deptno from emp where sal>all(select sal from emp where deptno=30); -- 跟所有人比 并且
--如何显示工资比部门 30 的任意一个员工的工资高的员工姓名,工资和部门号
--用 any
select ename,sal,deptno from emp where sal>any(select sal from emp where deptno=30); -- 跟任意一个人比 或者
--或者用 min 函数
select ename,sal,deptno from emp where sal>(select min(sal) from emp where deptno=30);
--如何查询部分数据
--伪列:ROWNUM (查表的时候不会出现 但是是默认存在的一列 可以人为特地查到 ( 表里没有的 只存在在结果集里面))
--查询结果只显示 10 条
select ROWNUM,ename from emp where ROWNUM<=10;
--查询第 5 到第 10 条数据(不能使用 where ROWNUM>5 and ROWNUM<11 ) (一定要用别名,要不然没结果 要从上一次的结果集中查询)
select ROWNUM,ename from ( select ROWNUM r,ename from emp where ROWNUM<=10) where r>4 and r<11;
--集合操作符 : union,union all,intersect,minus
--union 合并结果并且去掉重复行
select * from emp where job='SALESMAN' union select * from emp where sal>=1500;
--union all 合并结果 并且保留重复行
select * from emp where job='SALESMAN' union all select * from emp where sal>=1500;
--得到两个结果的交集
select * from emp where job='SALESMAN' intersect select * from emp where sal>=1500;
--得到在第一个结果中存在但是又不在第二个结果集中存在的
select * from emp where job='SALESMAN' minus select * from emp where sal>=1500;
---------------------------建表时设置某一段的唯一性
create table aabbcc(
userID number(10) primary key not null, --不可重复
..........
)
-----如果表中已经有了数据,就不能设置外键,
它对于我来说还是个神奇的东西,
怎么用java用它还不熟练,......
国庆七天兼职完了之后得了可怕的厌学症。。好想出去工作啊啊啊啊
会不会遭骂,,,
相关推荐
关于三级数据库考试所需要了解和知道的问题,能有助于你顺得通过考试,请多指教
数据库数据库系统概念实验知道加习题数据库系统概念实验知道加习题数据库系统概念实验知道加习题
在SQL sever系统中,系统运行时会用到的相关信息,如系统对象的组态设置等,都是以系统的形式存在,而存放这些系统信息的数据库成为系统数据库。成功安装SQL sever后,系统会自动建立master、model、msdb、tempdb及...
dreamweaver CC装数据库面板移除了,需要自己安装,个人找了十多天才从不知道到知道了呢。操。。耽误了学习。。。 dreamweaverCC 数据库 面板 com.adobe.serverbehaviordatabase_1.0.0_62afbb.zxp
当我们拿到一个陌生的SQL SERVER数据库时,我想知道某些内容在不在这个数据库里?在哪个表里?在哪个字段里?此时,就用这个工具吧,他能助你一臂之力,让你如虎天翼。
为此企业在选型的时候往往会在这三个数据库之间犹豫,不知道该选哪个数据库 好。笔者这里就以DB2 数据库与SQLServer数据库为例,谈谈他们的差异。为企业选择数据库提供一些参考。 一、适用平台上的差异。 到目前为止...
这么说有其道理,一般的用户都熟悉关系数据库,对关系数据库的特性也非常清楚,知道了哪些事情关系数据库干不了,就明确了实时数据库能干什么事情。但这样一来,将实时数据库与关系数据库对立了起来,似乎两者是非A...
数据库课题中的音乐播放器,基于SQLserver
知不知道怎么显示数据库中存放的图片呢??文档里有一个简单的例示,随便看看吧!!!使用C#语言描述的
走进数据库 数据库管理系统(DataBase Management System,DBMS) 纯粹的数据集合(数据库)很难被人们利用,管理这些数据库的软件就是数据库管理系统。它可以让用户方便的实现大量数据信息的存入,读取,删除,...
本来想用c3p0作为数据库管理,但是不知道哪里出了问题,一天都搞不定,所以自己写了一个简单的工具类,可实现简单的数据库增删改查通用方法(通用),如有建议请留言
数据库维护操作平台(User Access Admin)是一个独立的可以用于管理Access 97, 2000, 和2002...可以实时的把你的信息发送给正在使用此数据库的每天一位用户,以便于让他们很快知道要登出此数据库进行各项维护工作。
本书假设学生没有使用过任何特殊的DBMS产品,我们通过Microsoft Access、SQL Server Express版和MySQL来演示数据库概念,使学生可以将这些产品作为工具真正试验书中的内容,而这些概念都是以DBMS无关的方式出现。...
大数据时代-你身边的大数据你知道几个?全文共2页,当前为第1页。大数据时代-你身边的大数据你知道几个?全文共2页,当前为第1页。与你生活密切相关的五个大数据场景 大数据时代-你身边的大数据你知道几个?全文共2...
通过oracle数据库连接其他oracle数据库信息,并通过连接信息创建本地视图,好处在于能及时的获取到对方数据库的最新信息,同时不占用本地数据库资源
在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。有时,正是MySQL管理员造成破坏。管理员已经知道表以破坏,用诸如...
很多商家都知道广告费有一半是浪费的,问题是不知道浪费的是哪一半。 如果建立健全一个有效的客户数据库,就能大大降低广告费用。 并且,能够提高工作效率,帮助企业创造利润。 那么如何搜集和积累大量客户信息,...
在市面上,本人花了很多精力收集及整理出来的,为了就是不让大家再浪费积分下载半成品,或者功能欠缺点的数据库,下载此数据库,你所要的,所需要的全部都有了。整个数据库包括图片六百多M,大家看容量应该就知道全...
我们知道,对于共享资源,有一个很闻名的设计模式:资源池(Resource Pool)。 该模式正是为了解决资源的频繁分配?释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。 数据库连接池的基本思想就是为...
数据库、网络、搜索引擎,这三者之间存在怎样的关系?搜索引擎又是如何获取到网络上的信息的?你不想知道吗?感兴趣的可以看看……