DDL TABLE 을만들자 웹데이터베이스
TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE 생성 http://dev.mysql.cm/dc/refman/5.1/en/create-table.html CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definitin, ) [table_ptins] [partitin_ptins] [select_statement]; TABLE 제거 DROP TABLE [IF EXISTS] tbl_name;
TABLE : 예를통한생성문 CREATE TEMPORAY TABLE tmp_tab ( myid int NOT NULL ); 임시테이블 tmp_tab 을만든다. 테이블의열은 myid 라는이름을가지며저장될자료의형태는정수형자료 (INT) 이고반드시값이있어야한다 (NOT NULL). TEMPORAY TABLE 은현재접속에서만유지되는 TABLE 로현재접속을종료하면사라지는 TABLE 이다. CREATE TABLE dept_tab ( dept_id int NOT NULL PRIMARY KEY, deptkname varchar(255) NOT NULL, deptename varchar(255) NOT NULL ); 테이블 dept_tab 을만든다. dept_id 는주키이다. > desc dept_tab
TABLE : 예를통한생성 Create Definitin cl_name clumn_definitin Clumn definitin Data_type [NOT NULL NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] PRIMARY [KEY]] [COMMENT string ] [reference_definitin] CREATE TABLE student_tab ( myid int NOT NULL AUTO_INCREMENT PRIMARY KEY, mysno char(8) NOT NULL UNIQUE KEY, myname varchar(50) NOT NULL DEFAULT 없음, mydept int NOT NULL REFERENCES dept_tab(dept_id) COMMENT dept_tab의 dept_id를참조한다. ); => 에러발생 > desc student_tab
TABLE : 자료형 자료형 지정형태 : 자료형이름 ( 정의 ) 문자열자료형 고정길이문자열과가변길이문자열 고정길이문자열 지정한크기만큼용량할당 지정한크기보다적게문자열이입력되더라도실제차지하는양은지정한크기와동일 검색에있어상대적으로빠르다. CHAR : 뒤에붙는공백문자는무시된다. 가변길이문자열 지정한크기는최대크기 지정한크기보다적게문자열이입력될경우실제차지하는용량은문자열의길이만큼만차지함 용량을효율적으로관리할수있다. VARCHAR, TEXT 등
TABLE : 자료형 문자열자료형 Value CHAR(4) Strage Required VARCHAR(4) Strage Required '' ' ' 4 bytes '' 1 byte 'ab' 'ab ' 4 bytes 'ab' 3 bytes 'abcd' 'abcd' 4 bytes 'abcd' 5 bytes 'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes > CREATE TABLE vc (v VARCHAR(4), c CHAR(4)); > INSERT INTO vc VALUES ('ab, 'ab'); > SELECT * FROM vs; > INSERT INTO vc VALUES ('ab ', 'ab '); > SELECT CONCAT('(', v, ')'), CONCAT('(', c, ')') FROM vc;
TABLE : 자료형 문자열자료형 열거형자료 : ENUM Dmain 을한정하여해당 Dmain 의값만입력될수있도록한다. Ex > CREATE TABLE enumtest ( name ENUM('small', 'medium', 'large') ); > INSERT INTO enumtest VALUES ( small ); > INSERT INTO enumtest VALUES ( medium-large ); > SELECT * FROM enumtest; 집합자료 : SET 한정된 Dmain 들의부분집합이값이되도록한다 ( 최대 64 개의원소로 Dmain 을구성할수있다 ) 중복될경우생략된다. > CREATE TABLE settest ( sd SET( a', b', c, d ) ); > INSERT INTO settest VALUES ( a, d ), ( d, a ), ( a, d, d ), ( a, d, d ); > SELECT * FROM settest;
TABLE : 자료형 숫자자료형 정수형 정수자료형 [UNSIGNED] [ZEROFILL] Type Strage (Bytes) Minimum Value (Signed/Unsigned) Maximum Value Signed/Unsigned) TINYINT 1 SMALLINT 2 MEDIUMINT 3 INT 4 BIGINT 8-128 127 0 255-32768 32767 0 65535-8388608 8388607 0 16777215-2147483648 2147483647 0 4294967295-9223372036854775808 9223372036854775807 0 1844674407370955161
TABLE : 자료형 숫자자료형 실수형 부동소수점형 [(M, D)] [UNSIGNED] [ZEROFILL] FLOAT 4Byte, 단일정밀도 -3.402823466E+38 에서 -1.175494351E-38, 0 이고, 그리고 1.175494351E-38 에서 3.402823466E+38 M : 전체자리, D : 소수이하자리수지정 DOUBLE 고정소수점형 8Byte, 이중정밀도 DECIMAL (M, D) 1.7976931348623157E+308 에서 -2.2250738585072014E- 308, 0, 그리고 2.2250738585072014E-308 에서 1.7976931348623157E+308 까지 65 자리까지표현가능
TABLE : 자료형 > CREATE TEMPORARY TABLE numerictest ( -> cl1 int zerfill, -> cl2 int unsigned, -> cl3 flat(5, 2), -> cl4 decimal(5, 2) -> ); > INSERT INTO numerictest VALUES (1, -1, 5.2, 5.2); > INSERT INTO numerictest VALUES (1, 12, 5.222, 5.222); > SELECT * FROM enumtest; > shw warnings;
다음시간에는 SQL 에대해학습합니다. TABLE 나머지에대해이야기하고 TABLE 만드는과정을정리합니다.