• SQl_入门经典_code


    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'
    
    )
    View Code

     

    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

  • 相关阅读:
    【Jest】笔记二:Matchers匹配器
    【爬虫】如何用python+selenium网页爬虫
    【mysql-server】遇到的坑
    【puppeteer】前端自动化初探(一)
    强制360谷歌使用谷歌内核
    实时获取input输入框中的值
    什么是单页面
    如何更改Apache的根目录指向
    iphone上点击div会出现半透明灰色背景以及margin失效
    event.currentTarget和event.target的区别
  • 原文地址:https://www.cnblogs.com/albertzz1987/p/7999760.html
Copyright © 2020-2023  润新知