<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/style/rss/style.xsl" type="text/xsl" media="screen"?>
<rss version="2.0">
	<channel>
		<title>DBA를 꿈꾸는 사람~</title>
		<link>http://afeleia.tistory.com/</link>
		<description>개인 적인 공부 내용을
까먹지 않기 위해 적는
나만의 공간??</description>
		<language>ko</language>
		<pubDate>Mon,  6 Oct 2008 17:25:10 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<image>
		<title>DBA를 꿈꾸는 사람~</title>
		<url><![CDATA[http://cfs4.tistory.com/upload_control/download.blog?fhandle=YmxvZzczNjJAZnM0LnRpc3RvcnkuY29tOi9hdHRhY2gvMC8wODAwMDAwMDAwMDAuanBn]]></url>
		<link>http://afeleia.tistory.com/</link>
		<description>개인 적인 공부 내용을
까먹지 않기 위해 적는
나만의 공간??</description>
		</image>
		<item>
			<title>[MySql] Obtaining Database Metadata</title>
			<link>http://afeleia.tistory.com/30</link>
			<description>&lt;P&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;데이터베이스는 데이터를 저장하고 있지만 데이터베이스가 어떻게 구성되어 있는지에 대한 정보는 메타데이터이다. MySQL은 데이터베이스 구조의 여러방면을 위한 메타데이터를 만든다. 데이터 베이스와 테이블의 이름과 테이블에 있는 컬럼과 인덱스들 또는 스토어드 루틴(Stored routine)의 정의들을 확인 할 수 있다.&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;SHOW와 Mysqlshow는 매우 오래전 release 부터 사용 가능했다. MySQL5 에서 메타데이터를 접근하는 것은 새로운 두가지 방법을 통하여 향상됐다.&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp; 1) INFORMATION_SCHEMA 데이터 베이스가 제공된다. 이 것은 show와 같이 MySQL에 특화된 것이 아니라 표준 SQL을 따른다.&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp; 2) SHOW 구문 문법은 보여줄 row를 기술하기 위한 where절을 지원하게끔 확장됐다.(몇몇 SHOW 구문은 패턴 매치되는 결과를 보여주기 위해서 like절을 지원했지만, where절은 좀 더 유연한다.)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-SIZE: 18pt&quot;&gt;&lt;br /&gt;
&amp;nbsp;1. INFORMATION_SCHEMA&lt;br /&gt;
&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp; -데이터베이스의 메타데이터를 위한 중앙 저장소 같은 역할을 제공해 준다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;-디시크에 저장되지 않는 가상의 데이터베이스이지만 다른 데이터베이스처럼 테이블을 가지고 있고 SELECT를 사용해서 테이블 내용에 접근할 수 있다. 다음은 테이블 이름 리스트를 조회하는 예제이다.&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&amp;nbsp;&amp;nbsp; mysql&amp;gt; SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; WHERE TABLE_SCHEMA = &#039;INFORMATION_SCHEMA&#039;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; ORDER BY TABLE_NAME;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 테이블이 보여주는 정보의 유형은 다음과 같다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1) CHARACTER_SETS &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: 사용 가능한 케릭터 셋에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2) COLLATIONS &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: 각각의 케릭터 셋을 위한 collation에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3) COLLATION_CHARACTER_SET_APPLICABILITY&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:: 각각의 collation 에 적용되는 케릭터 셋에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 4) COLUMNS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: 테이블 안에 컬럼에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 5) COLUMN_PRIVILEGES&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: MySQL 사용자에 가지고 있는 컬럼 권한에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 6) KEY_COLUMN_USAGE&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: KEY 컬럼 제약조건(Constraint)에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 7) ROUTINES&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: Stored Procedure 와 Stored Function에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 8) SCHEMATA&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: 데이터베이스에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 9) SCHEMA_PRIVILEGES&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: MySQL 사용자가 가지고 있는 데이터베이스에 대한 권한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 10) STATISTICS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: 테이블 인덱스에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 11) TABLES&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: 데이터베이스 안에 있는 테이블에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;12) TABLE_CONSTRAINTS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: 테이블 constraint 에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 13) TABLE_PRIVILEGES&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: MySQL 사용자가 가지고 있는 테이블 권한에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 14) TRIGGERS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: 데이터베이스 안에 있는 트리거에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;15) USER_PRIVILEGES&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: MySQL 사용자가 가지고 있는 global 권한에 대한 정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;16) VIEWS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :: 데이터베이스 안에 있는 뷰에 대한정보&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-INFORMATION_SCHEMA 는 이름, 테이블, 컬럼들은 대소문자를 구분하지 않는다.&lt;br /&gt;
&amp;nbsp;-SELECT 구문을 사용할 때 어떤 특징이라도 사용할 수 있는 자유가 있다.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;FONT color=#5c7fb0&gt;&amp;nbsp;&amp;nbsp; 0. 조회할 컬럼을 특정하게 지정할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. where 절에 특정한 조건을 사용해서 리턴되는 row를 제한할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. group by 또는 order by를 이용해 정렬이나 그룹화 시킬 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. join, union, subquery 등을 사용할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. CREATE TABLE ... SELECT or INSERT ... SELECT 를 사용해서 다른 테이블 안으로 INFORMATION_SCHEMA 쿼리의 결과를 가져올 수 있다. 이것은 결과를 저장하고 다른 구문을 나중에 사용 가능하게 한다.&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-다음 예제들은 INFORMATION_SCHEMA에서 SELECT 하는 여러가지 방법들이다.&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&amp;nbsp; 0. SELECT TABLE_NAME, ENGINE FROM INFORMATION_SCHEMA.TABLES&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE TABLE_SCHEMA = &#039;world&#039;;&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp; //주어진 데이터베이스 안에 있는 테이블들이 사용하는 스토리지 엔진을 나열하기&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&amp;nbsp;&amp;nbsp;0. SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM INFORMATION_SCHEMA.COLUMNS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE DATA_TYPE = &#039;set&#039;;&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp; //set 컬럼을 포함하는 모든 테이블을 찾아라&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&amp;nbsp; 0. SELECT CHARACTER_SET_NAME, COLLATION_NAME&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM INFORMATION_SCHEMA.COLLATIONS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE IS_DEFAULT = &#039;Yes&#039;;&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp; //각각의 캐릭터 셋을 위한 디폴트 collation을 보여라&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&amp;nbsp; 0. SELECT TABLE_SCHEMA, COUNT(*)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM INFORMATION_SCHEMA.TABLES;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GROUP BY TABLE_SCHEMA;&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp; //각각의 데이터베이스 안에 있는 테이블 개수를 보여라&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-INFORMATION_SCHEMA 는 읽기만 가능하다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 18pt&quot;&gt;2. SHOW&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;-MySQL은 메타데이터의 종류를 각각 리턴하는 show 구문집합을 지원한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;1)SHOW DATABASES;&amp;nbsp; //이용 가능한 데이터베이스 이름을 보여준다.&lt;br /&gt;
&amp;nbsp;2)SHOW TABLES; //디폴트 데이터베이스 안에 있는 테이블들을 보여준다.&lt;br /&gt;
&amp;nbsp;3)SHOW COLUMNS(=FIELDS); //FROM 절에 주어진 테이블의 컬럼 구조정보를 보여준다.&lt;br /&gt;
&amp;nbsp;4)SHOW FULL TABLES; 과 SHOW FULL COULUMNS; 는 추가정보를 보여준다.&lt;br /&gt;
&amp;nbsp;5)SHOW KEYS(=INDEX); //테이블이 가지고 있는 인덱스에 대한 정보를 보여준다.&lt;br /&gt;
&amp;nbsp;6) 1),2),3) 은 LIKE 절을 지원한다.&lt;br /&gt;
&amp;nbsp;7)SHOW는 WHERE 절의 사용을 지원한다. WHERE는 LIKE보다 융통성이 있다.&lt;br /&gt;
&amp;nbsp;8)SHOW CHARACTER SET; //이용 가능한 케릭터 셋을 보여준다.&lt;br /&gt;
&amp;nbsp;9)SHOW COLLATION; //각각의 케릭터 셋을 위한 collation을 보여준다. &lt;/STRONG&gt;&lt;/P&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-30-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-30-1&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;2;i++){var el=document.getElementById(&#039;ccl-icon-30-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>INFORMATION_SCHEMA</category>
			<category>show</category>
			<category>SHOW COLUMNS</category>
			<category>SHOW DATABASES</category>
			<category>SHOW TABLES</category>
			<category>스키마</category>
			<category>인포메이션</category>
			<category>인포메이션 스키마</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/30</guid>
			<comments>http://afeleia.tistory.com/30#entry30comment</comments>
			<pubDate>Mon,  6 Oct 2008 17:13:21 +0900</pubDate>
		</item>
		<item>
			<title>[MySql] 사용자 변수</title>
			<link>http://afeleia.tistory.com/29</link>
			<description>&lt;br /&gt;
&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;사용자 변수는 @var_name으로 쓰여지고 integer, real, string, NULL 값등이 세팅될 것이다. SET 구문은 = 이나 := 같은 대입연산자 뒤에 값을 할당할 수 있다.&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;&amp;nbsp;&amp;nbsp; mysql&amp;gt; SET @var1 = &#039;USA&#039;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; mysql&amp;gt; SET @var2 := &#039;GBR&#039;;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;select와 같은 다른 컨텍스트의 경우 (= 연산자가 아닌) :=를 대입연산자로 이용한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; &lt;FONT color=#5c7fb0&gt;mysql&amp;gt; SELECT @var3 := &#039;CAN&#039;;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;set 구문은 콤마(,)로 구분하여 여러 변수에 값을 대입할 수 있다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; &lt;FONT color=#5c7fb0&gt;mysql&amp;gt; SET @var1 = &#039;USA&#039;, @var2 = &#039;GBR&#039;, @var3 = &#039;CAN&#039;;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;명시적으로 값이 할당된 적이 없는 값은 null 이다. @var4 는 전에 값이 참조된 적이 없다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; &lt;FONT color=#5c7fb0&gt;mysql&amp;gt; SELECT @var1, @var2, @var3, @var4;&lt;/FONT&gt;&lt;br /&gt;
&lt;/STRONG&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;lt;&amp;lt;결과&amp;gt;&amp;gt;﻿&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse; TEXT-ALIGN: center&quot; cellSpacing=1 cellPadding=1 width=580 bgColor=#ffffff&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;25%&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;@var1&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;25%&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;@var2&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;25%&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;@var3&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;25%&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;@var4&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;25%&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;USA&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;25%&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;GBR&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;25%&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;CAN&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;25%&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;NULL&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;
&lt;STRONG&gt;&amp;nbsp;사용자 변수는 특히 미리 설계된 문장을 EXECUTE을 사용해 실행하기 위해 필요한다.&lt;br /&gt;
&amp;nbsp;사용자 변수는 또한 테이블에 로드되기 전에 변형되어야 하는, 파일로부터 읽어 들인 데이터 값을 유지하기 위해 LOAD DATA INFILE 내에서 사용된다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;SPAN id=tx_beforestart_mark&gt;&lt;/SPAN&gt;&lt;FONT color=#5c7fb0&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&amp;nbsp;MySQL5 에서는 사용자변수의 대소문자를 구별하지 않으나 그 이전의 버전에서는 구별했다.&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&amp;nbsp;사용자 변수는 특정한 클라이언트가 접속을 유지하는 동안 그 안에서만 유효하다. 사용자 변수는 다른 커넥션에 의해 접근될 수 없다. 커넥션이 종료될 때 그 사용자의 변수는 모두 소멸된다.&lt;/SPAN&gt;&lt;SPAN id=tx_afterend_mark&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-29-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-29-1&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;2;i++){var el=document.getElementById(&#039;ccl-icon-29-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>@</category>
			<category>USER VARIABLES</category>
			<category>사용자 변수</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/29</guid>
			<comments>http://afeleia.tistory.com/29#entry29comment</comments>
			<pubDate>Mon,  6 Oct 2008 16:21:12 +0900</pubDate>
		</item>
		<item>
			<title>[MySql] Importing and Exporting Data</title>
			<link>http://afeleia.tistory.com/28</link>
			<description>&lt;br /&gt;
&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&amp;nbsp;MySQL은 파일로부터 데이터베이스로 import 하거나 데이터베이스에서 파일로 export 하는 SQL 문장을 지원한다.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;&amp;nbsp;1. LOAD DATE INFILE&lt;br /&gt;
&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp; -데이터 파일로 부터 레코드를 읽어 테이블에 삽입한다.&lt;br /&gt;
&amp;nbsp; -하나의 테이블에 하나의 파일을 Import 한다.&lt;br /&gt;
&amp;nbsp; -다음은 가장 간단한 유형의 SQL 문이다.&lt;br /&gt;
&amp;nbsp;&lt;FONT color=#3058d2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#5c7fb0&gt;&lt;STRONG&gt;&lt;FONT color=#3058d2&gt;LOAD DATA INFILE &#039;file_name&#039; INTO TABLE table_name;&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;FONT color=#000000&gt;0. 파일명은 작은 따옴표로 묶어야 한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0. 파일경로는 \대신 \\를 사용해야 한다. 다음은 예이다.&lt;br /&gt;
&lt;FONT color=#3058d2&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD DATA INFILE &#039;c:/mydata/data.txt&#039; INTO TABLES t;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD DATA INFILE &#039;c:\\mydata\\data.txt&#039; INTO TABLES t;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //이것은 C:\mydata\data.txt를 가리킨다.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp; -기본적으로 다른 언급이 없으면 파일은 서버에 있고, 컬럼은 tab으로 분리되고, \n newline 문자로 끝나는 파일형식을 따르며 각 라인은 테이블의 컬럼 값들로 구성되어있다고 간주한다. 다음과 같은 것들을 기술하여 데이터 로드 작업을 할 수 있다.&lt;br /&gt;
&lt;FONT color=#3058d2&gt;&amp;nbsp;&amp;nbsp; 0. 로드할 테이블&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. 데이터 파일의 이름과 위치&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. 데이터 파일의 처음 몇 줄을 무시할지&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. 로드할 컬럼&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. 로드하기 전에 데이터 값을 스킵하거나 변경할지&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. 중복 레코드에 대해서 어떻게 처리할 지&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. 데이터 파일 형식&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-다음은 LOAD DATA INFILE의 문법이다. 옵션은 []로 표시했다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#3058d2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD DATA [LOCAL] INFILE &#039;file_name&#039;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [IGNORE | REPLACE]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INTO TABLE table_name&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; format_specifiers&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [IGNORE n LINES]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [(column_list)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [SET (assignment_list)]&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp; 0. 기본 적으로 MySQL은 파일이 서버에 있다고 본다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. LOAD DATA LOCAL INFILE 로 문장이 시작된다면 파일은 SQL문장이 수행된 클라이언트로 부터 읽혀진다. 이런 경우 클라이언트 프로그램이 데이터 파일을 읽어 들여 네트워크를 통해 서버로 보낸다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-경로는 세가지 방법으로 기술된다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0.전체 경로를 기술 할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0.디폴트 베이스라면 파일명만 적으면 된다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0.상대경로를 사용해서 서버의 데이터 디렉토리나 그 아래의 어떤 파일도 참조할 수 있다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-Skipping Data FILE lines&lt;br /&gt;
&amp;nbsp; 0. 데이터 파일의 처음 부분을 무시하기 위해서 IGNORE n LINES를 사용한다. 여기서 n은 스킵하는 줄 수 이다. 만약 첫 줄을 스킵하고자 하면 다음과 같이 쓰면된다.&lt;br /&gt;
&amp;nbsp; &lt;FONT color=#3058d2&gt;LOAD DATA INFILE &#039;/tmp/data.txt&#039; INTO TABLE t IGNORE 1 LINES;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-데이터 파일의 모든 컬럼 값이 없거나 할때 컬럼을 지정해줄 수가 있다.&lt;br /&gt;
&amp;nbsp; &lt;FONT color=#3058d2&gt;LOAD&amp;nbsp;DATA INFILE &#039;/tmp/people.txt&#039; INTO TABLE teble_name(name, address);&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;-데이터파일의 컬럼을 무시할때는 @skip을 사용하면 된다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-중복 발생시 처리방법&lt;br /&gt;
&amp;nbsp; 0.&amp;nbsp;중복 유니크 발생시 처리&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -기본적으로 에러가 나고 로딩 작업이 멈추면서 그 전까지 처리된 레코드들만 테이블에 로드된다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -IGNORE 키워드가 있을경우 중복된 새로운 레코드는 무시되고 에러 발생은 하지 않는다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -REPLACE 키워드를 준 경우 기존 레코드 삭제후 삽입된다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -IGNORE 와 REPLACE는 두가지를 동시에 사용할 수 없다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-메시지 분석하기&lt;br /&gt;
&amp;nbsp; 0. 아래와 같은 형식으로 클라이언트에게 내용을 보여준다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT style=&quot;BACKGROUND-COLOR: #000000&quot; color=#ffffff&gt;Records : 174&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deleted : 0&amp;nbsp;&amp;nbsp; Skipped : 3&amp;nbsp;&amp;nbsp; Warnings : 14&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -Records는 테이블에 들어간 레코드 수가 아니라 데이터 파일로부터 읽은 레코드 수이다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -Deleted는 유니크킥 중복 때문에 새로 들어간 레코드가 기존의 레코드를 대체한 레코드 수를 말한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -Skipped는 유니크 키 중복으로 인해 무시된 입력 레코드 수를 말한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -Warnings는 입력파일에서 발견된 문제의 수이다. SHOW WARNINGS;로 살펴 볼 수 있다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&lt;FONT color=#3058d2&gt;&lt;STRONG&gt;** LOAD DATA INFILE은 INSERT문을 이용하는 것보다 효과적이다.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;&amp;nbsp;2. SELECT ... INTO OUTFILE&lt;br /&gt;
&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp; country 테이블의 내용을 country.txt.라는 파일에 쓰기 위한 문장은 다음과 같다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#3058d2&gt;SELECT * INTO OUTFILE &#039;country.txt&#039; FROM country;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;0. INTO OUTFILE은 SELECT 문의 동작을 여러 가지 방식으로 변경시킨다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -만들어진 결과는 서버에만 존재한다. 결과를 네트워크를 통해 클라이언트로 보내는 것 대신 서버에 파일로 남겨지며 고의적이건 사고든간에 파일이 덮어씌워지는 걸 막기 위해 현재 존재하지 않은 파일을 기록하게 되어 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -서버에 새로운 파일은 만들기 때문에 FILE 권한이 필요하다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -결과 파일은 row당 한&amp;nbsp;줄로 표현되고 디폴트로 컬럼&amp;nbsp;값은 tab 문자로 분리되며 각 줄은 newlines로 종결된다.&amp;nbsp;파일명 뒤에 format specifier를 추가하여 결과 형식을 조절할 수 있다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;0.&amp;nbsp; LOAD DATA INFILE처럼 SELECT ... INTO OUTFILE도 여러가지&amp;nbsp;형식을 정해 줄 수 있다.&lt;br /&gt;
&amp;nbsp; -LOAD DATA INFILE과&amp;nbsp;INTO OUTFILE은 기본적으로&amp;nbsp;같으나 전자는 형식지정자가 테이블명 뒤에 들어갔지만 후자는 결과 파일 뒤에 적는다. 형식 지정자를 위한 문법은 두 문장 모두 같고 아래와 같다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#3058d2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FIELDS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TERMINATED BY &#039;string&#039;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENCLOSED BY &#039;char&#039;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ESCAPED BY &#039;char&#039;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LINES TERMINATED BY &#039;string&#039;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-FIELDS 절은 각 라인안에서의 데이터의 형식을 정의한다.&lt;br /&gt;
&amp;nbsp;-LINES 절은 한 레코드가 어디까지인지 나타낸다.&lt;br /&gt;
&amp;nbsp;-FIELDS 절의 TERMINATED BY, ENCLOSED BY, ESCAPED BY는&amp;nbsp;순서는 바뀌어도 상관이 없고 세 부분 모두 기술하지 않아도 된다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; : 데이터 값들은 tab문자로 구분된다고 가정된다. 다른 값을&amp;nbsp;나타내기 위해서는 TERMINATED BY 옵션을 사용하면 된다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; :데이터 값들은 인용부호로 묶여있지 않다고 간주한다. 인용부호를 사용하려면 ENCLOSED BY 옵션을 사용하면 된다. LOAD DATA INFILE에서 입력값에 있는 인용부호는 제거된다. SLELECT ... INTO OUTFILE에서 출력값들은 인용부호로 감싸져 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; :ENCLOSED BY의 다른 표현은 OPTIONALLY ENCLOSED BY이다. 이 것은 LOAD DATA INFILE에서 ENCLOSED 와 같지만 SELECT ... INTO OUTFILE에서는 다르다. OPTIONALLY절은 결과 값들 중에서 문자열 컬럼에 대해서만 인용부호로 묶는다.&lt;br /&gt;
&amp;nbsp; :디폴트 에스케이프 문자는 &#039;\&#039;이다. 데이터 값내에 이 문자가 나타나면 그 문자는 다음과 같이 해석된다. 다른 문자를 에스케이프 문자로 사용하고 싶으면 ESCAPED BY 옵션을 넣으면 된다. MySQL은 아래의 특별한 에스케이프 sequence를 이해한다.&lt;br /&gt;
&lt;br /&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN&gt;﻿&lt;/SPAN&gt;&lt;SPAN id=tx_beforestart_mark&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;TABLE style=&quot;WIDTH: 218px; BORDER-COLLAPSE: collapse; HEIGHT: 244px; TEXT-ALIGN: center&quot; cellSpacing=1 cellPadding=1 width=218 bgColor=#ffffff&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;Sequence&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;Meaning&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\n&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;NULL VALUE&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\o&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;NUL(zero) byte&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\b&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;Backspace&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\n&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;Newline&lt;br /&gt;
(line feed)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\r&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;Carriage return&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\s&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;space&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\t&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;tab&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\&#039;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;Single quote&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\&quot;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;Double quote&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;\\&lt;/TD&gt;
&lt;TD style=&quot;BORDER-RIGHT: #dadada 1px solid; BORDER-TOP: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; BORDER-BOTTOM: #dadada 1px solid&quot; width=&quot;50%&quot;&gt;&amp;nbsp;Backslash&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;br /&gt;
&lt;SPAN id=tx_afterend_mark&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&amp;nbsp; :\n을 제외한 모든 시퀀스는 단독으로 표현되던, 긴 데이터값내에 표현되던 해석이 된다. \n 은 단독으로 쓰일때 null로 해석된다.&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-28-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-28-1&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;2;i++){var el=document.getElementById(&#039;ccl-icon-28-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>ENCLOSED BY</category>
			<category>ESCAPED BY</category>
			<category>Exporting</category>
			<category>Fields</category>
			<category>Importing</category>
			<category>INTO OUTFILE</category>
			<category>LINES TERMINATED BY</category>
			<category>LOAD DATE INFILE</category>
			<category>OPTIONALLY ENCLOSED BY</category>
			<category>SELECT INTO OUTFILE</category>
			<category>TERMINATED BY</category>
			<category>문법</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/28</guid>
			<comments>http://afeleia.tistory.com/28#entry28comment</comments>
			<pubDate>Mon,  6 Oct 2008 16:07:14 +0900</pubDate>
		</item>
		<item>
			<title>[MySql] VIEWS</title>
			<link>http://afeleia.tistory.com/27</link>
			<description>&lt;br /&gt;
&amp;nbsp;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;VIEW는 SELECT 문을 이용해 원하는 관점으로 데이터를 조회하도록 만들어 정의된 데이터베이스 객체 이다. VIEW 는 종종 가상테이블(virtual tables) 이라고 불린다. 뷰는 SELECT를 이용하여 정규테이블 혹은 다른 뷰로부터 생성될 수 잇다.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;1. View의 잇점&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp; 1) 데이터로의 접근이 간편해진다.&lt;br /&gt;
&amp;nbsp; 2) 뷰는 계산을 하고 그 결과를 보여주는데 사용할 수 있다. 예를 들어 합산하는 함수를 실행하도록 뷰를 정 의하면 총합을 보는데 사용할 수 있다.&lt;br /&gt;
&amp;nbsp; 3)뷰는 적절한 where 구문으로 해당하는 조건의 row를 select하지 못하게 할 수 있고 특정 컬럼만 조회가 가능하도록 할 수도 있다.&lt;br /&gt;
&amp;nbsp; 4)뷰는 Join이나 UNION을 사용하여 여러 테이블로부터 데이터를 select 하게 사용될 수 있다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;2. CREATING VIEWS&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;-뷰를 정의하기 위해서 create view 구문을 사용하며 생성규칙은 아래와 같다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CREATE [OR REPLACE] [ALGORITHM = algorithm_type]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; VIEW view_name [(column_list)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; AS select_statement&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [WITH [CASCADED | LOCAL] CHECK OPTION]&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; -view_name 은 사용할 뷰 이름을 적어준다.&lt;br /&gt;
&amp;nbsp; -select_statemaent는 뷰가 사용될 때 데이터를 어떻게 조회할지 나타내는 select 구문이다. 이 문장은 원본 테이블 또는 다른 뷰에서 select 할 수 있다.&lt;br /&gt;
&amp;nbsp; -CREATE VIEW 구문의 여러부분들은 선택사항이다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. OR REPLACE 절은 같은 이름의 뷰가 존재할 때 에러를 내지 않고 기존 뷰를 drop시키고 새로만든다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. ALGORITHM 절은 뷰가 실행될 때 사용하는 수행알고리즘을 지정한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. column_list 는 디폴트 이름을 오버라이딩하는 뷰 컬럼 이름을 제공한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. WITH CHECK OPTION 절이 뷰의 정의에 포함 되었다면, 모든 데이터는 새롭게 추가되거나 수정되었을 때 주어진 조건에 부합되는지 체크된다. 조건에 맞지 않는다면 변화되는 값들은 받아들여지지 않는다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;예)&amp;nbsp;CREATE VIEW CityView AS SELECT ID, NAME FROM city;&lt;br /&gt;
&amp;nbsp; //city테이블로부터 id와 name 컬럼을 select 하는 cityview라는 간단한 뷰를 정의한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;//뷰와 원본테이블들은 같은 네임스페이스를 공유하기 때문에 기존 테이블이름과 같으면 에러가 발생한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;예) CREATE OR REPLACE VIEW CityView AS SELECT ID, NAME FROM city;&lt;br /&gt;
&amp;nbsp; //같은 이름의 뷰가 있어도 드랍하고 새로 생성한다. 원본 테이블은 에러가 발생한다.&lt;br /&gt;
&amp;nbsp; //DROP VIEW를 한후 CREATE VIEW를 해도 된다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;예) CREATE VIEW v(countryname, cityname) AS SELECT country.name, city.name&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM country, city qhere code = countrycode;&lt;br /&gt;
&amp;nbsp; //원본 테이블에 같은 이름의 컬럼을 뷰로 만들면 같은 컬럼명으로 인해 에러가 발생한다. 이 때는 컬럼명을 명시하여 만들면 해결이된다.&lt;br /&gt;
&amp;nbsp; //또 다른 방법으로 SELECT문장에서 컬럼 alias를 사용하는 방법이 있다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-뷰의 정의는 select 구문이 허용하는 where, group by 와 같은 것을 모두 포함할 수 있다. 하지만 mysql에서의 뷰는 원본 테이블과 같이 적용되지 않는 몇몇 제약도 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. TEMPORARY 뷰를 만들 수 없다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. 뷰와 함께 연결되는 트리거를 만들 수 없다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 0. 뷰 정의에 있는 SELECT 구문은 다음과 같은 구성을 포함할 수 없다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : FROM 절 안에 서브쿼리&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : TEMPORARY 테이블로 참조&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 사용자 변수로 참조&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 만약 뷰의 정의가 stored routine에서 일어난다면 프로시저 파라미터로의 참조&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : prepared state ment 파라미터로 참조&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-view Alforithms&lt;br /&gt;
&amp;nbsp; :: CREATE VIEW 구문을 확장해서 뷰가 수행할 알고리즘을 ALGORITHM 절에 명시할 수 있다.&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE }&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-UNDEFINED 값은 MySQL이 알고리즘을 스스로 선택하게 한다. (DEFAULT 값이다.)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-MERGE의 경우 MySQL은 뷰 정의의 부분들을 문장의 해당되는 부분으로 병합하고, 병합된&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;문장결과를 수행함으로서 뷰를 참조하는 문장을 처리한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -TEMPTALBE에 대해 MySQL은 우선 뷰 내용을 임시 테이블로 추출한 후 그 후 임시 테이블을 사&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 하여 문장 수행을 마무리 하는 방법으로 문장을 처리한다. 만약 TEMPTABLE을 명시하였다면 뷰는&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 변경할 수 없게 된다. 즉 뷰는 기본 테이블을 업데이트 하기 위해서 사용될 수 없다.(대신 수정은 임&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 시테이블에서 일어날 수 있지만, 원본 테이블은 변경되지 않는다.)&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;3. VIEWS UPDATE&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;1)업데이트 조건&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -뷰의 ROW와 원본 테이블의 ROW가 일대일로 매칭되어야 한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -뷰 컬럼이 간단한 테이블 컬럼 참조(표현식이 아닌)로 이루어져 있어야 한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;2)WITH CHECK OPTION절로 변경 제한조건 주기&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -기존에 존재하고 있는 row의 업데이트는 업데이트가 되고 난 후의 값이 where 조건을 여전히 만족시키&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 는&amp;nbsp;경우에만 가능하다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -insert는 새로운 row가 오직 where 조건을 만족하는 경우만 가능하다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -뷰가 선택하지 않은 row의 업데이트는 불가능 하다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -WITH LOCAL CHECK OPTION 은 check가 뷰 자신의 where 절에만 적용된다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -WITH CASCADE CHECK OPTION은 WHERE절에 의해 모든 원천 뷰에까지 where 조건이 적용된다. 이 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 것은 디폴트 값이다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;4. ALTER VIEW&lt;/SPAN&gt;&lt;br /&gt;
&lt;/STRONG&gt;&amp;nbsp; -뷰에 대한 현재의 정의를 취소하고 문장 내의 새로운 정의로 대체한다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;5. DROPPING VIEWS&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp; -한 개나 또는 그 이상의 뷰를 없애기 위해서는 drop view 구문을 사용한다.&lt;br /&gt;
&amp;nbsp; -주어진 뷰가 없으면 에러가 나는데 이를 막기위해 IF EXISTS 절을 사용한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;예) DROP VIEW IF EXISTS&amp;nbsp;v1, v2;&lt;br /&gt;
&amp;nbsp; -에러는 SHOW WARNINGS; 로 볼수 있다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;6. CHECKING VIEWS&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp; -원본테이블에 컬럼이 드랍되거나 alter가 되면 뷰는 invalid 상태로 된다. 이런 현상을 체크하기 위해서 CHECK TABLE 구문을 싱행하여야 한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;예) CHECK TABLE v \g&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;7. Obtaining View Metadata&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;-INFORMATION_SCHEMA 데이터 베이스는 뷰 메타데이타를 포함하고 있는 뷰들을 가지고 있다.(뷰에 대한 정보) 예를 들어 world.cityview 뷰에 대한 정보를 보기 위해서는 다음 구문을 사용한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;mysql&amp;gt; SELECT * FROM INFORMATION_SCHEMA.VIEWS&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; WHERE TABLE_NAME = &#039;cityview&#039;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; AND TABLE_SCHEMA = &#039;world&#039; \g&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-뷰의정의를 표시하기 위해서 SHOW CREATE VIEW 구문을 사용한다.&lt;br /&gt;
&amp;nbsp; mysql&amp;gt; SHOW CREATE VIEW CityView \g&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-mysql 5에는 SHOW FULL TABLES; 라는 구문이 있다. 이 컬럼은 가각 어떤 종류의 테이블인지 보여준다.&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-27-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-27-1&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;2;i++){var el=document.getElementById(&#039;ccl-icon-27-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>ALGORITHM = algorithm_type</category>
			<category>ALTER VIEW</category>
			<category>CHECK TABLE</category>
			<category>column_list</category>
			<category>CREATE VIEW</category>
			<category>DROP VIEW</category>
			<category>Merge</category>
			<category>OR REPLACE</category>
			<category>TEMPTABLE</category>
			<category>undefined</category>
			<category>View</category>
			<category>WITH CHECK OPTION</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/27</guid>
			<comments>http://afeleia.tistory.com/27#entry27comment</comments>
			<pubDate>Mon,  6 Oct 2008 14:38:58 +0900</pubDate>
		</item>
		<item>
			<title>[MySql] Subqueries</title>
			<link>http://afeleia.tistory.com/26</link>
			<description>&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;서브 쿼리로 조인을 사용한 쿼리와 똑같이 때로는 더 효과적으로 재작성 될 수 있다. 복잡한 조인이나 UNION을 필요로 하는 관계를 명시하기 위한 대안으로 서브쿼리는 많이 사용된다. 어떤 사용자들은 단순히 서브 쿼리가 가독성이 좋거나 복잡한 조인을 포함하는 쿼리들보다 유지하기 쉽기 때문에 서브쿼리를 사용할 것을 주장한다. 조인이 좀 더 효율적이거나 서브쿼리가 지원되지 않는 하위 버전의 MySQL에서는 서브쿼리를 조인으로 변환하기도 한다. (서브쿼리는 mysql 4.1부터 지원된다.)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;1. 서브쿼리의 타입&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;1)Scalar subqueries :: 컬럼 하나로 이루어진 row 하나를 리턴&lt;br /&gt;
&amp;nbsp;2)Row subqueries :: 여러 컬럼으로 이루어진 row 하나를 리턴&lt;br /&gt;
&amp;nbsp;3)Column subqueries :: 컬럼 하나로 이루어진 하나 이상의 row를 리턴&lt;br /&gt;
&amp;nbsp;4)Table subqueries :: 여러 컬럼으로 이루어진 하나 이상의 row를 리턴&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;2. Scalar subqueries&lt;/SPAN&gt;&lt;br /&gt;
&lt;/STRONG&gt;&amp;nbsp;-스칼라 서브쿼리는 SQL문법에 의해 scalar 값이 허용되는 어디서나 쓰일 수 있다. 이는 서브쿼리를 함수 인자로 사용할 수 있고, 숫자 값을 포함하고 있는 서브쿼리에 대해 수학 연산자를 사용할 수 있다는 것을 의미한다.&lt;br /&gt;
&amp;nbsp; 예) mysql&amp;gt; SLELECT CONCAT(&#039;The country code for Finland is:&#039; , &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;&amp;nbsp;(SELECT Code&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; FROM Country&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; WHERE name=&#039;Finland&#039;)) AS s1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 결과 :&amp;nbsp; The country code for Finland is: FIN&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-서브 쿼리는, 서브 쿼리가 나타날 수 있는 다른 어떤 컨텍스트에서와 마찬가지로 반드시 괄호로 묶여져야 한다. 다음 예제는 수학적 표현식에서 scalar 서브쿼리의 사용을 보여준다.&lt;br /&gt;
&amp;nbsp; 예) mysql&amp;gt; SELECT (SELECT SUM(Population) FROM City) /&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; (SELECT SUM(Populatrion) FROM Country) AS ratio;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Population은 인구 비율이다. 도시에 사는 인구대 전세계 인구의 비율을 계산한다.&lt;br /&gt;
&amp;nbsp;-LIMIT 절의 인자와 같이 literal 값이 필요한 경우에는 스칼라 서브쿼리를 사용할 수 없다.&lt;br /&gt;
&amp;nbsp;-스칼라 서브쿼리가 리턴하는 값이 하나를 초과하면 에러가 난다. 여러 row를 리턴하는 비교작업을 수행하기 위해선 양적 비교를 위해 수량 키워드인 ALL, ANY 그리고 SOME을 사용한다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;3. Correlated subqueries&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;-서브쿼리들은 서로 관련되어 있거나 또는 그렇지 않을 수 있다.&lt;br /&gt;
&amp;nbsp; 1)non-correlated 서브쿼리는 바깥 쿼리(outer query) 참조가 없고 바깥 쿼리에 독립적이다. 그 결과 non-corrleated 서브쿼리는 완전히 분리된 구문으로써 계산되어질 수 있다.&lt;br /&gt;
&amp;nbsp; 2)correlated 서브쿼리는 outer 쿼리에 있는 값을 참조하고 독립적으로 값을 구할 수 없다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;4. Using All, ANY, and SOME&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;-Scalar 값과 하나의 컬럼으로 이루어진 데이터를 여러 row 리턴하는 서브쿼리를 비교하는 작업을 수행하기 위해선 반드시 양적 비교를 사용해야 한다.&lt;br /&gt;
&amp;nbsp;1)ALL&lt;br /&gt;
&amp;nbsp; &amp;nbsp;-ALL 키워드를 사용하는 것은 모든 결과 값들에 대해 비교가 참인 레코드 만으로 결과를 제한하게 된다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 예) mysql&amp;gt;SELECT Name, Population&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;FROM country&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;WHERE Population &amp;gt; ALL(SELECT AVG(Population)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM COUNTRY GROUP BY continent);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ALL이후 문장은 평균 Population을 구하고 그 값과 비교하기 위해 &amp;gt; 사용했다.&lt;br /&gt;
&amp;nbsp;2)ANY&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -ANY를 사용하는 비교는 말 그대로, 서브쿼리에 있는 어떤 값이라도 성공하면 참이라는 의미를 가진다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -SOME은 ANY에 대한 alias 이고 ANY가 사용되는 어떤 곳에도 사용될 수 있다. 표준 SQL은 이 두단어를 같은 의미로 정의한다.&lt;br /&gt;
&amp;nbsp;3)&amp;lt;&amp;gt; ANY&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -영어로 NOT ANY는 none at all을 의미한다. 그러나 SQL에서는 &amp;lt;&amp;gt;ANY가 하나 또는 그 이상 불일치를 의미한다.&lt;br /&gt;
&amp;nbsp; -&amp;lt;&amp;gt; ANY 사용으로부터 생길수 있는 혼란을 줄이기 위해서 표준 SQL은 ANY에 대한 동의어인 SOME 키워드를 포함하고 있다. &amp;lt;&amp;gt; SOME 조합을 사용하는 것은 SQL 구문에서 기대되는 결과를 좀 더 쉽게 이해할 수 있게 해준다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;5. IN and NOT IN&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;1)&amp;nbsp;IN&lt;br /&gt;
&amp;nbsp; -서브쿼리에서 IN이 사용되었을 때, 이것은 = ANY를 사용하는 것과 기능상 같다.(= 기호는 동등의 한 부분이라는 것을 주목해라.)&lt;br /&gt;
&amp;nbsp; -이 값이 서브쿼리에 나타날까? 가 알고 싶기에 =ANY 보다는 IN쪽이 더 가독성이 높다.&lt;br /&gt;
&amp;nbsp; -IN 은 =나 &amp;lt;&amp;gt;와 같은 어떤 비교연산자와도 결합될 수 없다.&lt;br /&gt;
&amp;nbsp;2) NOT IN&lt;br /&gt;
&amp;nbsp; -NOT IN은 또 다른 &quot;shorthand&quot;이다. 그러나 이것은 &amp;lt;&amp;gt; ANY의 alias가 아니다.&lt;br /&gt;
&amp;nbsp; -NOT IN은 서브쿼리가 outer쿼리에 의해 매치할 수 있는 레코드가 없을 때만 참이 된다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;6. EXISTS&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp; -서브쿼리가 찾은 row가 있는지 여부를 알려준다.&lt;br /&gt;
&amp;nbsp; -어떤 row를 찾던지 실제 값을 리턴하지는 않고 단지 어떤 row을 찾으면 참을 리턴한다.&lt;br /&gt;
&amp;nbsp; -서브쿼리 안에서 SELECT * 을 사용하는 것은 단지 습관적일 뿐이다. 컬럼값을 사용할 수도 있으나 비교를 위해 필요한 컬럼 값은 없기 때문에 서브쿼리에 SELECT문에 주어진 컬럼리스트는 전혀 계산하지 않는다.&lt;br /&gt;
&amp;nbsp; -EXISTS의 부정은 NOT EXISTS인데 이름처럼 서브쿼리 결과로 빈 row가 나오면 TRUE를 리턴한다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;&amp;nbsp;7. ROW subqueries 비교&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp; -row 서브쿼리로 한 row의 모든 컬럼에 대해 동등 비교를 수행 할 수 있다.&lt;br /&gt;
&amp;nbsp; -다음 예제에서 수도의 ID는&amp;nbsp;country 테이블에 저장되어 있고 쿼리는 CITY테이블에 지정된 city 이름을 사용한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 예) mysql&amp;gt; SELECT city.name&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;FROM city&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;WHERE (city.id, city.countryCode) =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt; (SELECT capital, code&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;&amp;nbsp; FROM Country&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt;&amp;nbsp; WHERE Name=&#039;Finland&#039;);&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;-여기서 (city.id , city.countrycode) 구성의 사용을 주목해라. 이것은 &quot;row constructor&quot;로 불리며 값들의 튜플을 만든다.&lt;br /&gt;
&amp;nbsp; -Row constructor는 동등 비교를 위한 = 연산자만 사용할 수 있다.&lt;br /&gt;
&amp;nbsp; -보통 row 서브쿼리와 함께 사용되지만, 다른 컨텍스트 안에서도 사용될 수 있고, 스칼라 표현식의 어떤 타입도 포함할 수 있다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;8. FROM 절에 서브쿼리 사용&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;-서브쿼리는 SELECT 구문의 FROM 절에 사용될수 있다.&lt;br /&gt;
&amp;nbsp;-FROM절에 나타나는 모든 테이블은 반드시 이름을 가져야한다. 그래서 FROM절에 있는 서브쿼리는 반드시 테이블 alias가 뒤따라야 한다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;9. 서브쿼리 조인으로 변경하기&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;1)테이블과 매치되는 서브쿼리는 INNER 조인으로 재작성&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 예) countrylanguage 테이블에 리스트된 언어를 쓰는 국가를 확인하는 IN 서브쿼리&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql&amp;gt; SELECT name FROM country&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql&amp;gt; WHERE code&amp;nbsp;IN (SELECT countrycode FROM countrylanguage);&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -이것을 INNER 조인으로 변환하기 위해서는 서브쿼리에 나온&amp;nbsp;contrylanguage 테이블을 FROM 절로 옮긴다. 그리고 나서 WHERE 절에서 서브쿼리로부터 리턴된 countrycode를 code 컬럼과 비교한다. IN 표현을 두 테이블의&amp;nbsp;country code&amp;nbsp;컬럼을 직접 비교하도록 변환한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -매치된 국가를 단 한번씩만 리스트 하는 서브쿼리 결과이기 때문에 DISTINCT를 조인에 추가한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp; 변환) mysql&amp;gt; SELECT DISTINCT name FROM country, countrylanguage&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;WHERE code = countrycode;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;2)테이블과 매치되지 않는 서브쿼리는 OUTER 조인으로 재작성&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 예)countrylanguage 테이블에 나열된 language를 사용하지 않는 country를 확인하는 NOT IN 서브쿼리&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql&amp;gt; SELECT name FROM Country&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;WHERE code NOT IN (SELECT countrycode FROM countrylanguage);&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -이것을 OUTER 조인으로 변환하기 위해서는 서브쿼리에 나온 countrylanguage 테이블을 from 절로 옮기고 이것을 country와 left join으로 조인한다. 그리고 나서 where 절에 서브쿼리에서 리턴된 country code를 code 컬럼과 비교한다. IN표현을 FROM절에 있는 두 테이블의 countrycode 컬럼을 명시적으로 직접 비교하도록 바꾼다. where 절에서 countrylanguage 테이블 컬럼에서 null 값을 갖는 row의 결과만 나오도록 한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; 변환) mysql&amp;gt; SELECT name&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt; FROM country LEFT JOIN countrylanguage ON code = countrycode&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; WHERE countrycode IS NULL;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -모든 LEFT조인은 동등한 RIGHT조인으로 쓰여질 수 있고, 서브쿼리도 RIGHT조인으로 쓰여질 수 있다.&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-26-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-26-1&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;2;i++){var el=document.getElementById(&#039;ccl-icon-26-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>&lt;&gt; ANY</category>
			<category>&lt;&gt; SOME</category>
			<category>All</category>
			<category>Any</category>
			<category>Column subqueries</category>
			<category>Correlated subqueries</category>
			<category>Exist</category>
			<category>EXISTS</category>
			<category>IN</category>
			<category>none at all</category>
			<category>not any</category>
			<category>NOT IN</category>
			<category>outer query</category>
			<category>row constructor</category>
			<category>Row subqueries</category>
			<category>Scalar subqueries</category>
			<category>SOME</category>
			<category>Table subqueries</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/26</guid>
			<comments>http://afeleia.tistory.com/26#entry26comment</comments>
			<pubDate>Mon,  6 Oct 2008 13:24:00 +0900</pubDate>
		</item>
		<item>
			<title>[MySql] Joins (Outer join, Inner join)</title>
			<link>http://afeleia.tistory.com/25</link>
			<description>&lt;br /&gt;
&amp;nbsp;여러 테이블에서 정보를 얻고자 할 때 하나의 테이블과 다른 테이블을 연결하는 조인을 사용한다. 조인을 사용할 때 단순히 하나의 SELECT 문장의 확장형태가 아니라 아래에 기술하는 복잡한 관계도 유의해야 한다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&amp;nbsp;1)FROM 절에는 쿼리 실행시 관련된 모든 테이블이 언급되어야 한다. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (MySQL 5 에서 JOIN은 쵀대 61테이블 까지 가능하다.)&lt;br /&gt;
&amp;nbsp;2)하나의 테이블과 다른 테이블을 조인할 때 어떻게 다른 테이블과 연결할 지 언급해야 한다. 보통 이런 제약 조건은 WHERE절에 정의하며 그 외 조인의 형태에 따라 조인의 문법이 달라 질 수 있다.&lt;br /&gt;
&amp;nbsp;3)조인에 참여한 모든 테이블에 있는 컬럼들을 나열하여 보여줄 수 있다.&lt;br /&gt;
&amp;nbsp;4)조인에 참여하는 컬럼이 여러 테이블에 존재하면 매번 참조하는 컬럼이 어느 테이블의 컬럼인지 명시해줘야 한다.&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;1. INNER JOINS&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp; -두 테이블이 연결되는 row가 같은 경우를 말한다.&lt;br /&gt;
&amp;nbsp; -from 절에서는 두 테이블의 이름을 콤마로 나눈다. 이 것은 쿼리 수행시 다중 테이블임을 MySQL에게 알려준다.&lt;br /&gt;
&amp;nbsp; -두 테이블 사이에 어떻게 레코드를 일치시키냐는 WHERE 절에 정의한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;가정!! country 테이블에는 국가코드명 code 컬럼과 국가명 name 컬럼이 있다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; countryLanguage 테이블에는 국가코드명 countrycode컬럼과 언어 language 컬럼이 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 여기서 언어와 국가명을 나타내기 위해 INNER JOIN 하면 다음과 같다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp; mysql&amp;gt; SELECT name, language FROM countryLanguage, country&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;-&amp;gt; WHERE countryCode = code;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp; -위의 쿼리를 보면 country 테이블을 참조한다는 것을 알 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -INNER JOIN의 FROM 절에 나오는 테이블의 순서는 중요하지 않다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -JOIN의 값도 특별한 순서를 가지고 있지 않으며 ORDER BY를 사용하여 정렬할 수 있다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp; -위에서 콤마를 사용한 방법을 알아봤는데 INNER JOIN이란 키워드를 사용하면 다음과 같다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql&amp;gt; SELECT name, language&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; FROM countrylanguage INNER JOIN country ON countrycode = code;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;-컬럼명이 같을때 ON 대신 USING(column)을 사용할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -JOIN, CROSS JOIN은 INNER JOIN의 동의어이다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;2. CARTESIAN PRODUCT&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -위의 조인에서 WHERE절을 가지고 있었다. 문법적으로 WHERE 절은 선택적이다. JOIN시 WHERE 절을 가지고 있지 않으면 두 테이블의 모든 row의 조합이 만들어진다.&amp;nbsp; 이 것을 CARTESIAN PRODUCT라고 부른다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -결과로 나온 row수는 두 테이블의 row의 수를 곱한 값과 같다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -where 절 사용을 잊어 대령의 결과셋 발생 활률을 막고자할때 --safe--update 옵션을 이용하면 된다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;3. OUTER JOINS&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;-INNER JOIN은 매치되는 컬럼에 한해서 조인 결과를 보여준다. 매치되지 않은 컬럼의 값까지 보고자 한다면 OUTER JOIN을 사용해야 한다. WHERE절을 잘 사용한다면 매치되지 않은 컬럼만 찾아 볼 수 있다.&lt;br /&gt;
&amp;nbsp;-OUTER JOIN의 두가지 일반적인 사항은 left joins 과 right joins 이다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;1)LEFT JOIN&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp; -키워드로 left join이라고 쓴다. 왼쪽에 첫번째 언급되는 테이블을 참조테이블로 하고 오른쪽 테이블의 row에 match 되는 값이 있건 없건 상관없이 output을 산출한다.&lt;br /&gt;
&amp;nbsp; -INNER JOIN처럼 ON 이나 USING()을 사용한다.&lt;br /&gt;
&amp;nbsp; -왼쪽의 row와 오른쪽 row의 매치값이 없으면 null값을 가지고 결과값을 만든다.&lt;br /&gt;
&amp;nbsp; -null 값은 매치되지 않은 컬럼이 있음을 말해주고 이를 이용하면 매치되지 않은 값만 볼 수 있다.(IS NULL)&lt;br /&gt;
&amp;nbsp; -INNER JOIN 과는 다르게 테이블의 순서가 결과에 큰 지장을 미친다.\&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;2)RIGHT JOIN&lt;/SPAN&gt;&lt;br /&gt;
&lt;/STRONG&gt;&amp;nbsp; -RIGHT JOIN은 두번째 언급되는 테이블이 참조 테이블이다. 이외 LEFT JOIN과 같다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;4. 중복되는 컬럼명&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;1)mysql&amp;gt;SELECT name, name FROM country, city;&lt;br /&gt;
&amp;nbsp; -컬럼명이 두 테이블에서 같은게 있을 경우 큰 혼선이 발생한다. 테이블명과 컬럼명을 같이 표기하여 명확히 할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; mysql&amp;gt;SELECT coutry.name, city.name FROM country, city;&lt;br /&gt;
&amp;nbsp;2)조인이 항상 테이블 명을 명시해야 하는 것은 아니지만 항상 명시해도 된다. 개인적으로 필자는 항상 명시하는 것을 권유하고 싶다.&lt;br /&gt;
&amp;nbsp;3)Alias 명명하기&lt;br /&gt;
&amp;nbsp; -데이터베이스 레벨까지 올라가면 위에 방법은 너무 길어진다.(db_name.table_name.column_name)&lt;br /&gt;
&amp;nbsp; -SELF JOIN시에는 항상 테이블명이 혼란을 일으킨다.&lt;br /&gt;
&amp;nbsp; -위의 두가지를 해결 하기위해 양쪽 모든 테이블에 참조할 alias를 만들어서 사용하면 궁극적인 해결책이 될 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql&amp;gt;SELECT c1.name, c2.name FROM country&amp;nbsp;AS c1, city AS c2;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;5. JOIN을 사용하여 UPDATE / DELETE 하기&lt;/SPAN&gt;&lt;br /&gt;
&lt;/STRONG&gt;&amp;nbsp; 1)다음과 같은 기능을 수행할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -다른 테이블로부터 정보를 받아 row를 업데이트 할 수&amp;nbsp; 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -한 테이블에서 row를 업데이트 할 때, 다른 테이블을 참조하여 업데이트할 row를 결정할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -한번의 쿼리로 여러 테이블의 row들을 업데이트 할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -한쪽의 테이블에서 row들을 삭제할 때 다른 테이블을 참조하여 삭제할 row를 결정할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -한 번의 쿼리로 여러 테이블에서 여러 row들을 삭제 할 수 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -ORDER BY, LIMIT 를 사용할 수 는 없다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; 2)예제&lt;br /&gt;
&amp;nbsp;&amp;nbsp; mysql&amp;gt;UPDATE t1, t2 SET t1.name = t2.name WHERE t1.id = t2.id;&amp;nbsp; //t1과 t2는 테이블명&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -id 컬럼 값을 기준으로 두 테이블을 조인하고 t2에서 t1테이블로 name 컬럼을 복사한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp; mysql&amp;gt;DELETE t1 FROM t1, t2 WHERE t1.id = t2.id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; mysql&amp;gt;DELETE FROM t1 USING t1, t2 WHERE t1.id = t2.id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -t1 테이블의 id 컬럼 값이 t2 테이블의&amp;nbsp;id 컬럼 값과 같은 row를 찾아 지우는 쿼리&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp; mysql&amp;gt;DELETE t1,t2 FROM t1, t2 WHERE t1.id = t2.id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; mysql&amp;gt;DELETE FROM t1, t2 USING t1,t2 WHERE t1.id = t2. id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -양쪽 모두의 테이블에서 매치되는 레코드를 지우는 쿼리&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-25-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-25-1&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;2;i++){var el=document.getElementById(&#039;ccl-icon-25-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>Cartesian Product</category>
			<category>CROSS JOIN</category>
			<category>inner join</category>
			<category>Join</category>
			<category>JOIN DELETE</category>
			<category>JOIN UPDATE</category>
			<category>LEFT JOIN</category>
			<category>outer join</category>
			<category>RIGHT JOIN</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/25</guid>
			<comments>http://afeleia.tistory.com/25#entry25comment</comments>
			<pubDate>Mon,  6 Oct 2008 10:49:53 +0900</pubDate>
		</item>
		<item>
			<title>[MySql] Updating Data (INSERT, DUPULICATE, UPDATE, REPLACE)</title>
			<link>http://afeleia.tistory.com/24</link>
			<description>&lt;br /&gt;
1. INSERT&lt;br /&gt;
&amp;nbsp;-새로운 레코드를 추가하는데 사용하는 문장이다. 매우 기본적인 쿼리 이므로 예제를 보면 쉽게 이해가 갈것이다.&lt;br /&gt;
&amp;nbsp;mysql&amp;gt; INSERT INTO talbe_name VALUES(12, &#039;yewa&#039;, 25);&lt;br /&gt;
&amp;nbsp;mysql&amp;gt; INSERT INTO table_name SET column1 = 12, column2 = &#039;yewa&#039;, column3 = 25;&lt;br /&gt;
&amp;nbsp;mysql&amp;gt; INSERT INTO table_name (column1, column2)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; VALUES(34, &#039;aa&#039;),(22, &#039;bb&#039;),(11, &#039;cc&#039;); //복수레코드 삽입&lt;br /&gt;
&lt;br /&gt;2. 중복값 컨트롤&lt;br /&gt;
&amp;nbsp;-테이블에 유일 값 인덱스가 존재한다면 기존의 인덱스와 같은 값은 추가 될 수 없다. 이 때 유일값을 입력하기 위한 세가지 방법이 있다.&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
1) 디폴트 설정(별다른 처리방법을 지정하지 않았을 때)일 때에 서버는 에러를 발생시키며 새로운 레코드를 추가하지 않는다.(복수레코드를 추가할때엔 스토리지 엔진마다 다른데 MYISAM인 경우에는 이전 까지 값이 등록이 되지만 InnoDB는 ROLLBACK 된다.)&lt;br /&gt;
&lt;br /&gt;2)데이터 등록시 에러를 무시하도록 설정할 수 있다. 이 경우 INSERT가 아니라 INSERT IGNORE 구문을 사용하고 중복된 키 값이 들어온다면 이 값은 무시한다.&lt;br /&gt;
&lt;br /&gt;3)마지막으로 ON DUPLICATE KEY UPDATE 절을 사용해서 이미 존재하고 있는 레코드의 특정 컬럼을 새로운 값으로 변경할 수 있다. 만약 중복키 값 에러가 발생하는 경우 기존의 값을 새로운 값으로 변경하고 싶다면 REPLACE문이 효율적이다.&lt;br /&gt;
&amp;nbsp;REPLACE절은 특정 컬럼만 변경시키려고 할 때 적절하지 않다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-ON DUPLICATE KEY UPDATE&lt;br /&gt;
&amp;nbsp; =쉽게 INSERT와 UPDATE의 두 개의 문장이 하는 일을 한번의 명령어로 수행 가능하다.&lt;br /&gt;
&amp;nbsp; =트랜잭션을 지원하지 않는 테이블의 경우 명시적 lock을 걸어서 UPDATE 에러가 발생하지 않도록 한다.&lt;br /&gt;
&amp;nbsp; =예를 들어 특정 키값을 카운트 하는 테이블이 있는데 기존의 존재하면 카운트를 늘리고 존재하지 않으면 새로운 row를 쓰게 된다.&lt;br /&gt;
&amp;nbsp; ex) mysql&amp;gt; INSERT INTO table_name(column1, column2, column3)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Values (&#039;value1&#039;, &#039;value2&#039;, value3)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ON DUPLICATE KEY UPDATE value3 = value3 + 1&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-REPLACE&lt;br /&gt;
&amp;nbsp; =ON DUPLICATE KEY UPDATE와 비슷하나 중복된 레코드를 처리하는 부분에서 차이가 있다.&lt;br /&gt;
&amp;nbsp; =새로운 데이터가 단일키와 중복이 발생하면 기존 값을 삭제한다.&lt;br /&gt;
&amp;nbsp; =각각 DELETE와 INSERT보다 REPLACE의 장점은 단일 트랜잭션으로 테이블 lock을 걸 필요가 없다.&lt;br /&gt;
&amp;nbsp; =REPLACE는 INSERT와 사용방법이 같다.&lt;br /&gt;
&lt;br /&gt;3. UPDATE&lt;br /&gt;
&amp;nbsp;-이 구문은 이미 존재하는 레코드를 수정할 수 있다.&lt;br /&gt;
&amp;nbsp; ex) mysql&amp;gt; UPDATE table_name SET column=&#039;value&#039;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql&amp;gt; UPDATE table_name SET column1=&#039;value&#039; , column2=value; //여러개 수정&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;-ORDER BY절과 함께 사용하여 수정 순서를 정할 수 있다.&lt;br /&gt;
&amp;nbsp;-LIMIT절과 함께 사용하여 수정 갯수를 정할 수 있다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;** WHERE절 없이 UPDATE를 사용하게 되면 테이블 전체 내용이 바뀌므로 주의 해야 한다.&lt;br /&gt;
&amp;nbsp;(--safe--updates 옵션으로 대규모 테이블 변경을 막을 수도 있다.)&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-24-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-24-1&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 4)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;2;i++){var el=document.getElementById(&#039;ccl-icon-24-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>duplicate</category>
			<category>insert</category>
			<category>ON DUPLICATE KEY UPDATE</category>
			<category>Replace</category>
			<category>Update</category>
			<category>중복</category>
			<category>중복 삽입</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/24</guid>
			<comments>http://afeleia.tistory.com/24#entry24comment</comments>
			<pubDate>Thu,  2 Oct 2008 11:20:23 +0900</pubDate>
		</item>
		<item>
			<title>[MySql] 유용한 함수들 (비교함수, 흐름제어함수, 수치함수, 시간함수, 주석문)</title>
			<link>http://afeleia.tistory.com/23</link>
			<description>&lt;br /&gt;
&amp;nbsp;모든 함수를 설명하는 것은 무리입니다. 더욱 많은 자료를 원하시면 MYSQL Reference Manual에 함수부분을 참고하시기 바랍니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;1. 비교함수&lt;br /&gt;
&amp;nbsp;&amp;nbsp;-비교함수는 값을 비교하거나 값들의 집합에서 하나의 값이 포함되는 지 테스트 할 수 있다.&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp; 0. LEAST()와 GREATEST()는 인수로 값들의 집합을 받고 가장 적거나 가장 큰 값 하나를 리턴!!&lt;br /&gt;
&amp;nbsp; 0. INTERVAL() 함수는 첫번째 인수로 비교값을 받고 남아 있는 인수들은 정렬된 값들의 집합이어야 한다. 이 함수는 첫 인수를 다른 값과 비교해서 첫 인수보다 작거나 같은 것이 몇 개인지 리턴!!&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ex&amp;gt;SELECT INTERVAL(2, 1, 2, 3, 4);&amp;nbsp; //결과는 2가 나온다.&lt;br /&gt;
&amp;nbsp; 0. IN() 어떤 값이 다른 몇개의 값들과 같은지를 비교하는 경우&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ex&amp;gt; WHERE id=13 OR id=45 OR id=97 OR id=142&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE id IN(13,45,97,142) 이 두 WHERE 문은 같다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;2. 흐름제어함수&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;0. IF는&amp;nbsp; 첫 번째 인수에 있는 표현식을 확인하고 그 표현식이 참이면 두번째 인수를 거짓이면 세번째 인수를 리턴한다.&lt;br /&gt;
&amp;nbsp;ex) mysql&amp;gt;SELECT IF(1&amp;gt;0, &#039;yes&#039;, &#039;no&#039;);&amp;nbsp; //결과 yes&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;0. CASE구조는 함수는 아니지만 두개의 흐름을 제공한다.&lt;br /&gt;
&amp;nbsp; -case_expr 표현식은 CASE의 나머지 부분에 있는 절이 실행 될지 안될지 결정하기 위하여 평가되고 사용된다.&amp;nbsp;다음과 같은 구조로 사용하면 된다.&lt;br /&gt;
&amp;nbsp;-Alias를 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp; CASE case_expr&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN when_expr THEN result&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WHEN when_expr THEN result]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ELSE result]&lt;br /&gt;
&amp;nbsp;&amp;nbsp; END&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;3. 수치함수&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;0. ROUND 함수는 인수를 반올림 한다. ( .5&amp;nbsp;기준)&lt;br /&gt;
&amp;nbsp;0. FLOOR 함수는&amp;nbsp; 인수보다&amp;nbsp;크지 않은 가장 큰 정수를 리턴하고 CEILING()은 인수보다 작지 않은 가장 작은 정수를 리턴한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mysql&amp;gt;SELECT FLOOR(-14.7), FLOOR(14.7);&amp;nbsp; //결과 -15와 14&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql&amp;gt;SELECT CEILING(-14.7), CEILING(14.7); //결과 -14와 15&lt;br /&gt;
&amp;nbsp;0. ABS는 절대 값을 SIGN은 싸인 값을 얻을 수 있다.&lt;br /&gt;
&amp;nbsp;0. SIN, COS, TAN는 싸인, 코싸인, 탄젠트를 구한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;4. 시간함수&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;0.다음 예를 보면 쉽게 이해가 갈 것이다.&lt;br /&gt;
&amp;nbsp; mysql&amp;gt; SET @d=&#039;2010-04-15&#039;, @t = &#039;09:23:57&#039;;&lt;br /&gt;
&amp;nbsp; mysql&amp;gt; SELECT YEAR(@d), MONTH(@d), DAYOFMONTH(@d),&amp;nbsp;DAYOFYEAR&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 2010, 4, 15, 105 의 값을 리턴&lt;br /&gt;
&amp;nbsp; mysql&amp;gt; SELECT HOUR(@t), MINUTE(@t), SECONT(@t);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; // 9, 23, 57 을 리턴&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;5. 주석문 사용하기&lt;br /&gt;
&amp;nbsp; -MySql은 총 3가지 형식의 주석문 구문을 제공한다. 이 중하나는 서버로 전달되어 명령을 가능하게 하는 특별한 것도 있다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;0. # 문자로 시작하면 그 라인의 끝까지가 주석이다. 이 주석문 스타일은 펄, AWK, UNIX쉘 같은&amp;nbsp;다른 프로그램들에서 사용하는 것과 같다.&lt;br /&gt;
&amp;nbsp;0. /*&amp;nbsp;로 시작하면&amp;nbsp;*/이거로 끝날때까지 주석이다.&lt;br /&gt;
&amp;nbsp;0.&amp;nbsp;&#039;--&#039;&amp;nbsp;더블데쉬 뒤에 공백문자로 시작하는&amp;nbsp;것은 이 글의 끝가지 주석이다.&lt;br /&gt;
&amp;nbsp;0./*!&amp;nbsp;으로 주석문이 시작되었다면 mysql은 주변 쿼리의 일부로서 주석문안의 내용을&amp;nbsp;실행한다. &lt;br /&gt;
&amp;nbsp; &lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-23-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 5)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-23-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black02.png&quot; onmouseover=&quot;tistoryCcl.show(this, 5)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-23-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 5)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;3;i++){var el=document.getElementById(&#039;ccl-icon-23-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>case</category>
			<category>If</category>
			<category>IN</category>
			<category>INTERVAL</category>
			<category>LEAST GREATEST</category>
			<category>난수발생</category>
			<category>반올림</category>
			<category>비교함수</category>
			<category>삼각함수</category>
			<category>수치함수</category>
			<category>시간함수</category>
			<category>유용한 함수</category>
			<category>절삭</category>
			<category>주석문</category>
			<category>함수</category>
			<category>흐름제어 함수</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/23</guid>
			<comments>http://afeleia.tistory.com/23#entry23comment</comments>
			<pubDate>Wed,  1 Oct 2008 14:33:01 +0900</pubDate>
		</item>
		<item>
			<title>[MySql] NULL VALUE (널 값에 대해..)</title>
			<link>http://afeleia.tistory.com/22</link>
			<description>&lt;br /&gt;
&amp;nbsp;NULL은 수치, 문자열 또는 시간값과 같은 방식으로 특정 값을 표현하는 것이 아니다. 그래서 특이하다. 보통 NULL은 값이 없다라고 생각하는 사람들이 많다. 하지만 NULL의 의미는 그 것과 다르다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;0. NULL은 값이 없다라고 생각 할 수도 있다.&lt;br /&gt;
&amp;nbsp;0. NULL은 알지만 그 값을&amp;nbsp;할당 할 수 없을 때&amp;nbsp;넣을 수 있다. 예를&amp;nbsp; 들어 전화번호를 기입해야 되는데 적어 놓은 메모가 집에 있다. 그럼 우선 NULL값을 넣을 수가 있다.&lt;br /&gt;
&amp;nbsp;0. NULL은 모르는 값일 수도 있다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&amp;nbsp;이 NULL은 함수나 다양한 문맥에서 어떻게 쓰이는지 아는 것도 중요하다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;0. NULL은 SQL&amp;nbsp;키워드로서 null 과 같은 의미를 가진다.&lt;br /&gt;
&amp;nbsp;0.&amp;nbsp;엄연히 빈 문자열과 NULL은 다른 의미를 가진다.&lt;br /&gt;
&amp;nbsp;0. 산술연산이나 비교연산에서 NULL을 사용하면 결과는 보통 NULL이다.&amp;nbsp;NULL과 NULL을 비교해도 NULL이 나오는데 그 이유는 NULL이 모르는 값을 또 다른 모르는 값과 같은지 알수가 없기 때문이다.&lt;br /&gt;
&amp;nbsp;0. 피연산자중 하나가 NULL이면 결과는 NULL이다.&lt;br /&gt;
&amp;nbsp;0. 값이 NULL인지 아닌지 확인하려면 IS NOT NULL이나 IS NULL 연산자를 사용하면 된다. 결과로 TRUE(non-zero)이거나 FALSE(zero)이다.&lt;br /&gt;
&amp;nbsp;0. ORDER BY, GROUP BY, DISTINCT는 모두 암묵적으로 비교 수행을 하는데 이 연산에서는 NULL값들이 서로 동일시 여겨져서 NULL값들이 같은 순으로 정렬되고 같이 그룹핑된다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;NULL 값을 이용하기 위한 함수로 ISNULL()과&amp;nbsp;IFNULL()이 있다. ISNULL()은 인수가 NULL이면 참이고 그렇지 않으면 거짓이다. IFNULL은 2개의 인수를 가진다. 첫번째 인수가 NULL이 아니면 첫번째 인수를 리턴하고 NULL이면 두번째 인수를 리턴한다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;ex)&amp;nbsp;mysql&amp;gt;SELECT IFNULL(NULL,&#039;a&#039;), IFNULL(0,&#039;b&#039;); // a와 0인 결과가 나온다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;함수에서 NULL이 어떻게 사용되는지 아는 것도 중요하다. 예를 들어 CONCAT함수의 경우 NULL이 있으면 NULL을 리턴하지만 CONCAT_WS는&amp;nbsp;NULL을 무시한다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;** NULL의 효용성&lt;br /&gt;
&amp;nbsp; :: 편법이긴 하지만 다음과 같은 경우를 생각해보자.&amp;nbsp;100만명 군인의 데이터가 정장된 테이블이 있다고 가정하자. 이 테이블의 컬럼에는 성별을 적는 컬럼이 있다.&amp;nbsp;100만명중 100명이 여성이다. 이 때에&amp;nbsp;남성인 사람은 값을 NULL로 주었다. 여기서 INDEX를 생성하게 되면 NULL을 제외한 100개의 인덱스가 생성될 것이다. 여성을 검색하게 될 때 NULL이 아닌 남성이란 값을 주면 100만명의 데이터를 비교하여 결과를 출력하지만 NULL을 줬을때 인덱스로 인해 100명을 바로 검색 할 수 있는 이점이 생긴다.&lt;br /&gt;
&amp;nbsp;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-22-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 5)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-22-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black02.png&quot; onmouseover=&quot;tistoryCcl.show(this, 5)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-22-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 5)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;3;i++){var el=document.getElementById(&#039;ccl-icon-22-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>null</category>
			<category>NULL VALUE</category>
			<category>널</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/22</guid>
			<comments>http://afeleia.tistory.com/22#entry22comment</comments>
			<pubDate>Wed,  1 Oct 2008 11:11:38 +0900</pubDate>
		</item>
		<item>
			<title>[MySql]표현방법 (문자변환,LIKE 패턴매치)</title>
			<link>http://afeleia.tistory.com/21</link>
			<description>&lt;br /&gt;
0. LENGTH()는 바이트 단위로 문자열의 길이를 리턴한다.&lt;br /&gt;
0. CHAR_LENGTH()는 문자의 길이를 리턴한다.&lt;br /&gt;
&lt;br /&gt;0. UPPER()와 LOWER()는 인자가 바이너리가 아닌 문자열일 때 대소문자 전환을 한다. 바이너리 문자열일 경우 아무 일도 하지 않는데 바이너리 문자열을 문자열로 변환하면 된다.&lt;br /&gt;
&amp;nbsp;ex) mysql&amp;gt; SELECT UPPER(CONVERT(BINARY &#039;AbCd&#039; USING latin1));&lt;br /&gt;
&lt;br /&gt;0. RAND()는 난수를 발생한다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;0. LIKE 패턴매치&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;-LIKE를 사용해 패턴을 찾을 수가 있다.&lt;br /&gt;
&amp;nbsp; ex) mysql&amp;gt;SELECT * FROM table_name WHERE column LIKE &#039;ABC&#039;; //ABC인 column 결과셋&lt;br /&gt;
&amp;nbsp;- &#039;%&#039; :: 0개 또는 그 이상의 문자를 대체한다.&lt;br /&gt;
&amp;nbsp;- &#039;_&#039; :: 한 문자와 대체한다.&lt;br /&gt;
&amp;nbsp; ex) mysql&amp;gt;SELECT * FROM table-name WHERE column LIKE &#039;A%&#039; //A로 시작하는 결과&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql&amp;gt;SELECT * FROM table_name WHERE column LIKE &#039;A_&#039; //A로 시작하는 두글자&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql&amp;gt;SELECT * FROM table_name WHERE column LIKE &#039;_%&#039; //한글자이상의 결과&lt;br /&gt;
&amp;nbsp;-패턴 매치를 역으로 이용하려면 NOT LIKE 를 사용하면 된다.&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-21-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black01.png&quot; onmouseover=&quot;tistoryCcl.show(this, 5)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-21-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black02.png&quot; onmouseover=&quot;tistoryCcl.show(this, 5)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-21-2&quot; class=&quot;entry-ccl-sa&quot; src=&quot;http://cfs.tistory.com/www/resource/admin/editor/ccl_black04.png&quot; onmouseover=&quot;tistoryCcl.show(this, 5)&quot; onmouseout=&quot;tistoryCcl.hide()&quot; alt=&quot;동일 조건 변경 허락&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if(/MSIE [0-6]\./.test(navigator.userAgent)){for(var i=0;i&lt;3;i++){var el=document.getElementById(&#039;ccl-icon-21-&#039;+i);el.style.filter=&#039;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;&#039;+el.src+&#039;&quot;,sizingMethod=&quot;image&quot;)&#039;;el.src=&#039;http://cfs.tistory.com/www/resource/admin/form/s.gif&#039;;}}
&lt;/script&gt;
&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이선스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>MySql</category>
			<category>length</category>
			<category>like</category>
			<category>lower</category>
			<category>upper</category>
			<category>대문자 변환</category>
			<category>문자 길이</category>
			<category>소문자 변환</category>
			<category>패턴매치</category>
			<author>afeleia</author>
			<guid>http://afeleia.tistory.com/21</guid>
			<comments>http://afeleia.tistory.com/21#entry21comment</comments>
			<pubDate>Wed,  1 Oct 2008 11:00:25 +0900</pubDate>
		</item>
	</channel>
</rss>
