1. 数据库表

1.1 员工表

 1 Create Table
 2 
 3 CREATE TABLE `employees` (
 4   `employee_id` int(6) NOT NULL AUTO_INCREMENT,
 5   `first_name` varchar(20) DEFAULT NULL,
 6   `last_name` varchar(25) DEFAULT NULL,
 7   `email` varchar(25) DEFAULT NULL,
 8   `phone_number` varchar(20) DEFAULT NULL,
 9   `job_id` varchar(10) DEFAULT NULL,
10   `salary` double(10,2) DEFAULT NULL,
11   `commission_pct` double(4,2) DEFAULT NULL,
12   `manager_id` int(6) DEFAULT NULL,
13   `department_id` int(4) DEFAULT NULL,
14   `hiredate` datetime DEFAULT NULL,
15   PRIMARY KEY (`employee_id`),
16   KEY `dept_id_fk` (`department_id`),
17   KEY `job_id_fk` (`job_id`),
18   CONSTRAINT `dept_id_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`),
19   CONSTRAINT `job_id_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`)
20 ) ENGINE=InnoDB AUTO_INCREMENT=207 DEFAULT CHARSET=gb2312

insert  into `employees`(`employee_id`,`first_name`,`last_name`,`email`,`phone_number`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`,`hiredate`) values (100,\'Steven\',\'K_ing\',\'SKING\',\'515.123.4567\',\'AD_PRES\',24000.00,NULL,NULL,90,\'1992-04-03 00:00:00\'),(101,\'Neena\',\'Kochhar\',\'NKOCHHAR\',\'515.123.4568\',\'AD_VP\',17000.00,NULL,100,90,\'1992-04-03 00:00:00\'),(102,\'Lex\',\'De Haan\',\'LDEHAAN\',\'515.123.4569\',\'AD_VP\',17000.00,NULL,100,90,\'1992-04-03 00:00:00\'),(103,\'Alexander\',\'Hunold\',\'AHUNOLD\',\'590.423.4567\',\'IT_PROG\',9000.00,NULL,102,60,\'1992-04-03 00:00:00\'),(104,\'Bruce\',\'Ernst\',\'BERNST\',\'590.423.4568\',\'IT_PROG\',6000.00,NULL,103,60,\'1992-04-03 00:00:00\'),(105,\'David\',\'Austin\',\'DAUSTIN\',\'590.423.4569\',\'IT_PROG\',4800.00,NULL,103,60,\'1998-03-03 00:00:00\'),(106,\'Valli\',\'Pataballa\',\'VPATABAL\',\'590.423.4560\',\'IT_PROG\',4800.00,NULL,103,60,\'1998-03-03 00:00:00\'),(107,\'Diana\',\'Lorentz\',\'DLORENTZ\',\'590.423.5567\',\'IT_PROG\',4200.00,NULL,103,60,\'1998-03-03 00:00:00\'),(108,\'Nancy\',\'Greenberg\',\'NGREENBE\',\'515.124.4569\',\'FI_MGR\',12000.00,NULL,101,100,\'1998-03-03 00:00:00\'),(109,\'Daniel\',\'Faviet\',\'DFAVIET\',\'515.124.4169\',\'FI_ACCOUNT\',9000.00,NULL,108,100,\'1998-03-03 00:00:00\'),(110,\'John\',\'Chen\',\'JCHEN\',\'515.124.4269\',\'FI_ACCOUNT\',8200.00,NULL,108,100,\'2000-09-09 00:00:00\'),(111,\'Ismael\',\'Sciarra\',\'ISCIARRA\',\'515.124.4369\',\'FI_ACCOUNT\',7700.00,NULL,108,100,\'2000-09-09 00:00:00\'),(112,\'Jose Manuel\',\'Urman\',\'JMURMAN\',\'515.124.4469\',\'FI_ACCOUNT\',7800.00,NULL,108,100,\'2000-09-09 00:00:00\'),(113,\'Luis\',\'Popp\',\'LPOPP\',\'515.124.4567\',\'FI_ACCOUNT\',6900.00,NULL,108,100,\'2000-09-09 00:00:00\'),(114,\'Den\',\'Raphaely\',\'DRAPHEAL\',\'515.127.4561\',\'PU_MAN\',11000.00,NULL,100,30,\'2000-09-09 00:00:00\'),(115,\'Alexander\',\'Khoo\',\'AKHOO\',\'515.127.4562\',\'PU_CLERK\',3100.00,NULL,114,30,\'2000-09-09 00:00:00\'),(116,\'Shelli\',\'Baida\',\'SBAIDA\',\'515.127.4563\',\'PU_CLERK\',2900.00,NULL,114,30,\'2000-09-09 00:00:00\'),(117,\'Sigal\',\'Tobias\',\'STOBIAS\',\'515.127.4564\',\'PU_CLERK\',2800.00,NULL,114,30,\'2000-09-09 00:00:00\'),(118,\'Guy\',\'Himuro\',\'GHIMURO\',\'515.127.4565\',\'PU_CLERK\',2600.00,NULL,114,30,\'2000-09-09 00:00:00\'),(119,\'Karen\',\'Colmenares\',\'KCOLMENA\',\'515.127.4566\',\'PU_CLERK\',2500.00,NULL,114,30,\'2000-09-09 00:00:00\'),(120,\'Matthew\',\'Weiss\',\'MWEISS\',\'650.123.1234\',\'ST_MAN\',8000.00,NULL,100,50,\'2004-02-06 00:00:00\'),(121,\'Adam\',\'Fripp\',\'AFRIPP\',\'650.123.2234\',\'ST_MAN\',8200.00,NULL,100,50,\'2004-02-06 00:00:00\'),(122,\'Payam\',\'Kaufling\',\'PKAUFLIN\',\'650.123.3234\',\'ST_MAN\',7900.00,NULL,100,50,\'2004-02-06 00:00:00\'),(123,\'Shanta\',\'Vollman\',\'SVOLLMAN\',\'650.123.4234\',\'ST_MAN\',6500.00,NULL,100,50,\'2004-02-06 00:00:00\'),(124,\'Kevin\',\'Mourgos\',\'KMOURGOS\',\'650.123.5234\',\'ST_MAN\',5800.00,NULL,100,50,\'2004-02-06 00:00:00\'),(125,\'Julia\',\'Nayer\',\'JNAYER\',\'650.124.1214\',\'ST_CLERK\',3200.00,NULL,120,50,\'2004-02-06 00:00:00\'),(126,\'Irene\',\'Mikkilineni\',\'IMIKKILI\',\'650.124.1224\',\'ST_CLERK\',2700.00,NULL,120,50,\'2004-02-06 00:00:00\'),(127,\'James\',\'Landry\',\'JLANDRY\',\'650.124.1334\',\'ST_CLERK\',2400.00,NULL,120,50,\'2004-02-06 00:00:00\'),(128,\'Steven\',\'Markle\',\'SMARKLE\',\'650.124.1434\',\'ST_CLERK\',2200.00,NULL,120,50,\'2004-02-06 00:00:00\'),(129,\'Laura\',\'Bissot\',\'LBISSOT\',\'650.124.5234\',\'ST_CLERK\',3300.00,NULL,121,50,\'2004-02-06 00:00:00\'),(130,\'Mozhe\',\'Atkinson\',\'MATKINSO\',\'650.124.6234\',\'ST_CLERK\',2800.00,NULL,121,50,\'2004-02-06 00:00:00\'),(131,\'James\',\'Marlow\',\'JAMRLOW\',\'650.124.7234\',\'ST_CLERK\',2500.00,NULL,121,50,\'2004-02-06 00:00:00\'),(132,\'TJ\',\'Olson\',\'TJOLSON\',\'650.124.8234\',\'ST_CLERK\',2100.00,NULL,121,50,\'2004-02-06 00:00:00\'),(133,\'Jason\',\'Mallin\',\'JMALLIN\',\'650.127.1934\',\'ST_CLERK\',3300.00,NULL,122,50,\'2004-02-06 00:00:00\'),(134,\'Michael\',\'Rogers\',\'MROGERS\',\'650.127.1834\',\'ST_CLERK\',2900.00,NULL,122,50,\'2002-12-23 00:00:00\'),(135,\'Ki\',\'Gee\',\'KGEE\',\'650.127.1734\',\'ST_CLERK\',2400.00,NULL,122,50,\'2002-12-23 00:00:00\'),(136,\'Hazel\',\'Philtanker\',\'HPHILTAN\',\'650.127.1634\',\'ST_CLERK\',2200.00,NULL,122,50,\'2002-12-23 00:00:00\'),(137,\'Renske\',\'Ladwig\',\'RLADWIG\',\'650.121.1234\',\'ST_CLERK\',3600.00,NULL,123,50,\'2002-12-23 00:00:00\'),(138,\'Stephen\',\'Stiles\',\'SSTILES\',\'650.121.2034\',\'ST_CLERK\',3200.00,NULL,123,50,\'2002-12-23 00:00:00\'),(139,\'John\',\'Seo\',\'JSEO\',\'650.121.2019\',\'ST_CLERK\',2700.00,NULL,123,50,\'2002-12-23 00:00:00\'),(140,\'Joshua\',\'Patel\',\'JPATEL\',\'650.121.1834\',\'ST_CLERK\',2500.00,NULL,123,50,\'2002-12-23 00:00:00\'),(141,\'Trenna\',\'Rajs\',\'TRAJS\',\'650.121.8009\',\'ST_CLERK\',3500.00,NULL,124,50,\'2002-12-23 00:00:00\'),(142,\'Curtis\',\'Davies\',\'CDAVIES\',\'650.121.2994\',\'ST_CLERK\',3100.00,NULL,124,50,\'2002-12-23 00:00:00\'),(143,\'Randall\',\'Matos\',\'RMATOS\',\'650.121.2874\',\'ST_CLERK\',2600.00,NULL,124,50,\'2002-12-23 00:00:00\'),(144,\'Peter\',\'Vargas\',\'PVARGAS\',\'650.121.2004\',\'ST_CLERK\',2500.00,NULL,124,50,\'2002-12-23 00:00:00\'),(145,\'John\',\'Russell\',\'JRUSSEL\',\'011.44.1344.429268\',\'SA_MAN\',14000.00,0.40,100,80,\'2002-12-23 00:00:00\'),(146,\'Karen\',\'Partners\',\'KPARTNER\',\'011.44.1344.467268\',\'SA_MAN\',13500.00,0.30,100,80,\'2002-12-23 00:00:00\'),(147,\'Alberto\',\'Errazuriz\',\'AERRAZUR\',\'011.44.1344.429278\',\'SA_MAN\',12000.00,0.30,100,80,\'2002-12-23 00:00:00\'),(148,\'Gerald\',\'Cambrault\',\'GCAMBRAU\',\'011.44.1344.619268\',\'SA_MAN\',11000.00,0.30,100,80,\'2002-12-23 00:00:00\'),(149,\'Eleni\',\'Zlotkey\',\'EZLOTKEY\',\'011.44.1344.429018\',\'SA_MAN\',10500.00,0.20,100,80,\'2002-12-23 00:00:00\'),(150,\'Peter\',\'Tucker\',\'PTUCKER\',\'011.44.1344.129268\',\'SA_REP\',10000.00,0.30,145,80,\'2014-03-05 00:00:00\'),(151,\'David\',\'Bernstein\',\'DBERNSTE\',\'011.44.1344.345268\',\'SA_REP\',9500.00,0.25,145,80,\'2014-03-05 00:00:00\'),(152,\'Peter\',\'Hall\',\'PHALL\',\'011.44.1344.478968\',\'SA_REP\',9000.00,0.25,145,80,\'2014-03-05 00:00:00\'),(153,\'Christopher\',\'Olsen\',\'COLSEN\',\'011.44.1344.498718\',\'SA_REP\',8000.00,0.20,145,80,\'2014-03-05 00:00:00\'),(154,\'Nanette\',\'Cambrault\',\'NCAMBRAU\',\'011.44.1344.987668\',\'SA_REP\',7500.00,0.20,145,80,\'2014-03-05 00:00:00\'),(155,\'Oliver\',\'Tuvault\',\'OTUVAULT\',\'011.44.1344.486508\',\'SA_REP\',7000.00,0.15,145,80,\'2014-03-05 00:00:00\'),(156,\'Janette\',\'K_ing\',\'JKING\',\'011.44.1345.429268\',\'SA_REP\',10000.00,0.35,146,80,\'2014-03-05 00:00:00\'),(157,\'Patrick\',\'Sully\',\'PSULLY\',\'011.44.1345.929268\',\'SA_REP\',9500.00,0.35,146,80,\'2014-03-05 00:00:00\'),(158,\'Allan\',\'McEwen\',\'AMCEWEN\',\'011.44.1345.829268\',\'SA_REP\',9000.00,0.35,146,80,\'2014-03-05 00:00:00\'),(159,\'Lindsey\',\'Smith\',\'LSMITH\',\'011.44.1345.729268\',\'SA_REP\',8000.00,0.30,146,80,\'2014-03-05 00:00:00\'),(160,\'Louise\',\'Doran\',\'LDORAN\',\'011.44.1345.629268\',\'SA_REP\',7500.00,0.30,146,80,\'2014-03-05 00:00:00\'),(161,\'Sarath\',\'Sewall\',\'SSEWALL\',\'011.44.1345.529268\',\'SA_REP\',7000.00,0.25,146,80,\'2014-03-05 00:00:00\'),(162,\'Clara\',\'Vishney\',\'CVISHNEY\',\'011.44.1346.129268\',\'SA_REP\',10500.00,0.25,147,80,\'2014-03-05 00:00:00\'),(163,\'Danielle\',\'Greene\',\'DGREENE\',\'011.44.1346.229268\',\'SA_REP\',9500.00,0.15,147,80,\'2014-03-05 00:00:00\'),(164,\'Mattea\',\'Marvins\',\'MMARVINS\',\'011.44.1346.329268\',\'SA_REP\',7200.00,0.10,147,80,\'2014-03-05 00:00:00\'),(165,\'David\',\'Lee\',\'DLEE\',\'011.44.1346.529268\',\'SA_REP\',6800.00,0.10,147,80,\'2014-03-05 00:00:00\'),(166,\'Sundar\',\'Ande\',\'SANDE\',\'011.44.1346.629268\',\'SA_REP\',6400.00,0.10,147,80,\'2014-03-05 00:00:00\'),(167,\'Amit\',\'Banda\',\'ABANDA\',\'011.44.1346.729268\',\'SA_REP\',6200.00,0.10,147,80,\'2014-03-05 00:00:00\'),(168,\'Lisa\',\'Ozer\',\'LOZER\',\'011.44.1343.929268\',\'SA_REP\',11500.00,0.25,148,80,\'2014-03-05 00:00:00\'),(169,\'Harrison\',\'Bloom\',\'HBLOOM\',\'011.44.1343.829268\',\'SA_REP\',10000.00,0.20,148,80,\'2014-03-05 00:00:00\'),(170,\'Tayler\',\'Fox\',\'TFOX\',\'011.44.1343.729268\',\'SA_REP\',9600.00,0.20,148,80,\'2014-03-05 00:00:00\'),(171,\'William\',\'Smith\',\'WSMITH\',\'011.44.1343.629268\',\'SA_REP\',7400.00,0.15,148,80,\'2014-03-05 00:00:00\'),(172,\'Elizabeth\',\'Bates\',\'EBATES\',\'011.44.1343.529268\',\'SA_REP\',7300.00,0.15,148,80,\'2014-03-05 00:00:00\'),(173,\'Sundita\',\'Kumar\',\'SKUMAR\',\'011.44.1343.329268\',\'SA_REP\',6100.00,0.10,148,80,\'2014-03-05 00:00:00\'),(174,\'Ellen\',\'Abel\',\'EABEL\',\'011.44.1644.429267\',\'SA_REP\',11000.00,0.30,149,80,\'2014-03-05 00:00:00\'),(175,\'Alyssa\',\'Hutton\',\'AHUTTON\',\'011.44.1644.429266\',\'SA_REP\',8800.00,0.25,149,80,\'2014-03-05 00:00:00\'),(176,\'Jonathon\',\'Taylor\',\'JTAYLOR\',\'011.44.1644.429265\',\'SA_REP\',8600.00,0.20,149,80,\'2014-03-05 00:00:00\'),(177,\'Jack\',\'Livingston\',\'JLIVINGS\',\'011.44.1644.429264\',\'SA_REP\',8400.00,0.20,149,80,\'2014-03-05 00:00:00\'),(178,\'Kimberely\',\'Grant\',\'KGRANT\',\'011.44.1644.429263\',\'SA_REP\',7000.00,0.15,149,NULL,\'2014-03-05 00:00:00\'),(179,\'Charles\',\'Johnson\',\'CJOHNSON\',\'011.44.1644.429262\',\'SA_REP\',6200.00,0.10,149,80,\'2014-03-05 00:00:00\'),(180,\'Winston\',\'Taylor\',\'WTAYLOR\',\'650.507.9876\',\'SH_CLERK\',3200.00,NULL,120,50,\'2014-03-05 00:00:00\'),(181,\'Jean\',\'Fleaur\',\'JFLEAUR\',\'650.507.9877\',\'SH_CLERK\',3100.00,NULL,120,50,\'2014-03-05 00:00:00\'),(182,\'Martha\',\'Sullivan\',\'MSULLIVA\',\'650.507.9878\',\'SH_CLERK\',2500.00,NULL,120,50,\'2014-03-05 00:00:00\'),(183,\'Girard\',\'Geoni\',\'GGEONI\',\'650.507.9879\',\'SH_CLERK\',2800.00,NULL,120,50,\'2014-03-05 00:00:00\'),(184,\'Nandita\',\'Sarchand\',\'NSARCHAN\',\'650.509.1876\',\'SH_CLERK\',4200.00,NULL,121,50,\'2014-03-05 00:00:00\'),(185,\'Alexis\',\'Bull\',\'ABULL\',\'650.509.2876\',\'SH_CLERK\',4100.00,NULL,121,50,\'2014-03-05 00:00:00\'),(186,\'Julia\',\'Dellinger\',\'JDELLING\',\'650.509.3876\',\'SH_CLERK\',3400.00,NULL,121,50,\'2014-03-05 00:00:00\'),(187,\'Anthony\',\'Cabrio\',\'ACABRIO\',\'650.509.4876\',\'SH_CLERK\',3000.00,NULL,121,50,\'2014-03-05 00:00:00\'),(188,\'Kelly\',\'Chung\',\'KCHUNG\',\'650.505.1876\',\'SH_CLERK\',3800.00,NULL,122,50,\'2014-03-05 00:00:00\'),(189,\'Jennifer\',\'Dilly\',\'JDILLY\',\'650.505.2876\',\'SH_CLERK\',3600.00,NULL,122,50,\'2014-03-05 00:00:00\'),(190,\'Timothy\',\'Gates\',\'TGATES\',\'650.505.3876\',\'SH_CLERK\',2900.00,NULL,122,50,\'2014-03-05 00:00:00\'),(191,\'Randall\',\'Perkins\',\'RPERKINS\',\'650.505.4876\',\'SH_CLERK\',2500.00,NULL,122,50,\'2014-03-05 00:00:00\'),(192,\'Sarah\',\'Bell\',\'SBELL\',\'650.501.1876\',\'SH_CLERK\',4000.00,NULL,123,50,\'2014-03-05 00:00:00\'),(193,\'Britney\',\'Everett\',\'BEVERETT\',\'650.501.2876\',\'SH_CLERK\',3900.00,NULL,123,50,\'2014-03-05 00:00:00\'),(194,\'Samuel\',\'McCain\',\'SMCCAIN\',\'650.501.3876\',\'SH_CLERK\',3200.00,NULL,123,50,\'2014-03-05 00:00:00\'),(195,\'Vance\',\'Jones\',\'VJONES\',\'650.501.4876\',\'SH_CLERK\',2800.00,NULL,123,50,\'2014-03-05 00:00:00\'),(196,\'Alana\',\'Walsh\',\'AWALSH\',\'650.507.9811\',\'SH_CLERK\',3100.00,NULL,124,50,\'2014-03-05 00:00:00\'),(197,\'Kevin\',\'Feeney\',\'KFEENEY\',\'650.507.9822\',\'SH_CLERK\',3000.00,NULL,124,50,\'2014-03-05 00:00:00\'),(198,\'Donald\',\'OConnell\',\'DOCONNEL\',\'650.507.9833\',\'SH_CLERK\',2600.00,NULL,124,50,\'2014-03-05 00:00:00\'),(199,\'Douglas\',\'Grant\',\'DGRANT\',\'650.507.9844\',\'SH_CLERK\',2600.00,NULL,124,50,\'2014-03-05 00:00:00\'),(200,\'Jennifer\',\'Whalen\',\'JWHALEN\',\'515.123.4444\',\'AD_ASST\',4400.00,NULL,101,10,\'2016-03-03 00:00:00\'),(201,\'Michael\',\'Hartstein\',\'MHARTSTE\',\'515.123.5555\',\'MK_MAN\',13000.00,NULL,100,20,\'2016-03-03 00:00:00\'),(202,\'Pat\',\'Fay\',\'PFAY\',\'603.123.6666\',\'MK_REP\',6000.00,NULL,201,20,\'2016-03-03 00:00:00\'),(203,\'Susan\',\'Mavris\',\'SMAVRIS\',\'515.123.7777\',\'HR_REP\',6500.00,NULL,101,40,\'2016-03-03 00:00:00\'),(204,\'Hermann\',\'Baer\',\'HBAER\',\'515.123.8888\',\'PR_REP\',10000.00,NULL,101,70,\'2016-03-03 00:00:00\'),(205,\'Shelley\',\'Higgins\',\'SHIGGINS\',\'515.123.8080\',\'AC_MGR\',12000.00,NULL,101,110,\'2016-03-03 00:00:00\'),(206,\'William\',\'Gietz\',\'WGIETZ\',\'515.123.8181\',\'AC_ACCOUNT\',8300.00,NULL,205,110,\'2016-03-03 00:00:00\');

1.2 部门表

 1 Create Table
 2 
 3 CREATE TABLE `departments` (
 4   `department_id` int(4) NOT NULL AUTO_INCREMENT,
 5   `department_name` varchar(3) DEFAULT NULL,
 6   `manager_id` int(6) DEFAULT NULL,
 7   `location_id` int(4) DEFAULT NULL,
 8   PRIMARY KEY (`department_id`),
 9   KEY `loc_id_fk` (`location_id`),
10   CONSTRAINT `loc_id_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`)
11 ) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312

insert  into `departments`(`department_id`,`department_name`,`manager_id`,`location_id`) values (10,\'Adm\',200,1700),(20,\'Mar\',201,1800),(30,\'Pur\',114,1700),(40,\'Hum\',203,2400),(50,\'Shi\',121,1500),(60,\'IT\',103,1400),(70,\'Pub\',204,2700),(80,\'Sal\',145,2500),(90,\'Exe\',100,1700),(100,\'Fin\',108,1700),(110,\'Acc\',205,1700),(120,\'Tre\',NULL,1700),(130,\'Cor\',NULL,1700),(140,\'Con\',NULL,1700),(150,\'Sha\',NULL,1700),(160,\'Ben\',NULL,1700),(170,\'Man\',NULL,1700),(180,\'Con\',NULL,1700),(190,\'Con\',NULL,1700),(200,\'Ope\',NULL,1700),(210,\'IT \',NULL,1700),(220,\'NOC\',NULL,1700),(230,\'IT \',NULL,1700),(240,\'Gov\',NULL,1700),(250,\'Ret\',NULL,1700),(260,\'Rec\',NULL,1700),(270,\'Pay\',NULL,1700);

1.3 工作表

CREATE TABLE `jobs` (
  `job_id` varchar(10) NOT NULL,
  `job_ ` varchar(35) DEFAULT NULL,
  `min_salary` int(6) DEFAULT NULL,
  `max_salary` int(6) DEFAULT NULL,
  PRIMARY KEY (`job_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312

insert  into `jobs`(`job_id`,`job_ `,`min_salary`,`max_salary`) values (\'AC_ACCOUNT\',\'Public Accountant\',4200,9000),(\'AC_MGR\',\'Accounting Manager\',8200,16000),(\'AD_ASST\',\'Administration Assistant\',3000,6000),(\'AD_PRES\',\'President\',20000,40000),(\'AD_VP\',\'Administration Vice President\',15000,30000),(\'FI_ACCOUNT\',\'Accountant\',4200,9000),(\'FI_MGR\',\'Finance Manager\',8200,16000),(\'HR_REP\',\'Human Resources Representative\',4000,9000),(\'IT_PROG\',\'Programmer\',4000,10000),(\'MK_MAN\',\'Marketing Manager\',9000,15000),(\'MK_REP\',\'Marketing Representative\',4000,9000),(\'PR_REP\',\'Public Relations Representative\',4500,10500),(\'PU_CLERK\',\'Purchasing Clerk\',2500,5500),(\'PU_MAN\',\'Purchasing Manager\',8000,15000),(\'SA_MAN\',\'Sales Manager\',10000,20000),(\'SA_REP\',\'Sales Representative\',6000,12000),(\'SH_CLERK\',\'Shipping Clerk\',2500,5500),(\'ST_CLERK\',\'Stock Clerk\',2000,5000),(\'ST_MAN\',\'Stock Manager\',5500,8500);

1.4 位置表

Create Table

CREATE TABLE `locations` (
  `location_id` int(11) NOT NULL AUTO_INCREMENT,
  `street_address` varchar(40) DEFAULT NULL,
  `postal_code` varchar(12) DEFAULT NULL,
  `city` varchar(30) DEFAULT NULL,
  `state_province` varchar(25) DEFAULT NULL,
  `country_id` varchar(2) DEFAULT NULL,
  PRIMARY KEY (`location_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3201 DEFAULT CHARSET=gb2312

insert  into `locations`(`location_id`,`street_address`,`postal_code`,`city`,`state_province`,`country_id`) values (1000,\'1297 Via Cola di Rie\',\'00989\',\'Roma\',NULL,\'IT\'),(1100,\'93091 Calle della Testa\',\'10934\',\'Venice\',NULL,\'IT\'),(1200,\'2017 Shinjuku-ku\',\'1689\',\'Tokyo\',\'Tokyo Prefecture\',\'JP\'),(1300,\'9450 Kamiya-cho\',\'6823\',\'Hiroshima\',NULL,\'JP\'),(1400,\'2014 Jabberwocky Rd\',\'26192\',\'Southlake\',\'Texas\',\'US\'),(1500,\'2011 Interiors Blvd\',\'99236\',\'South San Francisco\',\'California\',\'US\'),(1600,\'2007 Zagora St\',\'50090\',\'South Brunswick\',\'New Jersey\',\'US\'),(1700,\'2004 Charade Rd\',\'98199\',\'Seattle\',\'Washington\',\'US\'),(1800,\'147 Spadina Ave\',\'M5V 2L7\',\'Toronto\',\'Ontario\',\'CA\'),(1900,\'6092 Boxwood St\',\'YSW 9T2\',\'Whitehorse\',\'Yukon\',\'CA\'),(2000,\'40-5-12 Laogianggen\',\'190518\',\'Beijing\',NULL,\'CN\'),(2100,\'1298 Vileparle (E)\',\'490231\',\'Bombay\',\'Maharashtra\',\'IN\'),(2200,\'12-98 Victoria Street\',\'2901\',\'Sydney\',\'New South Wales\',\'AU\'),(2300,\'198 Clementi North\',\'540198\',\'Singapore\',NULL,\'SG\'),(2400,\'8204 Arthur St\',NULL,\'London\',NULL,\'UK\'),(2500,\'Magdalen Centre, The Oxford Science Park\',\'OX9 9ZB\',\'Oxford\',\'Oxford\',\'UK\'),(2600,\'9702 Chester Road\',\'09629850293\',\'Stretford\',\'Manchester\',\'UK\'),(2700,\'Schwanthalerstr. 7031\',\'80925\',\'Munich\',\'Bavaria\',\'DE\'),(2800,\'Rua Frei Caneca 1360 \',\'01307-002\',\'Sao Paulo\',\'Sao Paulo\',\'BR\'),(2900,\'20 Rue des Corps-Saints\',\'1730\',\'Geneva\',\'Geneve\',\'CH\'),(3000,\'Murtenstrasse 921\',\'3095\',\'Bern\',\'BE\',\'CH\'),(3100,\'Pieter Breughelstraat 837\',\'3029SK\',\'Utrecht\',\'Utrecht\',\'NL\'),(3200,\'Mariano Escobedo 9991\',\'11932\',\'Mexico City\',\'Distrito Federal,\',\'MX\');

2. 基础查询(select)

2.1 查询单个字段

SELECT last_name FROM employees

2.2 查询多个字段

SELECT last_name,email,salary FROM employees

2.3 查询所有字段

SELECT * FROM employees

2.4 查询常量值、表达式

SELECT 100;
SELECT \'john\';
SELECT 100*8;
SELECT 100%98;

2.5 查询函数

SELECT VERSION();  -- 查询数据库版本

2.6 起别名(如果查询的字段有重名,可以使用起别名区分,别名中有特殊符号,用引号引起来)

SELECT last_name AS 姓,first_name ASFROM employees;
SELECT last_name 姓,first_name 名 FROM employees;
SELECT salary AS \'out put\' FROM employees;

2.7 去重(distinct)

# 查询员工表中涉及到的所有部门编号,需要去除重复
SELECT DISTINCT department_id FROM employees;

2.8 +号的作用(concat、ifnull)

/*
java中+号
1.运算符,两个都为数值
2.连接符,只要有一个操作数为字符串

mysql中
仅仅:运算符
*/
SELECT 100+90; -- 做加法运算
SELECT \'100\'+90; -- 其中一方为字符串,试图将字符串转换成数值型,如果成功,继续做加法
SELECT \'john\'+90; -- 如果转换失败,则将字符串变为0,再运算
SELECT NULL+10; -- 其中一个为null,则结果肯定为null
# 将员工的姓和名连接成一个字段,并显示为姓名
SELECT CONCAT(\'a\',\'b\',\'c\') AS 结果; 
SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees;
-- concat中拼接null值为null
SELECT CONCAT(100,NULL);
-- ifnull(需要转换的字段,转换后的值)
SELECT IFNULL(`commission_pct`,0) 奖金率,`commission_pct` FROM employees;

3. 条件查询

where 

条件运算符:>,<, = ,!=, <>, >= ,<=

逻辑运算符:and(&&) ,or(||), not(!)

模糊查询:like,between and,in,is null

3.1 简单的条件查询

# 查询工资>12000的员工信息 ( > )
SELECT * FROM employees WHERE salary > 12000;

# 查询部门编号不等于90号的员工名和部门编号 ( !=   <> )
SELECT last_name 名字,`department_id` 部门编号 FROM employees WHERE `department_id` <> 90;

# 查询工资在10000~20000之间的员工名,工资以及奖金  ( and ) 
SELECT last_name 名字,salary 工资,`commission_pct` 奖金 FROM employees WHERE salary >10000 AND salary <20000;

# 查询部门编号不在90到110之间,或者工资高于15000的员工信息 ( OR > < )
SELECT * FROM employees WHERE department_id >110 OR department_id < 90 OR salary > 15000

 3.2 模糊查询

like

-- 通配符: % 任意多个字符(包括空字符)
--         _ 任意单个字符
-- 查询员工名字包含a的员工信息
SELECT * FROM employees WHERE last_name LIKE \'%a%\';

-- 查询员工第三个字符为e,第五个字符为a
SELECT * FROM employees WHERE last_name LIKE \'__n_l%\'

-- 查询第二个字符为_的员工名
SELECT * FROM employees WHERE last_name LIKE \'_\\_%\'  -- \\ 转义
SELECT * FROM employees WHERE last_name LIKE \'_$_%\' ESCAPE \'$\'  -- escape \'任意字符\' 进行转义 推荐

3.3 其他查询

between and

-- 查询员工编号在100到120之间的员工信息
-- 包含临界值
-- 两个临界值不要颠倒顺序
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;
SELECT * FROM employees WHERE employee_id >=100 AND employee_id<=120;

in

-- 查询员工工种编号是IT_PROG、AD_VP、AD_PRES之间
-- in:判断某字段的值是否属于in列表中的某一项

SELECT * FROM employees WHERE job_id IN (\'IT_PROG\',\'AD_VP\',\'AD_PRES\');

is null

-- 查询没有奖金的
-- =或<>不能判断 null 值 
-- 所以需要使用 is null ,is not null
SELECT * FROM employees WHERE commission_pct IS NULL;

-- 查询有奖金的
SELECT * FROM employees WHERE commission_pct IS NOT NULL;

安全等于

-- 查询没有奖金的
-- 安全等于:<=>
-- 可以当 is 或者 = 使用
SELECT * FROM employees WHERE commission_pct <=> NULL;

SELECT * FROM employees WHERE salary <=> 12000;

 4. 排序查询

order by

-- select 查询字段 from 表名 where 筛选条件 order by [ASC,DESC]
-- asc 升序, desc 降序 ,不写默认是asc
-- order by 子句 支持单个字段,多个字段(,隔开),表达式,函数,别名
-- order by 一般放最后面,除了 limit

-- 查询员工信息 工资由高到低
SELECT * FROM employees ORDER BY salary DESC;
-- 查询员工信息 工资由低到高 默认asc
SELECT * FROM employees ORDER BY salary;

-- 查询部门编号>=90的员工信息,按入职时间排序
SELECT * FROM employees WHERE department_id >= 90 ORDER BY hiredate;

-- 按年薪由高到低 显示员工信息及年薪
SELECT *,salary*12*(1+IFNULL(\'commssion_pct\',0)) 年薪 FROM employees ORDER BY salary*12*(1+IFNULL(\'commssion_pct\',0)) ;
-- order by 后面支持别名
SELECT *,salary*12*(1+IFNULL(\'commssion_pct\',0)) 年薪 FROM employees ORDER BY 年薪 ;

-- 按照名字字母的长度 排序
-- length() 函数
SELECT * FROM employees ORDER BY LENGTH(last_name);

-- 查询员工信息,先按工资升序排序,再按员工编号降序排序
SELECT * FROM employees ORDER BY salary ASC,  employee_id DESC;

 

5.小练习

-- 查询员工姓名,部门编号,年薪,按年薪降序,姓名升序
SELECT last_name 姓名,department_id 部门编号,salary*12*IFNULL(commission_pct,0) 年薪 
FROM employees ORDER BY 年薪 DESC,姓名 ASC

-- 选择工资不在8K到17K的员工姓名和工资,按工资降序
SELECT last_name 姓名,salary 工资 FROM employees WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY 工资 DESC

-- 查询邮件中包含e的员工,并且按邮箱字节降序, 再按部门号升序
SELECT * FROM employees WHERE `email` LIKE \'%e%\' ORDER BY LENGTH(email) DESC,department_id;

 

6.常见函数

将一组逻辑封装在方法中,对外暴露方法名

  1.隐藏了实现细节

  2.提高代码的重用性

  函数名(实参列表)

分类:

  1.单行函数:concat 、length 、ifnull等

  2.分组函数:做统计使用,聚合函数。

6.1 字符函数

-- length 获取参数值的字节个数
SELECT LENGTH(\'maple\');
-- utf-8中文三个字节,gbk中文字符2个字节
SELECT LENGTH(\'麦克雷\'); 

-- concat 拼接字符串
SELECT CONCAT (last_name,\'_\',first_name) 姓名 FROM employees;

-- upper、lower
SELECT UPPER(\'maple\');
SELECT LOWER(\'Maple\');
-- 将姓变大写,名变小写
SELECT CONCAT(UPPER(last_name),\'_\',LOWER(first_name)) FROM employees;

-- substr、substring
-- mysql 索引从1开始,包括索引位置,例如4包括\'在\'
SELECT SUBSTR(\'麦克雷在高台读午时已到\',4);  -- 在高台读午时已到
-- (str,index,len) 指定索引处,截取字符长度
SELECT SUBSTR(\'麦克雷在高台读午时已到\',1,3); -- 麦克雷
-- 案例:姓名中首字母字符大写,其他小写,然后用_拼接
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),\'_\',LOWER(SUBSTR(last_name,2))) FROM employees;

-- instr 子串在字符串中的第一次出现索引,如果找不到返回0
SELECT INSTR(\'双眼失明丝毫不影响我追捕敌人\',\'追捕敌人\');  -- 11

-- trim 
SELECT LENGTH(TRIM(\'    源氏   \')) AS out_put ; -- 6
SELECT TRIM(\'a\' FROM \'aaaaaaaaa天aaa使aaaaaaaa\');  -- 天aaa使

-- lpad 用指定字符实现左填充指定长度
SELECT LPAD(\'全场最佳\',10,\'6\'); -- 666666全场最佳
-- rpad 用指定字符实现左填充指定长度
SELECT RPAD(\'全场最佳\',10,\'6\'); -- 全场最佳666666

-- replace 替换字符
SELECT REPLACE(\'源氏开大杀杀杀杀杀\',\'\',\'\'); -- 源氏开大送送送送送

 

6.2 数学函数

-- round 四舍五入
SELECT ROUND(1.65); -- 2
SELECT ROUND(1.4);  -- 1
SELECT ROUND(-1.4); -- -1
-- 保留位数
SELECT ROUND(1.567,2);  -- 1.57

-- ceil 向上取整 返回大于等于该参数的最小整数
SELECT CEIL(1.00001); -- 2
SELECT CEIL(-1.00001); -- -1

-- floor 向下取整
SELECT FLOOR(9.99);  -- 9
SELECT FLOOR(-0.15); -- -1

-- truncat 小数点后截断几位
SELECT TRUNCATE(1.6999,1); -- 1.6

-- mod取余
SELECT MOD(10,3); -- 1

 

6.3 日期函数

-- now 返回当前系统日期+时间
SELECT NOW(); -- 2018-12-07 17:18:57

-- curdate 返回当前系统日期,不包含时间
SELECT CURDATE(); -- 2018-12-07

-- curtime 返回当前时间,不包含日期
SELECT CURTIME(); -- 17:20:10

-- 可以获取指定的部分,年、月、日、时、分、秒
SELECT YEAR(NOW()) 年;        -- 2018
SELECT YEAR(\'1998-10-12\') 年;  -- 1998
SELECT YEAR(hiredate) FROM employees;

SELECT MONTH(NOW()) 月;      -- 12 
SELECT MONTHNAME(NOW()) 月;  -- December

-- str_to_date 将字符通过指定的格式转换成日期
SELECT STR_TO_DATE(\'1992-2-3\',\'%Y-%c-%d\');
SELECT * FROM employees WHERE hiredate = \'1992-4-3\';
-- 但是前台可能传过来的值为 3-4-1992 ,此时需要格式化字符串
SELECT * FROM employees WHERE hiredate = STR_TO_DATE(\'4-3-1992

					
				
收藏 打印
您的足迹: