IT/Mysql

Mysql - substr, in, left outer join, group by, FOREIGN KEY

노마드오브 2018. 7. 23. 22:25

SELECT SUBSTR(Ename, 1, 1)  FROM EMP order by ename ;

SELECT *  FROM EMP ;

SELECT *  FROM EMP where SUBSTR(Ename, 1, 1) <= 'F' and SUBSTR(Ename, 1, 1) >= 'A' order by ename;


SELECT SUBSTR('HELLO JAVA', 7, 2);


SELECT * FROM DEPT;


SELECT * 

FROM EMP, DEPT

WHERE JOB IN (SELECT JOB 

                FROM EMP 

               WHERE DEPTNO = 20)

AND EMP.DEPTNO = 10

AND EMP.DEPTNO = DEPT.DEPTNO;

               

----


CREATE TABLE 학과 ( 

   학과번호 INT,

   학과명 VARCHAR(20),

PRIMARY KEY (학과번호)   

);


SELECT * FROM 학과;

SELECT * FROM 교수;


INSERT INTO 학과 (학과번호, 학과명) VALUES (105, '컴퓨터공학과');

INSERT INTO 교수 (교수번호, 이름, 학과번호, 직급, 급여) VALUES (7, '홍길동', 103, '종교수', 300);


CREATE TABLE 교수 ( 

   교수번호 INT,

   이름 VARCHAR(10),

   학과번호 INT,

   직급 VARCHAR(20),

   급여 INT,

PRIMARY KEY (교수번호),

FOREIGN KEY (학과번호) REFERENCES 학과(학과번호)  

);


SELECT * FROM 교수 WHERE 직급 = '전임강사';

SELECT * FROM 교수 WHERE 급여 <= 400;


SELECT 이름, 학과명, 급여 

FROM 교수, 학과

WHERE 교수.학과번호 = 학과.학과번호

AND 학과명 LIKE "%컴퓨터%";


SELECT * 

FROM  학과

WHERE 학과명 LIKE "%컴퓨터%";


이름, 학과명, 급여 ;

SELECT *

FROM 교수, 학과

WHERE 교수.학과번호 = 학과.학과번호;


SELECT 학과명

FROM 학과

LEFT OUTER JOIN 교수

ON 교수.학과번호 = 학과.학과번호

WHERE 교수번호 IS NULL;


SELECT * FROM 학과;

SELECT * FROM 교수;


SELECT * FROM 학과

WHERE 학과번호 IN (SELECT 학과번호 FROM 교수 WHERE 직급 = '조교수');


SELECT 학과명, AVG(급여)

FROM 교수, 학과

WHERE 교수.학과번호 = 학과.학과번호

AND 교수.학과번호 IN (SELECT 학과번호 FROM 교수 WHERE 직급 = '조교수')

GROUP BY 학과명;


SELECT 교수번호, 이름, 급여

FROM 교수, 학과

WHERE 교수.학과번호 = 학과.학과번호

AND 학과명 = "컴퓨터공학과"

AND 직급 = "정교수";


----


CREATE TABLE 스마트폰 ( 

   제품번호 VARCHAR(10),

   제품명 VARCHAR(20),

   제조사번호 INT

);


CREATE TABLE 제조사 ( 

   제조사번호 INT,

   제조업체 VARCHAR(20)

);



INSERT INTO 스마트폰 (제품번호, 제품명, 제조사번호) VALUES ('P01', 'G5', 1);

INSERT INTO 스마트폰 (제품번호, 제품명, 제조사번호) VALUES ('P02', 'G6', 1);

INSERT INTO 스마트폰 (제품번호, 제품명, 제조사번호) VALUES ('P03', 'G7', 1);

INSERT INTO 스마트폰 (제품번호, 제품명, 제조사번호) VALUES ('P04', 'GALAXY S7', 2);

INSERT INTO 스마트폰 (제품번호, 제품명, 제조사번호) VALUES ('P05', 'GALAXY S8', 2);

INSERT INTO 스마트폰 (제품번호, 제품명, 제조사번호) VALUES ('P06', 'GALAXY S9', 2);

INSERT INTO 스마트폰 (제품번호, 제품명, 제조사번호) VALUES ('P07', 'PIXEL', 3);


INSERT INTO 제조사 (제조사번호, 제조업체) VALUES (1, 'LG');

INSERT INTO 제조사 (제조사번호, 제조업체) VALUES (2, 'SAMSUNG');

INSERT INTO 제조사 (제조사번호, 제조업체) VALUES (3, 'HTC');

INSERT INTO 제조사 (제조사번호, 제조업체) VALUES (4, 'XIAOMI');


SELECT 제품명, 제조업체 

FROM 스마트폰, 제조사

WHERE 스마트폰.제조사번호 = 제조사.제조사번호;


SELECT 제조업체, 제품명, 스마트폰.제품번호

FROM 제조사

LEFT OUTER JOIN 스마트폰

ON 제조사.제조사번호 = 스마트폰.제조사번호 ;


SELECT 제조업체, COUNT(*)

FROM 스마트폰

LEFT OUTER JOIN 제조사

ON 스마트폰.제조사번호 = 제조사.제조사번호

GROUP BY 제조업체;


SELECT * FROM 제조사;

SELECT * FROM 스마트폰;


SELECT 제조업체, COUNT(*) AS 제품수

FROM 스마트폰, 제조사

WHERE 스마트폰.제조사번호 = 제조사.제조사번호

GROUP BY 제조업체

ORDER BY 제조업체 DESC;