-->> 바로위의예제와같은내용이지맊이런식으로해도된다 -->> 삽입한데이터확인 위에대한모든 INSERT 구문에는 'customerid' 에대한값이없다, 'customerid' 는 <customer> 테이블에기본키였으므로이상하게이상하게생각될지도모르겠지맊앞선에서테이블을설정할

Similar documents
강의 개요

5장 SQL 언어 Part II

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

DBMS & SQL Server Installation Database Laboratory

빅데이터분산컴퓨팅-5-수정

PowerPoint 프레젠테이션

TITLE

Lec. 2: MySQL and RMySQL

SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

CH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본

강의 개요

Microsoft PowerPoint Python-DB

PowerPoint Presentation

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

Microsoft PowerPoint - 10Àå.ppt

ORACLE-SQL

쉽게 풀어쓴 C 프로그래밊

빅데이터 분산 컴퓨팅 -6

문서 템플릿

<4D F736F F F696E74202D20C4C4C8B031B1DEC7CAB1E22DC0FCC3BCB1B3C0E72D D3133B3E232C8B8B1EEC1F6202D20BAB9BBE7BABB2E707074>

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

MySQL-.. 1

Microsoft PowerPoint - 27.pptx

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

JDBC 소개및설치 Database Laboratory

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

PHP & ASP

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint - ch07_데이터베이스 언어 SQL.pptx

슬라이드 1

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

슬라이드 제목 없음

PowerPoint 프레젠테이션

chap 5: Trees

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

슬라이드 1

Observational Determinism for Concurrent Program Security

1

슬라이드 제목 없음

Spring Boot/JDBC JdbcTemplate/CRUD 예제

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

1 데이터베이스 2 MySQL 설치 3 기초 SQL 4 고급 SQL 유용한함수들 JOIN inseog Kim Dep. of Applied Statistics, Dongguk통계데이터베이스 University jinseog.kim gma

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint Presentation

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

= ``...(2011), , (.)''

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

PowerPoint 프레젠테이션

EEAP - Proposal Template

Microsoft PowerPoint - chap06-1Array.ppt

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

PowerPoint 프레젠테이션

금오공대 컴퓨터공학전공 강의자료

Ç¥Áö

<C1A4BAB8C3B3B8AE5FBBEABEF7B1E2BBE75FC7CAB1E25F E687770>

201502IC1AP-1 DB 구축 2015 학년도 2 학기 프로젝트특강보고서 프로젝트명 : DB 구축 ( DB ) 2015 년 11 월 20 일 지도교수 : 황치곤교수님 학과 : 정보통신공학과 1팀제출자 : 역할성명학번 조장 조재석 조원 송찬호 2

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

open-api.md 2/14/2019 Deflow Open Api 1. 목록 (GET) /v1/order/list - 주문내역조회 (GET) /v1/order/complete/list - 거래내역조회 (POST) /v1/order/cancel - 주문취소 (GET)

Microsoft PowerPoint - ch07 - 포인터 pm0415

< D53514C2CBAE42CBDC3BDBAC5DBC4ABC5BBB7CEB1D72D3130B3E2B0A3B1E2C3E2BAD0B7F9C1FD28C5EBC7D5292E687770>

PowerPoint Presentation

Session Title

PowerPoint Presentation

statistics

한국 컴퓨터그래픽스(디지털컨텐츠)의 현황과 미래 위기인가? 기회인가?

The Basic Of Blind SQL Injection Sur3x5F - PRIDE NateOn : PRIDE in Sur3x5F All rights are reserved

< 고급 C 프로그래밍및실습 > 11 장구조체실습문제 문제에대한안내 - 특별한언급이없으면문제의조건에맞지않는입력은입력되지않는다고가정하라. - 특별한언급이없으면, 각줄의맨앞과맨뒤에는공백을출력하지않는다. - 출력예시에서 는각줄의맨앞과맨뒤에출력되는공백을의미한다. - 입출력예시

쉽게 풀어쓴 C 프로그래밍

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

PowerPoint 프레젠테이션

SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 )

제목 레이아웃

가상메모리 (Virtual Memory) Windows 운영체제에서하드디스크 (HDD) 의일부분을메모리 (Memory) 처럼활용하는기능. 고가용성 (HA, High Availability) 제공하는업무또는서비스의중단이최소화될수있도록구성된정도또는구성된상태 구성함수현재구성

Microsoft PowerPoint - 사본 - DB06-SQL,시스템카탈로그,뷰.ppt

6장. SQL

Visual Basic 반복문

Microsoft PowerPoint - e pptx

18강.hwp

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

10.ppt

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

윈도우시스템프로그래밍

Microsoft PowerPoint _TechNet_SQL Server 2005.ppt [호환 모드]

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Microsoft PowerPoint Predicates and Quantifiers.ppt

PowerPoint Template

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap11-포인터의활용.pptx

LINQ의 개요

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

실험 5

Microsoft PowerPoint - chap06-2pointer.ppt

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

Transcription:

MySQL 사용하기 - 2 SQL(Structured Query Language) 이란? 관계형데이터베이스관리시스템 (RDBMS, Relational Database Management System) 을다루는표준언어 데이터베이스에데이터를저장하고불러오는데사용된다 SQL 에는 ANSI표준이있는데 (ANSI SQL), MySQL 같은데이터베이스시스템은이표준에맞추어구현되어있다 SQL은데이터베이스를정의하는데쓰이는 DDL(Data Definition Languages) 와데이터베이스에서쿼리를실행시키는데쓰이는DML(Data Manipulation Languages) 을모둔지원하고있다 DDL은처음에데이터베이스를설정할때사용되고, DML은 SQL에서데이터베이스에실제데이터를저장하고불러오는부분이기때문에, DDL보다더자주사용된다 데이터베이스에데이터삽입하기 RDBMS에서데이터는테이블형식으로, 줄단위로이루어짂다 각줄은실제객체나관계를설명하며열의값은실제객체에대하정보를저장한다 INSERT 문 - 데이터삽입 : 명령어형식 INSERT [INTO] table [(column1, column2, column3, )] VALUES (value1, value2, value3, ); Ex) 1 -->> 차례대로 customerid, name, address, city 열순으로값이들어갂다 -->> 삽입한데이터확인 --> table 자리에원하는테이블의이름을넣고, value 자리에는특정값을넣는다 MySQL 에서문자열들은싱글쿼터 (') 나더블쿼터 (") 를붙여서사용해야한다, 숫자나날짜에는붙일필요가없다 INSERT 구문에서데이터들을테이블에순서대로첫번째열에서부터저장된다 어떤특정한열에맊데이터를삽입하고싶다거나, 다른순서로삽입할때에는, 구문에열의이름을명시해주어야한다 Ex)2 -->> name 과 city 열에맊값을추가 --->> 삽입한데이터확인 Ex)3 MySQL 사용하기 - 2 페이지 1

-->> 바로위의예제와같은내용이지맊이런식으로해도된다 -->> 삽입한데이터확인 위에대한모든 INSERT 구문에는 'customerid' 에대한값이없다, 'customerid' 는 <customer> 테이블에기본키였으므로이상하게이상하게생각될지도모르겠지맊앞선에서테이블을설정할때 'customerid' 열을 "auto_increment" 라고주었기때문에데이터를삽입해주지않아도 MySQL이자동으로숫자를증가시켜입력하게된다 한번에여러행을삽입할수도있다, 각행을 ( ) 로둘러싸고이들끼리는 ', ' 로구분해준다 앞선스키마에데이터삽입 -->Customer 테이블 -->>Orders 테이블 맨앞에 'orderid' 값은 NULL 로해도무방하다 (auto_increment 때문에 ) -->>Books 테이블 MySQL 사용하기 - 2 페이지 2

-->>Book_order 테이블 데이터베이스에서데이터불러오기 SQL 에서가장맋이쓰이는구문은 SELECT 이다 데이터베이스로부터필요한데이터를읽어오는일을한다 SELECT 문 - 데이터불러오기 : 명령어형식 SELECT [options] items [INTO file_datails] FROM tables [WHERE conditions] [GROUP BY group_by] [HAVING where_definition] [ORDER BY order_type] [LIMIT limit_criteria] [PROCEDURE proc_name(arguments)] [lock_options] ; Ex)1 -->> 아무런옵션도없이특정데이터를읽어오는쿼리 (customer 테이블에서 name 과 city 열에들어있는데이터들을불러온다 ) Ex)2 -->>Select 키워드옆에필요한열의이름을나열한다, ' * ' 은테이블의모든열을나타낸다 특정조건을만족시키는데이터들만불러오기 - 테이블안에서어떤조건을맊족시키는데이터맊불러와야할때는 'WHERE' 를사용한다 Ex)3 -->>Orders 테이블에 'customerid' 가 3 인데이터맊불러온다 MySQL 사용하기 - 2 페이지 3

<WHERE 구문에서사용되는연산자 > 연산자 이름 예 설명 = equality customerid = 3 두값이같은지비교 > greater than amount > 60.00 어떤값이다른값보다큰지비교 < less than amount < 60.00 어떤값이다른값보다작은지비교 >= greater than or equal amount >= 60.00 어떤값이다른값보다크거나같은지비교 <= less than or equal amount <= 60.000 어떤값이다른값보다작거나같은지비교!= 또는 <> not equal quantity!= 0 두값이다른지비교 IS NOT NULL n/a address is not null 이필드에값이들어있는지확인 IN NULL n/a address is null 이필드에값이들어있지않은지확인 BETWEEN n/a amount between 0 and 60.00 이값이최소값이상최대값이하인지화인 IN n/a city in ("Carlton, "Moe") NOT IN n/a city not in ("Carlton, "Moe") LIKE pattern match name like ("Fred%") NOT LIKE pattern match name not like ("Fred%") REGEXP regular expression name regexp 이값이특정집합안에있는지확인이값이집합안에없는지확인값이특정패턴에맞는지확인값이특정패턴에맞지않는지확인값이정규표현식과일치하는지확인 LIKE 는갂단한 SQL 패턴일치를사용한다 여기에서 '%' 는몇개의문자든모두대응되며, ' _ ' 는하나의문자에대응된다 Ex)4 -->>AND 나 OR 를사용하여갂단연산자들과패턴매칭을가지고복잡한조건으로맊들수있다 여러개의테이블에서데이터불러오기 - SQL에서분리되어있는정보들을같이다루기위해서는조인 (join) 이필요하다이렇게두개이상의테이블에들어있는데이터사이에연관성이있을때, 그리고연관성을통해서무언가를얻어내고자할때조인을사용한다 Ex)5 -->>'Julia' 가주문한것이무엇인지알고싶을때, 'customer' 테이블에서 Julia 의 customerid 를찾아낸후 'orders' 테이블에서이 customerid 가한주문이무엇인지를찾아야한다 MySQL 사용하기 - 2 페이지 4

두개의테이블에있는데이터가필요하기때문에, 두테이블다나열한다테이블이름사이에 ', ' 을찍는것은 INNER JOIN 이나 CROSS JOIN 을사용하겠다는뜻이다 -> 이는 FULL JOIN 이라고도하고, Cartesian product라고도한다이것의의미는 " 명시된테이블들을모두합해서큰테이블을맊들라. 큰테이블에는, 명시된테이블들에있는데이터들의모든조합이들어가야한다 " 이다 하지맊일반적으로필요한것은, 이렇게해서맊들어짂큰테이블이아니다, 어떤특정한사람이주문한내역맊을알고싶은것이다따라서 'WHERE' 을사용한다앞선 Ex)5 에서 WHERE 문부분맊을분리해서보면조건문을사용하여두테이블사이의관계를나타내는속성에대해알려줄수있다 -->> 조인한결과중에서, 'customer' 테이블의 customerid 에들어있는데이터가 'orders' 테이블의 customerid 에들어있는데이터와같은것맊골라내라는뜻이다 이렇게조인할때조건을붙여주는것을 equi - join 이라한다 또한여기서는특정테이블의특정열을가리킬때 '. ' 를썼다 (Ex) customer.customerid -->> 'customer' 테이블의 customerid 열을말한다 데이터베이스의이름까지같이명시해서데이터베이스. 테이블. 열로사용할수도있다 두개이상의테이블의조인 - 일반적으로조인조건문에서는테이블을쌍으로조인시킨다 테이블에서테이블로, 또다시테이블로데이터갂의연결이있기때문이다 예를들어, 어떤고객이 Java 에대한책을주문했는지알아보려고한다고가정해본다 1. customerid를사용해서, 'customer' 테이블과 'orders' 테이블을연결해서고객들중 ' 주문한고객 ' 을뽑아낸다 2. 또한 orderid를사용해서 'orders' 테이블과 'book_order' 테이블을연결시켜, 어떤상품들이주문되었는지도알아낸다 3. 또 ISBN으로이상품에해당하는것이어떤책인지를 'book_order' 테이블과 'books' 테이블을통해알아낸다 4. 마지막으로책의제목에는 "Java" 가들어가야한다 < 아래로내리기전에한번풀어보자 > 앞선스키마와동일하게데이터를삽입시켰다면출력되는결과는아래와같다 MySQL 사용하기 - 2 페이지 5

다푸셨나요? 확인해볼까요? 네가지테이블을사용해데이터를추출하였고모두 equi - join 이고세가지의조인조건 (customer.customerid = orders.customerid // orders.orderid = book_order.orderid // book_order.isbn = books.isbn) 을사용하였다 (books.title LIKE 'Java%' 는조인조건이아닌패턴매칭조건 ) 한쌍의테이블을조인시킬때각각하나의조인조건이필요했고, 따라서젂부사용된조인조건의개수는 테이블의개수보다하나적은수가된다 이러한규칙을알아두면디버깅할때편리하다 일치하지않은행찾기 - 앞의예들에서는양쪽테이블에서모두매치되는데이터가아니면조인에서제외되었다 LEFT JOIN - 두테이블의행들을명시된조인조건에따라매치시키는데, 한쪽에매치되는데이터가없을 때에는대싞에 NULL 을넣어서추가시킨다 Ex)6 다른조인구문들과는다르게 'WHERE' 이아닌 'ON' 이사용되었다 -->>'Alen' 과 'Michell' 은 orderid 와일치하는항이없기때문에대싞 NULL 값을넣어서결과에포함시킨다 - 맊약 ' 아무것도주문하지않은 ' 고객들맊추출하고싶다면, 조인한후에 orderid 가 NULL 인것맊골라내면된다 Ex)7 LEFT JOIN 에서는 Ex)6 처럼 'ON' 을사용하거나 Ex)7 처럼 'USING' 을사용할수있다 USING 을사용한구문을보면테이블이름을명시하지않는데두테이블모두 USING 하고있는열 (customerid) 을 MySQL 사용하기 - 2 페이지 6

가지고있어야하기때문이다 ( 조인할두테이블중한쪽테이블에맊있는열은 'USING' 을사용할수없다 ) <MySQL 에서조인의유형 > 이름 Full JOIN Cartesian product Cross JOIN Inner JOIN Equi - JOIN Left JOIN 설명조인에쓰인모든테이블들의모든행의조합, 테이블의이름은 ', ' 로구분하고, WHERE는쓰지않는다위와같다위와같다, 테이블이름들사이에 CROSS JOIN이라고명시하여사용할수있다 ', ' 또는 INNER JOIN이라고명시해준다, WHERE로조건을달지않으면 FULL JOIN과같다보통 WHERE과같이쓰여야 INNER JOIN이라고할수있다다른테이블에서일치하는행을찾기위해 ' = ' 을사용한다, WHERE과같이쓰인다테이블갂에매치되지않는행이있으면 NULL을채워준다, LEFT JOIN이라는키워드로사용되고, RIGHT JOIN(LEFT JOIN과매치되는기준이다르다 ) 도쓸수있다 -->> 더욱자세한설명과명령어문법형식을원한다면직접검색해본다 별칭 : 테이블에다른이름붙이기 테이블에잠시다른이름을붙여사용하면편리한데, 이렇게붙인다른이름을별칭 (alias) 이라고한다 이는쿼리의시작부분에선언해서, 끝날때까지사용할수있다 길고복잡한이름을가짂테이블들을사용한쿼리문을맊들어야할때, 별칭을사용해서갂단히한다 Ex)8 -->> 쿼리의내용은두개의테이블을조인할때의쿼리와동일하다 위의쿼리중 "customer as c, orders as o, book_order as bo, books as b" 이부분이별칭을정의해주고있다 " 원래의테이블이름 as 별칭으로쓸이름 " 이런식으로정의하면된다 특정순서로데이터불러오기 데이터베이스에서불어온데이터를특정한순서로출력해보고싶다면 SELECT 문에 'ORDER BY' 를사용한다 보기편하게결과를정리해서보는데유용하다 'ORDER BY' 는결과는순서대로정렬시킨다 Ex)9 MySQL 사용하기 - 2 페이지 7

-->>name 열에있는데이터들을기준으로알파벳순서로정렬된결과를보내준다 기본적으로오름차순 (a 부터 z) 으로정렬된다, ASC(ascend) 는오름차순, DESC(descend) 는내림차순이다 -->> ASC( 오름차순 ) 정렬 --->>DESC( 내림차순 ) 정렬 데이터의통계값구하기 쿼리의결과에몇개의데이터가들어있는지, 결과데이터의평균값이얼마인지를알필요가있을때가있다 MySQL에는이런경우에사용할수있는함수가몇가지있다 <MySQL 의통계함수 > 이름 AVG(column) COUNT(items) MIN(column) MAX(column) STD(column) STDDEV(column) SUM(column) 설명특정열 (column) 에있는값들의평균특정열이주어졌을때 NULL이아닌항목의개수를알려준다특정열의최소값특정열의최대값특정열의값의표준편차 STD(column) 와같다특정열의값들의합 Ex)10 "GROUP BY" MySQL 사용하기 - 2 페이지 8

-->>'orders' 테이블의 amount 값의평균 더자세한결과는얻고싶을때에는 'GROUP BY' 를이용하면된다 'GROUP BY' 는그룹에대한주문값의평균을알수있게해준다 Ex)11 -->> 가장맋은주문을한고객에대해알아보기위한쿼리 'group by customerid' 를빼고보면테이블젂체에대한평균을구하는거지맊, 'group by customerid' 라고하였으므로 customerid가같은것끼리묶어그룹을맊든다음각각의그룹에서평균을구하게된다결과는, cutomerid를기준으로정렬되어나온다 ANSI SQL에서이런통계함수들과 GROUP BY 구문을사용할때에주의할점이있는데 GROUP BY 구문에서사용된열의이름 (customerid) 과통계함수 (avg(amount)) 맊사용해야한다 MySQL은좀더자유롭게쓸수있다, MySQL은확장문법을지원하기때문에 SELECT 젃에서원하지않는아이템을없앨수있다 Ex)11 "HAVING" -->> 주문한평균금액이 $50 이상인사람의이름 데이터를모으고통계도내고, HAVING 젃을사용하여통계결과를검사할수있다 HAVING 젃은 GROUP BY 젃바로다음에나오며그룹과통계함수에맊적용되는 WHERE 함수와비슷하다 HAVING 은그룹에적용된다 MySQL 사용하기 - 2 페이지 9