Up: [[database]] [[query_language]] =,query_language =,query_language . query_language { 질의언어 질의어 ...중에 TBD Sub: [[SQL,structured_query_language]] - ''de facto standard ?'' [[QUEL]] =,QUEL =,QUEL . QUEL { Foldoc:QUEL WtEn:QUEL Ggl:QUEL Ndict:QUEL ... "QUEL"} Up: [[질의query]] ''-> [[질의,query]]'' [[언어,language]] WtEn:query_language WpSp:query_language wwwwwwwwww WpEn:query_language mmmmmmmmmmmm } Sub: [[Khan_Academy_SQL]] [[마이SQL,MySQL]] ? [[포스트그레스QL,PostgreSQL]] ?? ////////// ************ 지금까지 2.2.1 속성의 정의 https://terms.naver.com/entry.naver?docId=3431182&cid=58430&categoryId=58430&expCategoryId=58430 까지 정리했고, 다음엔 2.2.2 키의 정의 https://terms.naver.com/entry.naver?docId=3431183&cid=58430&categoryId=58430&expCategoryId=58430 를 정리예정. ************ = sql문 기능에 따른 구분 = [[테이블table]] 테이블 생성 CREATE TABLE {{{ CREATE TABLE 테이블이름 ( ⓐ 속성이름 데이터타입 [NOT NULL] [DEFAULT 기본값] ⓑ [PRIMARY KEY (속성리스트)] ⓒ [UNIQUE (속성리스트)] ⓓ [FOREIGN KEY (속성리스트) REFERENCES 테이블이름(속성리스트)] [ON DELETE 옵션] [ON UPDATE 옵션] ⓔ [CONSTRAINT 이름] [CHECK(조건)] ); }}} ⓐ [[속성attribute]] 이름, data_type, 기본적 제약 사항 정의 ⓑ [[기본키primary_key]]로 테이블에 하나만 존재 가능 ⓒ [[대체키alternate_key]]로 테이블에 여러개 존재 가능 ⓓ [[외래키foreign_key]]로 테이블에 여러개 존재 가능 ⓔ 데이터 [[무결성integrity]]을 위한 제약조건([[무결성제약조건integrity_constraint]]? chk)으로 테이블에 여러 개 존재 가능 SQL에서 [[속성attribute]]의 data_type을 지정할 땐 * [[널null]] 값 허용 여부 * 기본 값 필요 여부 를 결정해야 한다. 널 값이 필요 없으면 NOT NULL 지정. [[기본키primary_key]]로 지정한 [[속성attribute]]은 굳이 NOT NULL을 표기하지 않아도 자동으로 그 속성을 갖지만, 제약조건을 더 명확히 표현하기 위해 표현해도 됨. 속성의 데이터타입data_type ||INT, INTEGER ||정수 || ||SMALLINT || || ||CHAR(n), CHARACTER(n) ||길이 n인 고정 길이 문자열 || ||VARCHAR(n), CHARACTER VARYING(n) ||최대 길이 n인 가변 길이 문자열 || ||NUMERIC(p, s), DECIMAL(p, s) ||고정소수점 실수[[br]]p는[[br]]s는TBW || ||FLOAT(n) ||길이가 n인 부동소수점 실수 ''길이가 뭔뜻인지'' || ||DATETIME, DATE ||년월일 - 날짜 || ||TIME ||시분초 - 시각 || Ref. [[https://terms.naver.com/entry.naver?docId=3431181&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 테이블의 생성]] [[https://terms.naver.com/entry.naver?docId=3431182&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 속성의 정의]] ---- 테이블 변경 ALTER TABLE ---- 테이블 제거 DROP TABLE ////////// [[SQL_data_type_자료형]] { '''SQL 자료형''' ||CHAR(n) ||길이 n인 고정 길이 문자열 || ||VARCHAR(n)||길이 최대 n인 가변 길이 문자열 || ||INT ||정수형 || ||FLOAT(n) ||n개의 자리수를 갖는 부동소수점형 || ||DATE ||날짜형 || ||TIME ||시간형 || Ref: [[https://terms.naver.com/entry.naver?docId=2270455&cid=51173&categoryId=51173&expCategoryId=51173 컴퓨터 개론: 릴레이션 생성]] } [[SQL_functions]] { Up: [[SQL,structured_query_language]] <> = CONCAT = CONCAT(expr1, expr2, ...) 붙여준다. - TBW 더 상세히 서술 //concatenation } SQL_구문 { Up: [[SQL,structured_query_language]] tableofcontents = ALTER TABLE = 기존 릴레이션의 [[속성attribute]]을 추가/삭제/변경하는 명령. 형식: ALTER TABLE 기존릴레이션이름 ADD 속성이름 자료형; [* https://terms.naver.com/entry.naver?docId=2270457&cid=51173&categoryId=51173&expCategoryId=51173 컴퓨터 개론: 릴레이션 변경] ALTER TABLE "테이블명" (MODIFY or ADD) "컬럼명" "변수형" "속성 이름 (ex. NOT NULL , PRIMARY KEY, AUTO_INCREMENT 등등)" MODIFY => 속성을 변경하고자 때 ADD => 속성을 추가하고자 할때 [* https://programming119.tistory.com/6] = AS = 이름을 지정. ex. SELECT dominoPizza AS Domino FROM food food 테이블에서 dominoPizza 라는 컬럼의 이름을 Domino 로 지정해 Select 결과를 나타내준다.[* https://programming119.tistory.com/5] = CREATE TABLE = CREATE TABLE [[relation]]이름 ( 속성1 [[SQL_data_type|자료형]]1, 속성2 자료형2, ..., 속성n 자료형n); 끝에 PRIMARY KEY (속성명) 으로 [[기본키primary_key]]를 지정 가능. 자료형 뒤에 NOT NULL을 지정 가능. Ref. [[https://terms.naver.com/entry.naver?docId=2270455&cid=51173&categoryId=51173&expCategoryId=51173 컴퓨터 개론: 릴레이션 생성]] = DELETE = 삭제. ex1. 특정 필드명을 가진 행 삭제 DELETE FROM "테이블명" WHERE "필드명" = "??" ; (??는 삭제할 필드의 조건) ex2. 테이블의 행들 전체 삭제 DELETE FROM "테이블명" ; [* https://programming119.tistory.com/17] https://everything2.com/title/delete (세번째) = DROP TABLE = [[relation]]을 삭제하는 명령. 형식: DROP TABLE 릴레이션이름; = INSERT = 데이터 넣기. ex1. INSERT INTO 테이블명(필드1, 필드2, 필드3, ...) VALUES (데이터값1, 데이터값2, 데이터값3, ...) (선택하지 않은 필드들은 NULL 값이 자동으로 들어감) ex2. INSERT INTO 테이블명 VALUES (데이터값1, 데이터값2, 데이터값3, ...) 모든 필드들에 데이터값을 넣기 (데이터 값은 필드 순서대로 해야됨)[* https://programming119.tistory.com/8] = UPDATE = 수정(modify)하는 명령. {{{UPDATE 대상 SET fieldname=value WHERE ...}}} ex. {{{UPDATE example SET firstname='Tom', lastname='Smith' WHERE nickname='hax0r'}}} https://everything2.com/title/update == 특정 조건을 가진 행 삭제 == UPDATE "테이블명" SET "열" = "변경할 값" WHERE "특정 조건" ex. UPDATE instructor SET salary = salary * 1.3 WHERE salary < 500000 교수 테이블에서 월급이 50만원 보다 적은 교수들의 월급을 30% 증가시킨다. [* https://programming119.tistory.com/40] } = SQL Query = rel. [[질의query]] == Subquery == see https://programming119.tistory.com/35 subquery 사용 시 테이블이 생성되는데, 계속 사용되면 메모리 문제가 생겨서, WITH 절을 써서 임시 테이블을 만들 수 있다. 남용하면 안좋다. see https://programming119.tistory.com/36 = WHERE clause = 조건에 맞는 것만을 .. https://everything2.com/title/where = LIKE clause = '비슷한'. 이거 pattern_matching?? chk https://everything2.com/title/Like = FROM clause = ---- Up: [[database]]