Publicité

Contenu connexe

Présentations pour vous(20)

Publicité
Publicité

MySQL JOIN

  1. 데이터베이스개론ALTER, FOREIGN KEY, JOIN NHN NEXT 정호영 나눔고딕및나눔고딕코딩글꼴을설치해주세요.
  2. 목표 -ALTER명령을사용할수있다. -테이블에외래키제약조건을추가할수있다. -여러가지JOIN에대해이해한다.
  3. 테이블을만들어봅시다. user name (varCHAR32) money(dec10,2) CREATE TABLE user ( name VARCHAR(32), money DEC(10,2) );
  4. uidCHAR(8)을추가해봅시다. user uid(CHAR 8) name (VARCHAR 32) money(DEC 10,2) score (INT) DROP TABLE IF EXISTS user; CREATE TABLE user ( uidCHAR(8), name VARCHAR(32), money DEC(10,2), score INT ); 테이블을삭제하지않고스키마를변경하고싶다면?
  5. ALTER명령으로테이블스키마를변경할수있습니다. user uid(CHAR 8) name (VARCHAR 32) money(INT) score (INT) DROP TABLE IF EXISTS user; CREATE TABLE user ( name VARCHAR(32), money INT, score INT ); ALTER TABLE user ADD COLUMN uidCHAR(8) FIRST;
  6. 추가적인ALTER명령들을실행해봅시다. --ALTER TABLE user --ADD COLUMN uidCHAR(8) first; ALTER TABLE user ADD COLUMN birth date AFTER name; ALTER TABLE user ADD PRIMARY KEY (uid); ALTER TABLE user DROP COLUMN score; ALTER TABLE user CHANGE COLUMN money moneydec(10,2); ALTER TABLE user DROP COLUMN score;
  7. 테이블을하나더추가합니다. CREATE TABLE trade( tidINT, item VARCHAR(32), price DEC(10,2), seller_id(CHAR), PRIMARY KEY(tid) ); trade tid(int) item (varCHAR32) price (dec10, 2) seller_id(CHAR 8)
  8. 외래키에대해외래키제약조건을추가해봅시다. ALTER TABLE trade ADD FOREIGN KEY (seller_id) REFERENCES user(uid); trade tid(int) item (varCHAR32) price (dec10, 2) seller_id(CHAR 8) user uid(CHAR 8) name (VARCHAR 32) money(INT) score (INT)
  9. 처음부터외래키컬럼을지정할수도있습니다. trade tid(int) item (varCHAR32) price (dec10, 2) seller_id(CHAR 8) user uid(CHAR 8) name (VARCHAR 32) money(INT) score (INT) CREATE TABLE trade( tidINT, item VARCHAR(32), price DEC(10,2), seller_id(CHAR), PRIMARY KEY(tid), FOREIGN KEY(seller_id) REFERENCES user(uid) );
  10. 외래키제약조건을삭제하려면? SHOW CREATE TABLE tradeG ALTER TABLE trade DROP FOREIGN_KEY 'trade_ibfk_1';
  11. 오늘의실습테이블만들기
  12. 팁:db백업하기 $ mysqldump-u popi-p popidb> backup.sql
  13. 스크립트로부터직접넣기 $ mysql-u popi-p popidb< backup.sql
  14. JOIN 두테이블을합쳐서하나로보여주는기능
  15. *참고:유니온이란? 유니온=합집합 조인 유니온:속성들의순서와자료형이같을때만가능 JOIN = UNION =
  16. 유니온(Union) 학생과교수의이름을출력하세요. SELECT name FROM stu UNION SELECT name FROM prof SELECT name FROM stu UNION SELECT name FROM prof
  17. 카테시안곱 이름의유래?RenéDescartes=RenatusCartesius
  18. 크로스조인(CrossJoin) 크로스조인 =두테이블의카테시안곱 SELECT * FROM stu CROSS JOIN prof;
  19. 크로스조인에WHERE문을추가해봅시다. 학생과지도교수정보를출력하세요. SELECT * FROM stu CROSS JOIN prof WHERE stu.pid= prof.pid;
  20. 내부조인(InnerJoin) 내부조인 =크로스조인+조건필터링 INNER는생략가능 SELECT * FROM stu INNER JOIN prof ON stu.pid= prof.pid;
  21. 그런데사라진정보가있습니다. SELECT * FROM stu INNER JOIN prof ON stu.pid= prof.pid;
  22. 조인의형식 INNERJOIN중에서 가장많이사용하는‘=’을조인조건으로사용하는경우 동등조인(EQI–JOIN)이라고합니다. SELECT 컬럼이름,... FROM 테이블이름 [INNER] JOIN 조인테이블 ON 조인조건;
  23. 세타조인 내부조인중동등조인을제외한나머지들 "지도교수가구승모가아닌학생의정보를보여주세요." SELECT * FROM stus JOIN prof p ON s.pid<> p.pid WHERE p.name = '구승모';
  24. 여러테이블조인 JOIN도닫힌연산이라여러번조인이됩니다. 1번학생이듣고있는수업과담당교수이름을표시해보세요.
  25. 여러테이블조인 1번학생의이름,수강수업명,강의교수이름을표시해보세요. SELECT s.id, s.name as sname, c.name as cname, p.name as pname FROM stus JOIN sugangg ON s.id = g.uid JOIN class c ON g.cid= c.cid JOIN prof p ON c.pid= p.pid WHERE s.id = 1;
  26. 외부조인(OuterJoin) 내부조인을할때조인조건에맞지않는레코드가사라집니다. 사라진레코드를보려면외부조인을사용합니다. 외부조인에는LEFT,RIGHT,FULL의3종류가있습니다. MySQL은FULLOUTERJOIN을지원하지않습니다.
  27. LeftJoin 왼쪽테이블의조건에맞지않는레코드도보여줍니다. SELECT * FROM stus LEFT JOIN prof p ON s.pid= p.pid;
  28. RightJoin 오른쪽테이블의레코드를보여줍니다. INSERT INTO prof values(3, '정호영'); SELECT * FROM stus RIGHT JOIN prof p ON s.pid= p.pid;
  29. FullOuterJoin 양쪽다보여줘야하는데MySQL에없습니다. 어떻게해야할까요?
  30. THANK YOU!!!
Publicité