Mysql数据库增删改查复习课程.docx

上传人:b****2 文档编号:2052750 上传时间:2023-05-02 格式:DOCX 页数:22 大小:22.06KB
下载 相关 举报
Mysql数据库增删改查复习课程.docx_第1页
第1页 / 共22页
Mysql数据库增删改查复习课程.docx_第2页
第2页 / 共22页
Mysql数据库增删改查复习课程.docx_第3页
第3页 / 共22页
Mysql数据库增删改查复习课程.docx_第4页
第4页 / 共22页
Mysql数据库增删改查复习课程.docx_第5页
第5页 / 共22页
Mysql数据库增删改查复习课程.docx_第6页
第6页 / 共22页
Mysql数据库增删改查复习课程.docx_第7页
第7页 / 共22页
Mysql数据库增删改查复习课程.docx_第8页
第8页 / 共22页
Mysql数据库增删改查复习课程.docx_第9页
第9页 / 共22页
Mysql数据库增删改查复习课程.docx_第10页
第10页 / 共22页
Mysql数据库增删改查复习课程.docx_第11页
第11页 / 共22页
Mysql数据库增删改查复习课程.docx_第12页
第12页 / 共22页
Mysql数据库增删改查复习课程.docx_第13页
第13页 / 共22页
Mysql数据库增删改查复习课程.docx_第14页
第14页 / 共22页
Mysql数据库增删改查复习课程.docx_第15页
第15页 / 共22页
Mysql数据库增删改查复习课程.docx_第16页
第16页 / 共22页
Mysql数据库增删改查复习课程.docx_第17页
第17页 / 共22页
Mysql数据库增删改查复习课程.docx_第18页
第18页 / 共22页
Mysql数据库增删改查复习课程.docx_第19页
第19页 / 共22页
Mysql数据库增删改查复习课程.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Mysql数据库增删改查复习课程.docx

《Mysql数据库增删改查复习课程.docx》由会员分享,可在线阅读,更多相关《Mysql数据库增删改查复习课程.docx(22页珍藏版)》请在冰点文库上搜索。

Mysql数据库增删改查复习课程.docx

Mysql数据库增删改查复习课程

Mysql

Oracle(甲骨文)大型数据库

MySql中小型数据库

DB2

SqlServer

.....

Mysql的发展:

瑞典的MysqlAB公司

2008年Sun公司(JAVA)

2009年Oracle收购sun公司

IBM69亿美元sunEclipse(日蚀)

Oracle74亿美元sun

Mysql的简单使用:

1.登陆mysql数据库

win+r--->cmd

mysql-uroot-p1234

修改密码:

mysql>setpasswordforroot@localhost=password('1234');

此处可能存在异常情况原因:

a、未配置环境变量b、Mysql服务未开启(netstartmysql)

2.对库的操作

a.查看所有的库

showdatabases;

系统自带库:

information_schemamysqltest

b.创建库

createdatabaseday01;(不指定编码,跟随数据库系统编码)

createdatabasedb1

defaultcharactersetgbk;(指定编码)

查看创建库的语句:

showcreatedatabase库名.

修改库的编码:

alterdatabaseday01

defaultcharactersetutf8;

c.删除库

dropdatabase库名.

dropdatabaseday01;

注意:

系统自带的三个库不能删除.

d.使用库

usedb1;

3.对表的操作

表:

二维关系表有行有列的关系表.

记录:

表中的一行数据.

字段:

表中的一列.

常用的字段类型:

字符串类型:

varchar(长度)、char

数值类型:

int(整数)floatdouble(小数)

日期类型:

date

a.创建表

员工表:

员工号姓名性别年龄职位薪水入职日期

createtableemp(

empnovarchar(4),

namevarchar(30),

sexvarchar(5),

ageint(3),

jobvarchar(30),

salaryint(5),

hiredatedate

);

b.查看所有的表

showtables;

c.查看建表语句

showcreatetable表名.

d.查看表结构

desc表名.

e.往表中插入数据

e1.给表中所有的字段插入数据

insertintoemp

(empno,name,sex,age,job,salary,hiredate)

values

('1001','zhangsan','m',22,'developer',10000,'2015-12-21');

简写形式:

insertintoempvalues

('1002','lisi','m',23,'test',8000,'2015-10-10');

e2.给表中部分字段插入数据

insertintoemp(empno,name,sex,age)values

('1003','cuihua','w',18);

解决插入中文问题:

(eclipse中的设置)

ConnectionURL:

jdbc:

mysql:

//localhost:

3306/test

?

useUnicode=true&characterEncoding=gbk

插入中文:

insertintoempvalues(

'1005','莫小贝','女',12,'武林盟主',20000,'2015-12-12'

);

f.删除数据

deletefromemp;-->删除表中所有数据

deletefromempwhereempno=1004;

MyEclipse配置Mysql连接:

1.切换到数据库界面.

2.在DBBroswer中右键选择new

3.配置连接:

DriverTemplate:

MySQLConnector/J

Drivername:

随便起名字

ConnectionURL:

jdbc:

mysql:

//localhost:

3306/test

本机:

localhost

127.0.0.l

192.168.4.223

Username:

root

password:

1234

DriverJARs:

mysql-connector-java-5.17-bin.jar

Mysql常见的错误

1.Can'tcreatedatabase'xxx';databaseexists

不能创建xxx库,因为已经存在

2.Can'tdropdatabase'xxx';databasedoesn'texist

不能删除xxx库,因为已经不存在

--创建库

createdatabasesearchdefaultcharactersetgbk;

--使用库

usesearch;

--创建表

--员工信息表

createtableemp(

empnoint(4),--员工编号

enamevarchar(30),--员工姓名

jobvarchar(30),--职位

salaryint,--工资

bonusint,--奖金

ageint(3),--年龄

sexvarchar

(1),--性别

hiredatedate,--入职日期

managerint(4),--领导编号

deptnoint--部门编号

);

--部门表:

createtabledept(

deptnoint,--部门编号

dnamevarchar(50),--部门名称

locvarchar(80)--部门位置

);

--往emp表中插入数据null空:

没有不存在

insertintoemp(empno,ename,job,salary,bonus,age,sex,hiredate,manager,deptno)

values(1001,'张三丰','老板',20000,100,30,'m','2009-02-02',null,10);

insertintoempvalues(1002,'张无忌','程序猿',12000,200,20,'m','2010-03-02',1001,10);

insertintoempvalues(1003,'小龙女','程序猿',10000,300,18,'f','2012-12-02',1001,10);

insertintoempvalues(1004,'杨过','程序猿',10000,200,22,'m','2012-12-22',1003,10);

insertintoempvalues(1005,'黄蓉','攻城师',15000,100,25,'f','2012-12-28',1001,20);

insertintoempvalues(1006,'郭靖','攻城师',13000,100,28,'m','2013-12-02',1005,20);

insertintoempvalues(1007,'李莫愁','秘书',8000,50,22,'f','2013-03-02',1001,30);

insertintoempvalues(1008,'韦小宝','实施',8500,null,29,'m','2013-04-02',1001,30);

insertintoempvalues(1009,'陆无双','实施',6000,100,26,'m','2014-12-12',1001,30);

insertintoempvalues(1010,'黄飞鸿','打手',5000,100,20,'m','2015-03-02',1001,null);

--给dept表插入数据

insertintodeptvalues(10,'研发部','北京');

insertintodeptvalues(20,'运维部','上海');

insertintodeptvalues(30,'实施部','深圳');

--查询

usesearch;

--1.查询emp表中的所有数据

select*fromemp;

--*通配符通配了emp表中的所有列。

selectempno,ename,job,salary,bonus,age,

hiredate,sex,manager,deptnofromemp;

--select(选择,筛选..)from(从...地方)

--执行顺序:

from-->select

--2.查询emp表中员工名字以及员工的薪水

selectename,salaryfromemp;

--查询部分字段:

select字段名1,字段名2....from表;

--3.查询薪水大于10000的员工.

--查什么员工--->ename--->empno--->salary

--查询条件是什么salary>10000

selectempno,ename,salary

fromempwheresalary>10000;

--selectfromwhere

--执行顺序:

from-->where-->select

--4.查询薪水大于等于10000并且小于等于18000的员工

--查什么empnoenamesalary

--查询的条件是什么10000=

--salary>=10000and&&salary<=18000

selectempno,ename,salaryfromemp

wheresalary>=10000andsalary<=18000;

--betweenand:

在...之间.

selectempno,ename,salaryfromemp

wheresalarybetween10000and18000;

select*fromemp;

--5.查询薪水是10000或者12000的员工.

selectempno,ename,salaryfromemp

wheresalary=10000orsalary=12000;

--in(10000,12000);

selectempno,ename,salaryfromemp

wheresalaryin(10000,12000);

--6.查询职位是程序猿或者是攻城师并且薪水在10000到

--20000之间,并且性别是男的员工

--查什么empnoenamejobsalarysex

--查询的条件是什么

--a.职位是程序猿或者是攻城师jobin('程序猿','攻城师')

--b.薪水在10000到20000之间salarybetween10000and20000

--c.性别是男sex='m'

--aandbandc

selectempno,ename,job,salary,sexfromemp

wherejobin('程序猿','攻城师')and

salarybetween10000and20000and

sex='m';

--错误演示

selectempno,ename,job,salary,sexfromemp

wherejob='程序猿'orjob='攻城师'and

salarybetween10000and20000and

sex='m';

selectempno,ename,job,salary,sexfromemp

wherejob='攻城师'orjob='程序猿'and

salarybetween10000and20000and

sex='m';

--7.查询奖金为null的员工

selectename,bonusfromempwherebonus=null;

select*fromemp;

--null:

空没有不存在

--和null做比较不能使用=><..要使用is

selectename,bonusfromemp

wherebonusisnull;

--8.查询奖金不是null的员工

selectename,bonusfromemp

wherebonusisnotnull;

--9.查询所有员工的年薪12*(salary+bonus)

selectename,12*(salary+bonus)fromemp;

--与null做运算,结果都为null

--空值处理函数:

ifnull()

--ifnull(bonus,0):

--如果bonus为null,则处理成0

--如果bonus不为null,则不处理.按照bonus实际的值运算.

selectename,12*(salary+ifnull(bonus,0))

fromemp;

--函数:

单行函数组函数(聚合函数)

--单行函数:

单行函数会对表中的每一条记录进行操作

--并且每一条记录都会产生一个结果.

--now():

查询当前时间

selectnow()fromemp;

--10.查询2012年入职的员工2012-01-012012-12-31

selectename,hiredatefromemp

wherehiredatebetween'2012-01-01'

and'2012-12-31';

--year(date):

提取日期中的年份

--year(2012-12-12)--->2012

selectename,hiredatefromemp

whereyear(hiredate)=2012;

--11.查询员工的工作年限

selectename,year(now())-year(hiredate)fromemp;

--12.查询实现如下结果:

我是xxx,我的职位是xxx

--concat('我是',ename,',我的职位是',job);连接函数.将给定的字段连接成字符串。

select'我是'fromemp;

selectconcat('我是',ename,',我的职位是',job)descriptionfromemp;

--别名:

就是给查询的结果中的列取另外一个名字

--selectenameasnamefromemp;--name

--selectenamenamefromemp;--as可以省略的

--13.通过查询实现:

10部门的薪水涨20%

--20部门的薪水涨10%

--30部门的薪水保持不变

--其他部门的薪水涨500

--多路分支casewhenthenelseend

--case开始分支

--when判断分支条件then执行分支结果

--when..then....

--else上述情况都不满足,执行else

--end结束分支

selectempno,deptno,salary,

case

whendeptno=10thensalary*1.2

whendeptno=20thensalary*1.1

whendeptno=30thensalary

elsesalary+500

endnew_salary

fromemp;

--排序

--orderby排序字段desc(降序)asc(升序默认的排序)

--14.查询所有的员工,按照薪水降序排序

select*fromemporderbysalarydesc;

--15.查询所有的员工,按照薪水升序排序

select*fromemporderbysalaryasc;

--16.查询所有的员工,按照年薪降序排序

selectename,12*(salary+ifnull(bonus,0))year_sal

fromemporderbyyear_saldesc;

--selectfromwhereorderby

--执行顺序:

from-->where-->select-->orderby

--17.查询员工名字中带有'张'的员工

--like%:

任意个任意字符

--_:

一个任意字符

selectenamefromemp

whereenamelike'%张%';

--18.查询员工名字中第二个字为'无'的员工

selectenamefromemp

whereenamelike'_无%';

--19.查询职位中带有'猿'字并且薪水在10000到20000之间

--并且性别是男的员工按照入职日期降序排序.

--查什么enamejobsalarysexhiredate

--查询条件是什么

--1.职位中带有'猿'字joblike'%猿%'

--2.薪水在10000到20000之间salarybetween10000and20000

--3.性别是男sex='m'

--1and2and3

selectename,job,salary,sex,hiredate

fromempwherejoblike'%猿%'and

salarybetween10000and20000and

sex='m'orderbyhiredatedesc;

--20.统计表中总共有多少条记录

select*fromemp;

--count():

统计函数

selectcount(empno)fromemp;--10

selectcount(ename)fromemp;--10

selectcount(*)fromemp;--10

selectcount(bonus)fromemp;--9

--null值不会被统计。

--组函数(聚合函数):

--组函数是对表中的一列数据进行计算并返回单一的结果.

--21.查询所有员工的薪水和.

--sum()

selectsum(salary)fromemp;

--22.查询所有员工的奖金和.

selectsum(bonus)fromemp;

selectsum(ifnull(bonus,0))fromemp;

--23.查询所有员工的平均薪水

--avg()

selectavg(salary)fromemp;

--24.查询所有员工的平均奖金.

selectavg(bonus)fromemp;

selectsum(bonus)/count(bonus)fromemp;

selectavg(ifnull(bonus,0))fromemp;

selectsum(bonus)/count(ifnull(bonus,0))fromemp;

--25.查询员工薪水的最大值

--max()

selectmax(salary)fromemp;

--26.查询员工薪水的最小值

--min()

selectmin(salary)fromemp;

--27.员工奖金的最大值

selectmax(bonus)fromemp;

--28.员工奖金的最小值

selectmin(bonus)fromemp

wherebonusisnotnull;

--29.查询10部门的平均薪水

selectavg(salary)fromempwheredeptno=10;

--30.职位是程序猿的薪水和.

selectsum(salary)fromempwherejob='程序猿';

--31.查询每个职位的薪水总和.

selectjob,sum(salary)fromemp

groupbyjob;

--分组(groupby分组字段)

--分组后,select后面只能跟组标识,组函数,

--组标识或者组函数的表达式.

--不能直接跟单行字段或者单行函数.

--32.查询每个部门的平均薪水

selectdeptno,avg(salary)fromemp

groupbydeptno;

--33.查询部门人数大于等于3人的部门.

selectdeptno,count(empno)fromemp

groupbydeptnohavingcount(empno)>=3;

--分组后,条件的过滤不能使用where,要使用having

--分组前用where分组后用having

--34.查询职位不是程序猿的员工中!

=

--部门平均薪水大于或者等于10000的部门

--按照平均薪水降序排序

selectdeptno,avg(salary)fromemp

wherejob!

='程序猿'

groupbydeptnohavingavg(salary)>=10000

order

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2