下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MysqlOracle(甲骨文)大型数据库MySql中小型数据库DB2SqlServerMysql的发展:瑞典的Mysql AB公司2008 年 Sun 公司(JAVA)2009年Oracle 收购sun公司IBM 69 亿美元 sun Eclipse(日蚀)Oracle 74 亿美元 sunMysql的简单使用:1. 登陆mysql数据库win+r ->cmdmysql -uroot -p1234修改密码:mysql> set password for rootlocalhost = password('1234');mysql)此处可能存在异常情况原因:a、未配
2、置环境变量b、Mysql服务未开启(net start2. 对库的操作a. 查看所有的库show databases;系统自带库:in formati on _schemamysql testb. 创建库create database day01;(不指定编码,跟随数据库系统编码)create database db1default character set gbk;(指定编码 )查看创建库的语句:show create database 库名.修改库的编码:alter database day01default character set utf8;c. 删除库drop database
3、库名.drop database dayOI;系统自带的三个库不能删除d. 使用库use db1;3. 对表的操作表:二维关系表有行有列的关系表.记录:表中的一行数据.字段:表中的一列.常用的字段类型:字符串类型:varchar( 长度)、char数值类型:int( 整数)float double( 小数) 日期类型:datea. 创建表员工表:员工号性别年龄职位薪水入职日期create table emp(emp no varchar(4),n ame varchar(30),sex varchar(5),age in t(3),job varchar(30),salary in t(5),
4、 hiredate date);b. 查看所有的表show tables;c. 查看建表语句show create table 表名.d. 查看表结构desc表名.e. 往表中插入数据e1.给表中所有的字段插入数据in sert into emp(emp no,n ame,sex,age,job,salary,hiredate)values('1001','zha ngsa n',m',22,'developer',10000,'2015-12-21');简写形式:insert into emp values ('
5、1002','lisi','m',23,'test',8000,'2015-10-10');e2.给表中部分字段插入数据insert into emp(emp no,n ame,sex,age) values('1003','cuihua','w',18);解决插入中文问题:(eclipse中的设置)Conn ection URL:jdbc:mysql:/localhost:3306/test?use Uni code=true&characterE ncod in
6、g=gbk插入中文:in sert into emp values('1005',' 莫小贝','女',12,' 武林盟主',20000,'2015-12-12' );f. 删除数据delete from emp ;->删除表中所有数据delete from emp where emp no =1004;MyEclipse 配置 Mysql 连接:1. 切换到数据库界面2. 在DBBroswer中右键选择 new3. 配置连接:Driver Template: MySQL Conn ector/JDriver
7、 n ame:随便起名字Co nn ection URL: jdbc:mysql:/localhost:3306/test本机:localhost192.1684223User n ame:rootpassword:1234Driver JARs: mysql-connector-java-5.17-bin .jarMysql常见的错误1. Ca n't create database 'xxx' database exists不能创建xxx库,因为已经存在2. Ca n't drop database 'xxx' database does n
8、't exist不能删除xxx库,因为已经不存在-创建库create database search default character set gbk ;- 使用库use search;-创建表- 员工信息表create table emp(emp no in t(4),-员工编号en ame varchar(30),-员工job varchar(30),-职位salary int ,-工资bonus int,-奖金age in t(3),-年龄sex varchar(1),-性别hiredate date,-入职日期man ager in t(4),-领导编号dept no int
9、 -部门编号);-部门表:create table dept( dept no int,-部门编号dn ame varchar(50),- 部门名称 loc varchar(80)- 部门位置);往emp表中插入数据null空:没有不存在in sert into emp(emp no,en ame,job,salary,b onu s,age,sex,hiredate,ma nager,dept no) values(1001,' 三丰','老板',20000,100,30,'m','2009-02-02',null,10);in
10、 sertintoempvalues(1002,'无忌','程序猿',12000,200,20,'m','2010-03-02',1001,10);in sertintoempvalues(1003,'小龙女','程序猿',10000,300,18,'f,'2012-12-02',1001,10);in sertintoempvalues(1004,'过1 15程序猿',10000,200,22,'m','2012-12-22'
11、,1003,10);in sertintoempvalues(1005,'黄蓉','攻城师',15000,100,25,'f,'2012-12-28',1001,20);in sertintoempvalues(1006,'郭靖','攻城师',13000,100,28,'m','2013-12-02',1005,20);insert into emp values(1007,'莫愁','秘书',8000,50,22,'f,'20
12、13-03-02',1001,30);in sertintoemp values(1008,'韦 小 宝 ','',8500, null,29,'m','2013-04-02',1001,30);in sertintoempvalues(1009,'',6000,100,26,'m','2014-12-12',1001,30);in sertintoempvalues(1010,'',5000,100,20,'m','2015-03-0
13、2',1001, null);-给dept表插入数据研发部','');运维部','');实施部','');in sert into dept values(10,' in sert into dept values(20,' in sert into dept values(30,' -查询 use search ;-1.查询emp表中的所有数据select * from emp ;-* 通配符 通配了 emp表中的所有列。select emp no,en ame,job,salary,b
14、onu s,age, hiredate,sex ,ma nager,dept no from emp ;-select( 选择,筛选.)from( 从 地方) - 执行顺序:from ->select -2.查询emp表中员工名字以及员工的薪水select en ame,salary from emp ;-查询部分字段:select 字段名1,字段名2. from 表;-3.查询薪水大于10000的员工.- 查什么员工->ename ->empno ->salary-查询条件是什么salary >10000 select emp no,en ame,salaryf
15、rom emp where salary>10000;-select from where- 执行顺序:from -> where ->select-4.查询薪水大于等于 10000并且小于等于18000的员工-查什么 empno ename salary-查询的条件是什么10000=<salary<=18000( 数学中的写法)-salary >=10000 and && salary <=18000select emp no,en ame,salary from empwhere salary >=10000 and sala
16、ry <=18000;-between and: 在. 之间.select emp no ,en ame, salary from empwhere salary between 10000 and 18000;select * from emp ;-5.查询薪水是10000或者12000的员工.select emp no,en ame,salary from empwhere salary =10000 or salary =12000;-i n(10000,12000);select emp no ,en ame,salary from empwhere salary in(1000
17、0,12000);-6.查询职位是程序猿或者是攻城师并且薪水在10000到-20000 之间,并且性别是男的员工- 查什么 empno ename job salary sex -查询的条件是什么-a.职位是程序猿或者是攻城师job in(' 程序猿','攻城师')-b. 薪水在 10000 到 20000 之间 salary between 10000 and 20000-c. 性别是男 sex='m' -a and b and c select emp no ,en ame,job, salary ,sex from emp where jo
18、b in(' 程序猿','攻城师')and salary between 10000 and 20000 and sex = 'm'-错误演示select emp no ,en ame,job, salary ,sex from emp where job='程序猿'or job=' 攻城师'and salary between 10000 and 20000 and sex = 'm'select emp no ,en ame,job, salary ,sex from emp where job
19、='攻城师'or job=' 程序猿'and salary between 10000 and 20000 and sex = 'm'-7.查询奖金为n ull的员工select en ame ,bonus from emp where bonus = n ull; select * from emp ;-null:空没有不存在-和null做比较 不能使用= > <. 要使用isselect en ame,b onus from empwhere bonus is n ull ;-8.查询奖金不是n ull的员工select en a
20、me ,bonus from empwhere bonus is not null ;-9.查询所有员工的年薪12*(salary+bo nus)select en ame, 12*(salary+b onus) from emp;- 与null做运算,结果都为 null-空值处理函数:ifnull()-ifnull(bo nus,0):- 如果bonus为null ,则处理成0- 如果bonus不为null,则不处理.按照bonus实际的值运算.select en ame,12*(salary+ifnull(b onu s,0)from emp ;-函数:单行函数组函数(聚合函数)-单行函数
21、:单行函数会对表中的每一条记录进行操作-并且每一条记录都会产生一个结果.-n ow():查询当前时间select no w() from emp ;-10. 查询 2012 年入职的员工 2012-01-012012-12-31select en ame ,hiredate from empwhere hiredate between '2012-01-01'and '2012-12-31:-year(date):提取日期中的年份-year(2012-12-12)->2012select en ame,hiredate from empwhere year(hir
22、edate) = 2012;-11.查询员工的工作年限select en ame, year( no w()-year(hiredate) from emp ;-12.查询实现如下结果:我是xxx,我的职位是xxx-concat('我是',ename,',我的职位是job ); 连接函数.将给定的字段连接成字符串。select ' 我是'from emp ;select concat(' 我是',ename,',我的职位是 job) description from emp ;-别名:就是给查询的结果中的列取另外一个名字-sele
23、ct en ame as n ame from emp ; - n ame可以省略的-select en ame n ame from emp ; - as-13.通过查询实现:10部门的薪水涨20%20部门的薪水涨10%-case开始分支-whe n 判断分支条件then执行分支结果30部门的薪水保持不变其他部门的薪水涨 500-多路分支case whe n the n else end-whe n . the n.-else上述情况都不满足,执行else-end 结束分支select emp no ,dept no salary,casewhe n dept no =10 the n sa
24、lary*1.2whe n dept no =20 the n salary*1.1 whe n dept no =30 the n salary else salary+500end n ew_salaryfrom emp ;-排序-order by排序字段 desc(降序)asc( 升序默认的排序)-14.查询所有的员工,按照薪水降序排序select * from emp order by salary desc ;-15.查询所有的员工,按照薪水升序排序select * from emp order by salary asc;-16.查询所有的员工,按照年薪降序排序select en
25、ame, 12*(salary+ifnull(b onu s,0) year_sal from emp order by year_sal desc ;-select from where order by- 执行顺序:from->where->select->order by-17.-like查询员工名字中带有”的员工%:任意个任意字符:一个任意字符select en ame from empwhere en ame like '%'-18.查询员工名字中第二个字为无的员工select en ame from empwhere en ame like
26、9;_ 无 %'-19.查询职位中带有'猿'字 并且薪水在10000到20000之间- 并且性别是男的员工 按照入职日期降序排序- 查什么 en ame job salary sex hiredate-查询条件是什么-1.职位中带有'猿'字job like '% 猿%'-2. 薪水在 10000 到 20000 之间 salary between 10000 and 20000-3.性别是男sex ='m'-1 and 2 and 3select en ame,job,salary ,sex, hiredatefrom e
27、mp where job like '% 猿 %' andsalary between 10000 and 20000 andsex = 'm' order by hiredate desc ;-20.统计表中总共有多少条记录select * from emp ;-coun t():统计函数select coun t(emp no) from emp ; - 10select coun t(e name) from emp ; - 10select coun t(*) from emp ;- 10select coun t(b onus) from emp ;
28、- 9-null值不会被统计。-组函数(聚合函数):-组函数是对表中的一列数据进行计算并返回单一的结果-21.查询所有员工的薪水和.-sum()select sum(salary) from emp ;-22.查询所有员工的奖金和.select sum(b onus) from emp ;select sum(ifnull(b onu s,0) from emp ;-23.查询所有员工的平均薪水-avg()select avg(salary) from emp ;-24.查询所有员工的平均奖金.select avg(b onus) from emp ;select sum(b onu s)/c
29、o un t(b onus) from emp ;select avg(ifnull(b onu s,0) from emp ;select sum(b onu s)/co un t(ifnull(b onu s,0) from emp ;-25.查询员工薪水的最大值-max()select max(salary) from emp ;-26.查询员工薪水的最小值-min()select mi n(salary) from emp ;-27.员工奖金的最大值select max(b onus) from emp ;-28.员工奖金的最小值select min(bonus) from empwh
30、ere bonus is not n ull ;-29.查询10部门的平均薪水select avg(salary) from emp where dept no = 10;-30.职位是程序猿的薪水和.select sum(salary) from emp where job ='程序猿'-31.查询每个职位的薪水总和.select job , sum(salary) from emp group by job ;-分组(group by分组字段)-分组后select后面只能跟组标识,组函数,-组标识或者组函数的表达式-不能直接跟单行字段或者单行函数 -32.查询每个部门的平均
31、薪水select dept no ,avg(salary) from emp group by dept no;-33.查询部门人数大于等于3人的部门select dept no ,co un t(emp no) from emp group by dept no havi ng coun t(emp no) >=3;-分组后,条件的过滤不能使用where,要使用-分组前用where 分组后用having-34.查询职位不是程序猿的员工中!=-部门平均薪水大于或者等于10000的部门-按照平均薪水降序排序select dept no ,avg(salary) from empwhere
32、job !=' 程序猿'group by dept no havi ng avg(salary) >=10000 order by avg(salary) desc ;-select from where group by hav ing order by-执行顺序:from->where->group by->-havi ng->select->order by-35.查询薪水最高的员工-1.查询最高薪水select max(salary) from emp ;-2.查询最高薪水对应的员工-select en ame from emp wh
33、ere salary =select en ame from emp where salary =hav ing最高薪水.(select max(salary) from emp );-子查询:当一个查询的结果是另一个查询的条件时,-称之为子查询-非关联子查询关联子查询-非关联子查询:先执行子查询,子查询的结果做为主查询的-条件,再执行主查询子查询只执行一次-36. 查询最晚入职的员工select en ame from emp where hiredate =(select max(hiredate) from emp );-37.哪些员工的薪水比莫愁的薪水高.select en ame f
34、rom emp where salary >(select salary from emp where ename='莫愁');-38.哪些部门的平均薪水比30部门的平均薪水高select dept no ,avg(salary) from emp group by dept no havi ng avg(salary)>(select avg(salary) from emp where dept no =30);不能是小龙女本人小龙女')小龙女')-39.哪些员工和小龙女是同薪水,同职位,select en ame from emp where
35、salary = (select salary from emp where en ame=' and job =(select job from emp where en ame=' and ename!=' 小龙女'-多列非关联子查询-关联子查询-40.哪些员工的薪水等于他本部门的平均薪水 select en ame from emp where(deptno salary) in(select dept no ,avg(salary) from empgroup by dept no);in sert into emp(emp no,en ame,job,
36、salary,b onu s,age ,sex,hiredate,ma nager,dept no)values(1011,' 二丰','老板娘',20000,100,30,'m', '2009-02-02', null,40);insert into dept values(40,'财务部',");select * from emp ;select * from dept;-子查询:一个查询的结果作为另一个查询的条件-非关联子查询-先执行子查询,子查询的返回结果做为主查询的条件.-再执行主查询,子查询只
37、执行一次-关联子查询-采用循环的方式,查询先重外部查询开始,获取一条记录后,-将其传入部查询.部查询根据外部查询传入的记录,-可以查询结果,然后将结果传回外部查询中.外部查询根据-部查询的结果判断此条记录是否满足条件,若满足条件-则放入结果集,将来返回,否则放弃此条记录-1.查询emp表中工资最高的人.select * from emp ;-a.查询最高的工资select max(salary) from emp ;-b.查最高工资的人select en ame from emp where salary =( select max(salary) from emp);-2.查询emp表中比莫
38、愁的薪水高的人.select en ame from emp where salary >( select salary from emp where ename=' 莫愁');-3.查询员工的薪水等于本部门的平均薪水.-a.查询每个部门的平均工资select dept no ,avg(salary) from empgroup by dept no ;-b.查询个人的工资是否等于本部门平均工资select ename from emp where (deptno salary) in(select dept no ,avg(salary) from empgroup b
39、y dept no);-4.哪些员工的工资比他所在部门的平均工资高select main _select.e name,ma in _select.salary from emp main_select where salary > (select avg(salary) from emp sub_selectwhere sub_select.dept no =main _select.dept no);-连接查询-连接夕卜连接(左外连|右外连|全外连) 交叉连接-连接:取交集-外连接:主(驱动)从(匹配)表- 连接:A inner join B on连接条件inner可以省略-5.查询每个人的以及部门名称.select * from emp ;select * from dept ;select en ame,d namefrom emp e inner join dept d on e.dept no = d.dept no;in sertinto emp values(1012,' 莫 小 贝 ',' 武 林 盟',25000,500,12,'f,'2010-10-10', null,50);delete from emp where emp no =101
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大连市沙河口区中小学编制教师招聘笔试模拟试题及答案详解
- 2026年鹤壁市山城区中小学编制教师招聘考试参考试题及答案详解
- 2026年邯郸市邯山区中小学编制教师招聘笔试参考题库及答案详解
- 2026年黑龙江省中小学编制教师招聘笔试备考试题及答案详解
- 2026年天津市津南区中小学编制教师招聘笔试参考试题及答案详解
- 2026年攀枝花市东区事业编单位人员招聘笔试备考试题及答案详解
- 2026年渝中区北碚区中小学编制教师招聘考试模拟试题及答案详解
- 2026年长沙市开福区中小学编制教师招聘笔试备考题库及答案详解
- 2026年广西壮族自治区贵港市中小学编制教师招聘笔试模拟试题及答案详解
- 2026年通辽市科尔沁区中小学编制教师招聘考试参考题库及答案详解
- 防爆设计施工方案(3篇)
- 珠宝店长绩效考核制度
- 运输公司安全生产监督检查制度
- 2026年左心耳封堵术知情同意书
- 警用装备培训制度
- 英语培训机构 试讲课件
- 2026年网络安全法培训课件
- 2026中国储备粮管理集团有限公司山东分公司招聘备考题库(50人)及答案详解(基础+提升)
- DB11∕T 334.4-2020 公共场所中文标识英文译写规范 第4部分:体育
- 治疗失眠症的认知行为疗法训练
- DB63∕T 2074-2022 虹鳟网箱养殖技术规范
评论
0/150
提交评论