SQL 기본 - 데이터 정의어, DDL(CREATE, ALTER, DROP)

웹 & 안드로이드/DataBase|2014. 2. 28. 16:30

 

 

CREATE TABLE

* 테이블을 생성하는 명령어.

 

* 기본적인 생성 sql문장

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE 테이블명
(
컬럼명1    데이터유형    [디폴트 값],
컬럼명2    데이터유형    [디폴트 값],
컬럼명3    데이터유형    [디폴트 값]
...
..
.
컬럼명n    데이터유형    [디폴트 값],
CONSTRAINT    제약조건 명     제약조건 종류     해당 컬럼명
);
 

 

* 제약조건의 종류

- PRIMARY KEY : 테이블에 저장된 행을 고유하게 식별하기 위한 기본 키. 하나의 테이블에 하나의 기본키 제약만 정의할 수 있다. UNIQUE KEY + not null과 같은 형태.

 

- UNIQUE KEY :  행을 고유하게 식별 할 수 있는 키. 기본키와 다르게 NULL이 허용.

 

- NOT NULL :  NULL값 입력을 금지. 입력 필수인 필드를 만든다.

 

- CHECK : 입력할 수 있는 값의 범위 등을 지정. TRUE, FALSE로 평가할 수 있는 논리식을 지정.

 

- FOREIGN KEY : 외래키. 다른 테이블의 기본키를 참조하는 키.

 

※ NULL의 의미는 공백(" "), 숫자 0과는 전혀 다른 값. 아직 정의되지 않은 미지의 값이나 현재 데이터를 입력하지 못하는 경우를 뜻함.

 

* SELECT 문장을 통해 테이블 생성이 가능하다.

1
2
3
CREATE TABLE 복사한 테이블 명
AS SELECT * FROM 원본 테이블 명;
 

 

 

 

ALTER TABLE

* 정의한 테이블 구조를 수정.

 

* ADD COLUMN, 컬럼 추가

: 기존의 테이블에 컬럼을 추가한다.

 

1
2
ALTER TABLE 테이블 명
ADD (추가할 컬럼명    데이터 유형    [제약조건]);

※ 이 경우 추가한 컬럼은 무조건 마지막에 붙는다. 순서를 조정 할 수 없다.

 

*  DROP COLUMN, 컬럼 삭제

: 기존에 존재한 컬럼을 삭제한다.

1
2
ALTER TABLE 테이블 명
DROP 컬럼명;

 

* MODIFY COLUMN, 컬럼 수정

: 기존의 컬럼의 정의 조건을 수정한다.

1
2
ALTER TABLE [테이블 명]
ALTER (컬럼명    데이터유형    [제약조건]); 

 

 

* RENAME COLUMN, 컬럼명 수정 (※ ANSI 표준이 아닌 ORACLE등의 일부 DBMS에만 적용.)

: 컬럼의 이름을 수정한다.

1
2
ALTER TABLE [테이블 명]
RENAME COLUMN    기존의 컬럼명    TO    수정할 컬럼명;

 

* DROP CONSTRAINT, 제약조건 삭제

: 테이블 생성시에 부여했던 제약조건을 삭제한다.

1
2
ALTER TABLE 테이블 명
DROP CONSTRAINT 제약조건 명;

 

 

* ADD CONSTRAINT, 제약조건 추가

: 제약조건을 추가한다

1
2
ALTER TABLE 테이블 명
ADD CONSTRAINT    제약조건 명   제약조건    컬럼명;

 

 

 

DROP TABLE

* 테이블을 완전히 삭제한다.

 

1
DROP TABLE 테이블명;

 

TRUNCATE TABLE

* 테이블 구조는 그대로 두고, 데이터 행만을 제거하는 명령어. 사용 후 테이블을 재사용 할 수 있다.

 

1
TRUNCATE TABLE 테이블 명;

 

 

모든 내용은 'SQL 전문가 가이드, 한국데이터베이스진흥원'에서 인용, 발췌하였습니다.

댓글()

나만의 쓰기 편한 db클래스 구현(2.17 수정)

웹 & 안드로이드/PHP|2014. 2. 14. 17:05

 

- 2.17 mysql함수로 쿼리 결과 나오도록 수정

 

- db클래스

: 객체를 여러개 만들 필요가 없기 때문에 싱글톤으로 구현.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php 
class DB_mysql{
    /* singleton pattern. */
    private static $instance = null;
    
    private function __construct(){
    }
    public static function &getInstance(){
        if(self::$instance == null){
            self::$instance = new self();
        }
        return self::$instance;
    }
    
    /* Class start. */
    public $conn = null; #db connection info.
    
    //db connect.
    public function connect($host$id$pw$db_name){
        if(function_exists('mysqli_connect')){
            //mysqli function used.
            $this->conn = mysqli_connect($host$id$pw$db_name
                or die('error! db connect failed.<br />').mysqli_connect_error();
        }else{
            //mysql function used.
            $this->conn = mysql_connect($host$id$pw
                or die('error! db connect failed.<br />').mysql_error($this->conn);
            mysql_select_db($db_name$this->conn);
        }
    }
    
    //select query. $arr[row num][table field].
    public function query_of_select(&$sql){
 
        $arr = array();
        $result = $this->query($sql);
        
        if($result == ''return null;
        
        if(function_exists('mysqli_fetch_fields') and function_exists('mysqli_fetch_array')){
            $fieldsinfo = mysqli_fetch_fields($result);
            $row = null;
 
            $i = -1;
            do{
                foreach ($fieldsinfo as $field){
                    $arr[($i == -1)? 0: $i][$field->name] = ($i == -1)? 'null'$row[$field->name];
                }
                $i++;
            }while($row = mysqli_fetch_array($result));
            
            mysqli_free_result($result);
        
        }else{
            $fieldsinfo = array();
            $row = null;
 
            for($i = 0; $field = mysql_fetch_field($result); $i++){
                $fieldsinfo[$i] = $field;
            }
 
            $i = -1;
            do{
                foreach ($fieldsinfo as $field){
                    $arr[($i == -1)? 0: $i][$field->name] = ($i == -1)? 'null'$row[$field->name];
                }
                $i++;
            }while($row = mysql_fetch_array($result));
 
             mysql_free_result($result);#result 바로 자원 반납.
            
        }
        
        return $arr;
    }
    
    //insert, update, delete 나 create, alter, drop 등 결과가 없는 쿼리 전용.
    public function query_of_CUD(&$sql){
        return $this->query($sql);
    }
    
    //db에 쿼리 날림.
    private function query(&$sql){
        if(function_exists('mysqli_connect')){
            $result = mysqli_query($this->conn, $sql) and $sql = null; #db입력 후, sql변수 null로 초기화.
        }else{
            $result = mysql_query($sql$this->conn) and $sql = null;
        }
        return $result;
    }
    
    //db 접속 닫음.
    public function close(){
        function_exists('mysqli_close')
            ? mysqli_close($this->conn) 
            : mysql_close($this->conn);
    }
    
    //에러 출력.
    public function error(){
        echo function_exists('mysqli_error')
            ? mysqli_error($this->conn)
            : mysql_error($this->conn);
    }
 
    //테이블 형태로 출력.
    public static function print_result_totable($result){
        echo "<style>th{background-color:#aaaaaa;}td{border:black 1px solid;font-size:1em;}</style>";
        echo "<table>";
        echo "<tr><th></th>";
            foreach ($result[0] as $fieldname => $v){
                echo "<th>".$fieldname."</th>";
            }
            echo "</tr>";
        foreach ($result as $rownum => $row){
            echo "<tr><td>".($rownum+1)."</td>";
            foreach ($row as $value){
                echo "<td><center><xmp>".$value."</xmp></center></td>";
            }
            echo "</tr>";
        }
        echo "</table>";
    }
}
?>

 

-사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$db = DB_mysql::getInstance();
$db->connect('host''db_id''db_pw''db_name');
 
$sql = "select * from sboard";
 
$result = $db->query_of_select($sql);
echo "<table>";
foreach ($result as $rownum => $row){
    echo "<tr><td>".$rownum."행</td>";
    foreach ($row as $field => $value){
        echo "<td>".$field." : ".$value."</td>";
    }
    echo "</tr>";
}
echo "</table>";
 
$db->close();
?>

 

 

댓글()

[PHP] empty 함수

웹 & 안드로이드/PHP|2014. 2. 14. 11:17

empty함수를 통해 공백을 반환하는 경우

 

공백, 0(숫자든 문자든), null정도..

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$t = '';//공백
echo empty($t)."<br />";//1 반환
 
$t = 0;//숫자 0
echo empty($t)."<br />";//1 반환
 
$t = null;//null
echo empty($t)."<br />";//1 반환
 
$t = '0';//문자 0
echo empty($t)."<br />";//1 반환
 
$t = "0";//문자 0
echo empty($t)."<br />";//1 반환
 
$t = 'null';//문자 null
echo empty($t)."<br />";//'' 반환
 
$t = "null";//문자 null
echo empty($t)."<br />";//'' 반환
 
$t = ' ';//문자 ' '
echo empty($t)."<br />";//'' 반환
 
$t = 1;//숫자 1
echo empty($t)."<br />";//'' 반환
 
$t = 's';//문자열
echo empty($t)."<br />";//'' 반환
?>

 

댓글()

[PHP] 문자열 치환 str_replace

웹 & 안드로이드/PHP|2014. 2. 13. 17:31

기본적인 사용법

 

str_replace(찾을 문자열, 바꿀 문자열, 내용)

 

 

1
2
3
4
<?php
$string = "123456789abcdefghijklmnop";
echo str_replace("1234""일이삼사"$string);
?>

 

* 결과 

일이삼사56789abcdefghijklmnop

 

 

**배열 형식으로 찾아 치환하는것이 가능하다.

 

찾을 문자열의 배열 array(1번, 2번, 3번, ...);

바꿀 문자열의 배열 array(1번, 2번, 3번, ...);

 

찾을 배열의 1번 문자열은 바꿀 배열의 1번 문자열로 치환된다.

2번은 2번으로...

 

1
2
3
4
5
6
<?php
$string = "123456789abcdefghijklmnop";\
$no_string = array("1234""789""bcd");
$replace_string = array("일이삼사""칠팔구""비씨디");
echo str_replace($no_string$replace_string$string);
?>

* 결과

일이삼사56칠팔구a비씨디efghijklmnop

댓글()

[PHP] php문서 내에 php버전을 확인하기.

웹 & 안드로이드/PHP|2014. 2. 13. 14:02
1
2
3
4
<?php
echo (version_compare(phpversion(), '5.2.4''>=')) ? '호환 가능' : '호환 불가';
echo ' : '.phpversion();
?>

출처 - http://www.xpressengine.com/tip/20798445

'웹 & 안드로이드 > PHP' 카테고리의 다른 글

[PHP] empty 함수  (0) 2014.02.14
[PHP] 문자열 치환 str_replace  (1) 2014.02.13
[PHP] GET, POST로 넘어온 파라메터 변수화.  (0) 2014.02.13
[PHP] and, or 문법.  (0) 2014.02.11
[PHP] Singleton 패턴.  (0) 2014.02.11

댓글()

지연 객체

카테고리 없음|2014. 2. 13. 13:17

http://youtu.be/30oDbHYyaME

댓글()

[PHP] GET, POST로 넘어온 파라메터 변수화.

웹 & 안드로이드/PHP|2014. 2. 13. 09:57
1
2
3
4
5
6
7
<?php
foreach ($_GET as $key => $value){
    ${$key} = $value;
    
    echo $key." : ".${$key}."<br />";
}
?>

입력 주소

 -  http://localhost/test/test.php?test=1&test2=2&test3=1939j3jrj3

 

결과

test : 1
test2 : 2
test3 : 1939j3jrj3

 

$test, $test2, $test3 이런식으로 사용 가능.

'웹 & 안드로이드 > PHP' 카테고리의 다른 글

[PHP] 문자열 치환 str_replace  (1) 2014.02.13
[PHP] php문서 내에 php버전을 확인하기.  (0) 2014.02.13
[PHP] and, or 문법.  (0) 2014.02.11
[PHP] Singleton 패턴.  (0) 2014.02.11
[PHP] 클래스의 직렬화, 역직렬화  (0) 2014.02.11

댓글()

에지윅 webnote - 설치가 간편한 글 에디터

웹 & 안드로이드/HTML5|2014. 2. 12. 16:08

홈페이지 및 다운로드 http://www.phpwork.kr/

 

설치가 간편합니다.

 

홈페이지에 압축파일을 다운 받고,

 

 

 

 

webnote폴더를 프로젝트 폴더에 붙여 넣기 합니다.

 

 

추가해야 하는 코드

1
2
3
4
5
6
7
8
9
10
11
<html>
  <head>
    
  </head>
 
  <body>
    <script src="/webnote/webnote.js"></script>
    <textarea name="contents1" editor="webnote" 
                  tools="deny" style="height:250px;width:100%">본문내용</textarea>
  </body>
</html>

 

결과

 

 

 

 

댓글()

[PHP] and, or 문법.

웹 & 안드로이드/PHP|2014. 2. 11. 18:39

and   (식1 and 식2)

- 식1을 실행 후, 식 2를 실행.

 

 

1
2
3
4
<?php
//db에 쿼리를 날리고, 쿼리가 입력된 변수를 null로 초기화.
mysqli_query($this->conn, $sql) and $sql = null;
?>

 

 

or   (식1 or 식2)

- 식1을 실행하고 결과가 공백이거나 0, false, 완전히 결과가 나오지 않을 경우(중간에 에러가 발생할 경우), 식2를 실행.

 

 

1
2
3
4
<?php
//mysql에 접속. 접속에 실패하면 'error! db connect failed.'문구를 뿌리고 끝냄.
mysqli_connect('host''db_id''db_pw''db_name') or die('error! db connect failed.');
?>

댓글()

[PHP] Singleton 패턴.

웹 & 안드로이드/PHP|2014. 2. 11. 10:29

Singleton : 객체를 생성할 때 단 하나만 생성하고, 객체를 호출 할 때 하나의 객체만을 사용하는 패턴.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
class Myclass{
    /* singleton 패턴. */
    private static $instance = null;
    
    private function __construct(){}
    public static function &getInstance(){
        if(self::$instance == null){
            self::$instance = new self();
        }
        return self::$instance;
    }
}
?>

 

생성자를 private로 외부에서 생성자 호출을 막은 것이 포인트.

 

자기 자신을 담을 변수를 static으로 선언 후, getInstance() 메소드를 통해 최초 호출시 객체 생성, 그 이후 호출시 이미 생성된 객체를 리턴 하도록 함.

댓글()