Mysql數(shù)據(jù)庫_增刪改查_第1頁
Mysql數(shù)據(jù)庫_增刪改查_第2頁
Mysql數(shù)據(jù)庫_增刪改查_第3頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、MysqlOracle(甲骨文)大型數(shù)據(jù)庫MySql中小型數(shù)據(jù)庫DB2SqlServerMysql的發(fā)展:瑞典的Mysql AB公司2008 年 Sun 公司(JAVA)2009年Oracle 收購sun公司IBM 69 億美元 sun Eclipse(日蝕)Oracle 74 億美元 sunMysql的簡單使用:1. 登陸mysql數(shù)據(jù)庫win+r ->cmdmysql -uroot -p1234修改密碼:mysql> set password for rootlocalhost = password('1234');mysql)此處可能存在異常情況原因:a、未配

2、置環(huán)境變量b、Mysql服務(wù)未開啟(net start2. 對庫的操作a. 查看所有的庫show databases;系統(tǒng)自帶庫:in formati on _schemamysql testb. 創(chuàng)建庫create database day01;(不指定編碼,跟隨數(shù)據(jù)庫系統(tǒng)編碼)create database db1default character set gbk;(指定編碼 )查看創(chuàng)建庫的語句:show create database 庫名.修改庫的編碼:alter database day01default character set utf8;c. 刪除庫drop database

3、庫名.drop database dayOI;系統(tǒng)自帶的三個庫不能刪除d. 使用庫use db1;3. 對表的操作表:二維關(guān)系表有行有列的關(guān)系表.記錄:表中的一行數(shù)據(jù).字段:表中的一列.常用的字段類型:字符串類型:varchar( 長度)、char數(shù)值類型:int( 整數(shù))float double( 小數(shù)) 日期類型:datea. 創(chuàng)建表員工表:員工號性別年齡職位薪水入職日期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. 查看表結(jié)構(gòu)desc表名.e. 往表中插入數(shù)據(jù)e1.給表中所有的字段插入數(shù)據(jù)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.給表中部分字段插入數(shù)據(jù)insert into emp(emp no,n ame,sex,age) values('1003','cuihua','w',18);解決插入中文問題:(eclipse中的設(shè)置)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. 刪除數(shù)據(jù)delete from emp ;->刪除表中所有數(shù)據(jù)delete from emp where emp no =1004;MyEclipse 配置 Mysql 連接:1. 切換到數(shù)據(jù)庫界面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不能創(chuàng)建xxx庫,因為已經(jīng)存在2. Ca n't drop database 'xxx' database does n

8、't exist不能刪除xxx庫,因為已經(jīng)不存在-創(chuàng)建庫create database search default character set gbk ;- 使用庫use search;-創(chuàng)建表- 員工信息表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),-領(lǐng)導(dǎo)編號dept no int

9、 -部門編號);-部門表:create table dept( dept no int,-部門編號dn ame varchar(50),- 部門名稱 loc varchar(80)- 部門位置);往emp表中插入數(shù)據(jù)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表插入數(shù)據(jù)研發(fā)部','');運維部','');實施部','');in sert into dept values(10,' in sert into dept values(20,' in sert into dept values(30,' -查詢 use search ;-1.查詢emp表中的所有數(shù)據(jù)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( 從 地方) - 執(zhí)行順序: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- 執(zhí)行順序:from -> where ->select-4.查詢薪水大于等于 10000并且小于等于18000的員工-查什么 empno ename salary-查詢的條件是什么10000=<salary<=18000( 數(shù)學(xué)中的寫法)-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做運算,結(jié)果都為 null-空值處理函數(shù):ifnull()-ifnull(bo nus,0):- 如果bonus為null ,則處理成0- 如果bonus不為null,則不處理.按照bonus實際的值運算.select en ame,12*(salary+ifnull(b onu s,0)from emp ;-函數(shù):單行函數(shù)組函數(shù)(聚合函數(shù))-單行函數(shù)

21、:單行函數(shù)會對表中的每一條記錄進行操作-并且每一條記錄都會產(chǎn)生一個結(jié)果.-n ow():查詢當(dāng)前時間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.查詢實現(xiàn)如下結(jié)果:我是xxx,我的職位是xxx-concat('我是',ename,',我的職位是job ); 連接函數(shù).將給定的字段連接成字符串。select ' 我是'from emp ;select concat(' 我是',ename,',我的職位是 job) description from emp ;-別名:就是給查詢的結(jié)果中的列取另外一個名字-sele

23、ct en ame as n ame from emp ; - n ame可以省略的-select en ame n ame from emp ; - as-13.通過查詢實現(xiàn):10部門的薪水漲20%20部門的薪水漲10%-case開始分支-whe n 判斷分支條件then執(zhí)行分支結(jié)果30部門的薪水保持不變其他部門的薪水漲 500-多路分支case whe n the n else end-whe n . the n.-else上述情況都不滿足,執(zhí)行else-end 結(jié)束分支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( 升序默認(rèn)的排序)-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- 執(zhí)行順序: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.統(tǒng)計表中總共有多少條記錄select * from emp ;-coun t():統(tǒng)計函數(shù)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值不會被統(tǒng)計。-組函數(shù)(聚合函數(shù)):-組函數(shù)是對表中的一列數(shù)據(jù)進行計算并返回單一的結(jié)果-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后面只能跟組標(biāo)識,組函數(shù),-組標(biāo)識或者組函數(shù)的表達式-不能直接跟單行字段或者單行函數(shù) -32.查詢每個部門的平均

31、薪水select dept no ,avg(salary) from emp group by dept no;-33.查詢部門人數(shù)大于等于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-執(zhí)行順序:from->where->group by->-havi ng->select->order by-35.查詢薪水最高的員工-1.查詢最高薪水select max(salary) from emp ;-2.查詢最高薪水對應(yīng)的員工-select en ame from emp wh

33、ere salary =select en ame from emp where salary =hav ing最高薪水.(select max(salary) from emp );-子查詢:當(dāng)一個查詢的結(jié)果是另一個查詢的條件時,-稱之為子查詢-非關(guān)聯(lián)子查詢關(guān)聯(lián)子查詢-非關(guān)聯(lián)子查詢:先執(zhí)行子查詢,子查詢的結(jié)果做為主查詢的-條件,再執(zhí)行主查詢子查詢只執(zhí)行一次-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!=' 小龍女'-多列非關(guān)聯(lián)子查詢-關(guān)聯(lián)子查詢-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,'財務(wù)部',");select * from emp ;select * from dept;-子查詢:一個查詢的結(jié)果作為另一個查詢的條件-非關(guān)聯(lián)子查詢-先執(zhí)行子查詢,子查詢的返回結(jié)果做為主查詢的條件.-再執(zhí)行主查詢,子查詢只

37、執(zhí)行一次-關(guān)聯(lián)子查詢-采用循環(huán)的方式,查詢先重外部查詢開始,獲取一條記錄后,-將其傳入部查詢.部查詢根據(jù)外部查詢傳入的記錄,-可以查詢結(jié)果,然后將結(jié)果傳回外部查詢中.外部查詢根據(jù)-部查詢的結(jié)果判斷此條記錄是否滿足條件,若滿足條件-則放入結(jié)果集,將來返回,否則放棄此條記錄-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);-連接查詢-連接夕卜連接(左外連|右外連|全外連) 交叉連接-連接:取交集-外連接:主(驅(qū)動)從(匹配)表- 連接: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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論