ttps://wenku.baidu.com/view/76da1e01581b6bd97f19ea3c.html
https://wenku.baidu.com/view/920fb19f852458fb760b56a9.html

CREATE DATABASE CRASHCOURSE; USE CRASHCOURSE; CREATE TABLE EMPLOYEE_TBL ( EMP_ID VARCHAR(9) NOT NULL, LAST_NAME VARCHAR(15) NOT NULL, FIRST_NAME VARCHAR(15) NOT NULL, MIDDLE_NAME VARCHAR(15), [ADDRESS] VARCHAR(30) NOT NULL, CITY VARCHAR(15) NOT NULL, [STATE] CHAR(2) NOT NULL, ZIP INTEGER NOT NULL, PHONE CHAR(10), PAGER CHAR(10) CONSTRAINT EMP_PK PRIMARY KEY (EMP_ID) ); CREATE TABLE EMPLOYEE_PAY_TBL ( EMP_ID VARCHAR(9) NOT NULL PRIMARY KEY, POSITION VARCHAR(15) NOT NULL, DATE_HIRE DATE, PAY_RATE DECIMAL(4,2), DATE_LAST_RAISE DATE, SALARY DECIMAL(8,2), BONUS DECIMAL(6,2), CONSTRAINT EMP_FK FOREIGN KEY (EMP_ID) REFERENCES EMPLOYEE_TBL (EMP_ID) ); CREATE TABLE CUSTOMER_TBL ( CUST_ID VARCHAR(10) NOT NULL PRIMARY KEY, CUST_NAME VARCHAR(30) NOT NULL, CUST_ADDRESS VARCHAR(20) NOT NULL, CUST_CITY VARCHAR(15) NOT NULL, CUST_STATE CHAR(2) NOT NULL, CUST_ZIP INTEGER NOT NULL, CUST_PHONE CHAR(10), CUST_FAX VARCHAR(10) ); CREATE TABLE ORDERS_TBL ( ORD_NUM VARCHAR(10) NOT NULL PRIMARY KEY, CUST_ID VARCHAR(10) NOT NULL, PROD_ID VARCHAR(10) NOT NULL, QTY INTEGER NOT NULL, ORD_DATE DATE ); CREATE TABLE PRODUCTS_TBL ( PROD_ID VARCHAR(10) NOT NULL PRIMARY KEY, PROD_DESC VARCHAR(40) NOT NULL, COST DECIMAL(6,2) NOT NULL ); INSERT INTO EMPLOYEE_TBL VALUES ( '311549902','STEPHENS','TINA','DAWN','RR 3 BOX 17A', 'GREENWOOD','IN','47890','3178784465',NULL ) INSERT INTO EMPLOYEE_TBL VALUES ( '442346889','PLEW','LINDA','CAROL','3301 BEACON','INDIANAPOLIS', 'IN','46224','3172978990',NULL ) INSERT INTO EMPLOYEE_TBL VALUES ( '213764555','GLASS','BRANDON','SCOTT','1710 MAIN ST','WHITELAND', 'IN','47885','3178984321','31757676' ) INSERT INTO EMPLOYEE_TBL VALUES ( '313782439','GLASS','JACOB',NULL,'3789 WHITE RIVER BLVD', 'INDIANAPOLIS','IN','45734','3175457676','8887345678' ) INSERT INTO EMPLOYEE_TBL VALUES ( '220984332','WALLACE','MARIAH',NULL,'7889 KEYSTONE AVE', 'INDIANAPOLIS','IN','46741','3173325986',NULL ) INSERT INTO EMPLOYEE_TBL VALUES ( '443679012','SPURGEON','TIFFANY',NULL,'5 GEORGE COURT', 'INDIANAPOLIS','IN','46234','3175679007',NULL ) INSERT INTO EMPLOYEE_PAY_TBL VALUES ( '311549902','MARKETING','1999-05-23',NULL,'2009-05-01','4000',NULL ) INSERT INTO EMPLOYEE_PAY_TBL VALUES ( '442346889','TEAM LEADER','2000-06-17','14.75','2009-06-01',NULL,NULL ) INSERT INTO EMPLOYEE_PAY_TBL VALUES ( '213764555','SALES MANAGER','2004-08-14',NULL,'2009-08-01','30000','2000' ) INSERT INTO EMPLOYEE_PAY_TBL VALUES ( '313782439','SALESMAN','2007-06-28',NULL,NULL,'20000','1000' ) INSERT INTO EMPLOYEE_PAY_TBL VALUES ( '220984332','SHIPPER','2006-07-22','11.00','1999-07-01',NULL,NULL ) INSERT INTO EMPLOYEE_PAY_TBL VALUES ( '443679012','SHIPPER','2001-01-14','15.00','1999-01-01',NULL,NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '232','LESLE GLEASO N','798 HARDAWAY DR','INDIANAPOLIS', 'IN','47856','3175457690',NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '109','NANCY BUNKER','APT A 4556 WATERWAY','BROAD RIPPLE', 'IN','47950','3174262323',NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '345','ANGELA DOBKO','RR3 BOX 76','LEBANON','IN','49967', '7658970090',NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '090','WENDY WOLF','3345 GATEWAY DR','INDIANAPOLIS','IN', '46224','3172913421',NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '12','MARYS GIFT SHOP','435 MAIN ST','DANVILLE','IL','47978', '3178567221','3178523434' ) INSERT INTO CUSTOMER_TBL VALUES ( '432','SCOTTYS MARKET','RR2 BOX 173','BROWNSBURG','IN', '45687','3178529835','3178529836' ) INSERT INTO CUSTOMER_TBL VALUES ( '333','JASONS AND DALLAS GOODIES','LAFAYETTE SQ MALL', 'INDIANAPOLIS','IN','46222','3172978886','317298887' ) INSERT INTO CUSTOMER_TBL VALUES ( '21','MORGANS CANDIES AND TREATS','5657 W TENTH ST', 'INDIANAPOLIS','IN','46234','3172714398',NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '43','SCHYLERS NOVELTIES','17 MAPLE ST','LEBANON','IN', '48990','3174346758',NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '287','GAVINS PLACE','9880 ROCKVILLE RD','INDIANAPOLIS', 'IN','46224','3172719991','3172719992' ) INSERT INTO CUSTOMER_TBL VALUES ( '288','HOLLYS GAMEARAMA','567 US 31 SOUTH','WHITELAND', 'IN','49980','3178879023',NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '509','HEATHERS FEATHERS AND THINGS','4090 N SHADELAND AVE', 'INDIANAPOLIS','IN','43278','3175456768',NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '610','REGANS HOBBIES INC','451 GREEN ST','PLAINFIELD','IN', '46818','3178393441','3178399090' ) INSERT INTO CUSTOMER_TBL VALUES ( '560','ANDYS CANDIES','RR 1 BOX 34','NASHVILLE','IN', '48756','8123239871',NULL ) INSERT INTO CUSTOMER_TBL VALUES ( '221','RYANS STUFF','2337 S SHELBY ST','INDIANAPOLIS','IN', '47834','3175634402',NULL ) INSERT INTO ORDERS_TBL VALUES ( '56A901','232','11235','1','2009-10-22' ) INSERT INTO ORDERS_TBL VALUES ( '56A917','12','907','100','2009-09-30' ) INSERT INTO ORDERS_TBL VALUES ( '32A132','43','222','25','2009-10-10' ) INSERT INTO ORDERS_TBL VALUES ( '16C17','090','222','2','2009-10-17' ) INSERT INTO ORDERS_TBL VALUES ( '18D778','287','90','10','2009-10-17' ) INSERT INTO ORDERS_TBL VALUES ( '23E934','432','13','20','2009-10-15' ) INSERT INTO PRODUCTS_TBL VALUES ( '11235','WITCH COSTUME','29.99' ) INSERT INTO PRODUCTS_TBL VALUES ( '222','PLASTIC PUMPKIN 18 INCH','7.75' ) INSERT INTO PRODUCTS_TBL VALUES ( '13','FALSE PARAFFIN TEETH','1.10' ) INSERT INTO PRODUCTS_TBL VALUES ( '90','LIGHTED LANTERNS','14.50' ) INSERT INTO PRODUCTS_TBL VALUES ( '15','ASSORTED COSTUMES','10.00' ) INSERT INTO PRODUCTS_TBL VALUES ( '9','CANDY CORN','1.35' ) INSERT INTO PRODUCTS_TBL VALUES ( '6','PUMPKIN CANDY','1.45' ) INSERT INTO PRODUCTS_TBL VALUES ( '87','PLASTIC SPIDERS','1.05' ) INSERT INTO PRODUCTS_TBL VALUES ( '119','ASSORTED MASKS','4.95' )
select * from CRASHCOURSE.dbo.EMPLOYEE_TBL select * from EMPLOYEE_TBL select * from EMPLOYEE_PAY_TBL select * from CUSTOMER_TBL select * from ORDERS_TBL select * from PRODUCTS_TBL
-- 不相等
select E.EMP_ID, E.LAST_NAME, P.POSITION from EMPLOYEE_TBL E, EMPLOYEE_PAY_TBL P where E.EMP_ID<>P.EMP_ID ;
--导表sql server select * into intoproducts_tmp from products_tbl
create table xx as( select...) --oracle
select s.city, p.pay_rate, p.salary into EMP_PAY_TMP from CRASHCOURSE.dbo.employee_tbl s left join CRASHCOURSE.dbo.employee_pay_tbl p on s.emp_id=p.emp_id
select prod_desc, prod_id, cost from CRASHCOURSE.dbo.products_tbl where cost< 20 order by prod_desc asc;
--order by 1,2,3 列顺序
select * from CRASHCOURSE.dbo.products_tbl where prod_id in ('13','9','87','119')
--exist 例子
select
cost from CRASHCOURSE.dbo.products_tbl where cost <100 order by cost select cost from CRASHCOURSE.dbo.products_tbl where exists( select cost from CRASHCOURSE.dbo.products_tbl where cost <100 ) order by cost
select count(ord_num), sum(qty), sum(qty)*1.00/count(ord_num) avg_qty from CRASHCOURSE.dbo.orders_tbl
select sum(salary) from CRASHCOURSE.dbo.employee_pay_tbl group by salary
select City, count(*)--行数 from CRASHCOURSE.dbo.employee_tbl group by
--emp_pay_tmp select s.city, p.pay_rate, p.salary from CRASHCOURSE.dbo.employee_tbl s left join CRASHCOURSE.dbo.employee_pay_tbl p on s.emp_id=p.emp_id select s.city, avg(p.pay_rate) avgpayrate, avg(p.salary) avgsalary from CRASHCOURSE.dbo.employee_tbl s left join CRASHCOURSE.dbo.employee_pay_tbl p on s.emp_id=p.emp_id group by city;
select s.city, avg(p.pay_rate) avgpayrate, avg(p.salary) avgsalary from CRASHCOURSE.dbo.employee_tbl s left join CRASHCOURSE.dbo.employee_pay_tbl p on s.emp_id=p.emp_id group by city having s.city in ('indianapolis','whiteland') order by 2 ,3;
select s.city, max(p.pay_rate), min(p.salary) from CRASHCOURSE.dbo.employee_tbl s left join CRASHCOURSE.dbo.employee_pay_tbl p on s.emp_id=p.emp_id group by city
/* ROLLUP和CUBE 用法 Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是Group by ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。 如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。 grouping_id()可以美化效果。除了使用GROUPING函数,还可以使用GROUPING_ID来标识GROUP BY的结果。 也可以 Group by Rollup(A,(B,C)) ,Group by A Rollup(B,C),…… 这样任意按自己想要的形式结合统计数据,非常方便。 Rollup():分组函数可以理解为group by的精简模式,具体分组模式如下: Rollup(a,b,c): (a,b,c),(a,b),(a),(全表) Cube():分组函数也是以group by为基础,具体分组模式如下: cube(a,b,c):(a,b,c),(a,b),(a,c),(b,c),(a),(b),(c),(全表) */ select e.city, e.zip, AVG(p.pay_rate), AVG(p.salary) from EMPLOYEE_TBL E inner join EMPLOYEE_PAY_TBL P on e.EMP_ID=p.EMP_ID group by e.city,e.zip order by city,zip --------------- select e.city, e.zip, AVG(p.pay_rate), AVG(p.salary) from EMPLOYEE_TBL E inner join EMPLOYEE_PAY_TBL P on e.EMP_ID=p.EMP_ID group by rollup (e.city,e.zip) select e.city, e.zip, AVG(p.pay_rate), AVG(p.salary) from EMPLOYEE_TBL E inner join EMPLOYEE_PAY_TBL P on e.EMP_ID=p.EMP_ID group by cube (e.city,e.zip)
select city, AVG(pay_rate), avg(salary) from emp_pay_tmp where city<> 'greewood' group by city having avg(salary)>20000 order by 3
--coalesce,按顺序,显示第一个不是null的 单元格 select * from EMPLOYEE_PAY_TBL select EMP_ID, coalesce(BONUS,salary,pay_rate) from EMPLOYEE_PAY_TBL
select ascii('A')
65
select emp_id, concat(last_name,',',first_name) name, concat(substring(emp_id,1,3),'-', substring(emp_id,4,2),'-', substring(emp_id,6,4) ) ID from EMPLOYEE_TBL
select getdate();
select now();
select date_hire, dateadd(month,1,date_hire) from EMPLOYEE_PAY_TBL;
select p.PROD_desc, o.QTY from PRODUCTS_TBL p, ORDERS_TBL o where p.PROD_ID=o.PROD_ID select p.PROD_desc, o.QTY from PRODUCTS_TBL p left outer join ORDERS_TBL o ON p.PROD_ID=o.PROD_ID;
--查询表结构 sp_help orders_tbl
sp_columns orders_tbl
--union 显示不重复
select emp_id from EMPLOYEE_TBL union select emp_id from EMPLOYEE_pay_TBL;
--不相关查询
select PROD_DESC from PRODUCTS_TBL union select LAST_NAME from EMPLOYEE_TBL;
--xml
select salary, pay_rate from EMP_pay_tmp for xml auto
select count(*), count(1), count(2), count(3), count(100) from EMP_PAY_TMP
--oracle
http://blog.csdn.net/szstephenzhou/article/details/8446481 Oracle 中count(1) 和count(*) 的区别
select count(1), count(3), count(100), count(*) from sc