반응형

Data Base Design System 24

Stored Program / Stored Procedure

Stored Program 저장 프로그램 MySQL에서 제공하는 프로그래밍 언어 기능을 통틀어 일컫는 말 쿼리를 하나로 묶어 이름을 붙이고 호출하는 원리로 동작 변수 선언 DECLARE 변수 이름 데이터 형식; 값 대입 SET 변수 이름 = 값; Stored Procedure 저장 프로시저 MySQL에서 제공하는 프로그래밍 기능 쿼리의 집합으로서 동작을 일괄 처리하는데 사용 모듈화해서 필요할 때마다 호출 DELIMITER $$ CREATE PROCEDURE 스토어드 프로시저 이름 BEGIN SQL 프로그래밍 코딩 부분 END $$ ▶ DELIMITER$$ : 스토어드 프로시저의 코딩할 부분을 묶는 역할 → 종료 문자를 ;에서 $$으로 변경 ▶CREATE PROCEDURE : 새로운 프로시저 등록 DELI..

Alter Table / Constraints

ALTER TABLE ... ADD : 테이블에 컬럼 추가 → 생성된 테이블 구조에 새로운 컬럼을 추가 ALTER TABLE 테이블명 ADD 컬럼명 데이터형식; ★ 여러 컬럼을 한 번에 추가하는 경우 ★ ALTER TABLE 테이블명 ADD 컬럼명 데이터형식, 컬럼명 데이터형식 OR ALTER TABLE 테이블명 ADD 컬럼명 데이터형식; ALTER TABLE 테이블명 ADD 컬럼명 데이터형식; 제약조건 (CONSTRAINTS) 만약 종속성이 존재한다면 테이블의 삭제나 변경을 방지 제약조건 정보는 INFORMATION_SCHEMA 데이터베이스의 TABLE_CONSTRAINTS 테이블에 저장되어 있음 ▶ DEPT0 테이블의 제약조건 확인 테이블에 제약 조건을 설정할 수 있음 ALTER TABLE 테이블 명..

Delete

DELETE ... FROM ... WHERE : 하나 혹은 다중의 레코드(행)를 삭제 → 무결성 제약 조건 ▶ CTEST1 테이블의 모든 정보를 출력 ▶ CTEST1 테이블에서 deptno 컬럼 값이 1인 행을 모두 삭제 ▶ CTEST1의 정보를 출력해보면 deptno 컬럼의 값이 1이었던 행이 삭제된 것을 확인할 수 있음 ▶ CTEST4 테이블의 모든 정보를 출력함 ▶ CTEST4 테이블의 전체 레코드 삭제 → 조건절(WHERE)이 없으면 전체 삭제 ▶ 레코드가 삭제되었는지 확인 → Empty set 이름에 a가 포함되는 학생의 정보(데이터)를 삭제하는 sql문을 작성해보자. ▶ STUDENTS 테이블의 모든 정보 출력 → 이름에 a가 들어가는 학생이 누구인지 확인 가능 ▶ STUDENTS 테이블에서..

update

UPDATE ... SET ... WHERE : 하나 혹은 다중의 레코드(행)를 수정 ▶ CTEST1 테이블의 모든 정보 출력 ▶ CTEST1 테이블에서 dname 컬럼이 SCIENCE인 loc 컬럼의 값을 BUCHEON으로 변경 ▶ CTEST1 테이블의 정보를 출력하면 loc 값이 변경되었음을 확인 ▶ CTEST1 테이블의 loc 컬럼값을 모두 NULL로 변경 → 조건절(WHERE)이 없으면 전체가 수정됨 ▶ CTEST1 테이블의 모든 정보를 출력하면 loc 컬럼의 값이 모두 NULL로 변경되었음을 확인 Benny 학생의 전공을 Computer Engineering으로 바꾸는 sql문을 작성해보자. ▶ STUDENTS 테이블의 모든 정보를 출력 ▶ STUDENTS 테이블에서 userName 컬럼 값이 ..

테이블 복사 및 데이터 복사

CREATE TABLE 복사테이블 SELECT 컬럼 FROM 원본테이블 [WHERE 조건문] 스키마와 데이터를 포함한 테이블을 복사 ▶ ctest1에서 모든 정보를 가져와 ctest3 테이블을 새로 생성함 ▶ ctest1과 ctest3 테이블의 정보를 출력하면 둘이 동일함을 볼 수 있음 CREATE TABLE 복사 테이블 LIKE 원본 테이블 테이블의 구조만 복사 ▶ ctest3의 테이블의 구조를 가져와 ctest4 테이블을 생성 ▶ ctest4의 테이블 정보를 출력하면 Empty set이라는 결과가 출력됨 → 테이블의 구조만 복사해왔기 때문에 테이블 정보가 존재하지 않음 INSERT INTO 복사 테이블 SELECT * FROM 원본 테이블 테이블의 데이터 복사 ▶ ctest3 테이블의 정보를 가져와 ..

Insert

INSERT INTO 테이블(컬럼1, 컬럼2, ..., 컬럼N) VALUES (값1, 값2, ..., 값N) : 하나의 레코드(행)을 삽입 ▶ 현재 ctest1 테이블에 저장되어 있는 정보 출력 ▶ ctest1 테이블에 deptno은 2, dname은 'COMPUTER', loc은 'INCHEON' 데이터를 삽입 ▶ 데이터를 삽입 후 ctest1 테이블의 정보 출력 ▶ ctest1 테이블에 deptno은 55, dname은 'SCIENCE', loc은 NULL값 데이터를 삽입 ▶ 데이터를 삽입 후 ctest1 테이블의 정보 출력 ▶ ctest1 테이블에서 deptno과 dname에 각각 1, 'ENGLISH' 데이터를 삽입 → NULL값을 기재하지 않고 정확한 컬럼명을 순서대로 나열함으로써 삽입 가능 ▶..

제약 조건

Constraints 종속성이 존재한다면 테이블의 삭제나 변경을 방지함 NOT NULL : NULL 값을 허용하지 않음 → 반드시 특정 값이 삽입되어야 함 ▶ 테이블을 생성하기 전, 이미 존재할 수 있기 때문에 테이블 제거 작업을 먼저 해줌 UNIQUE : 삽입되는 값이 유일해야 함 PRIMARY KEY : 해당 테이블의 기본키를 지정함 FOREIGN KEY : 해당 컬럼의 값이 외부 테이블의 값을 참조함 → 외부 테이블에 없는 값을 사용해선 안 됨

테이블 생성

테이블 데이터 삭제 drop table 테이블명; ▶ 만들고자 하는 테이블이 기존에 생성되어 있을 수 있으므로 데이터를 삭제 해 줌 ▶ create table example : 'example'이라는 이름의 테이블을 생성함 ▶ deptno int(2) : deptno attribute에 2자리 int 생성 ▶ dname varchar(14) : dname attribute에 14자리 varchar 생성 ▶ loc varchar(13) : loc attribute에 13자리 varchar 생성 ▶ primary key(deptno) : primary key로 deptno attribute를 지정 Q1. 아래의 구조를 가진 Students 테이블을 생성하세요. sid : int, PRIMARY KEY use..

Group Functions

Group Functions : 특정 그룹에 대해 하나의 결과 도출 SELECT column, group_function FROM table [ WHERE condition ] [ GROUP BY group_by_expression ] [ HAVING group_condition ] [ ORDER BY column ] ▶ [ ] 속 문법들은 생략 가능을 의미 AVG() : 평균을 구함 COUNT() : 결과 행의 개수 출력 → 전체 행의 개수 출력 : COUNT(*) SUM() : 합계를 구함 MAX() : 최대값을 구함 MIN() : 최소값을 구함 GROUP BY : 그룹을 형성하는 기준이 되는 컬럼 지정 ▶ emp 테이블에서 job을 기준으로 그룹 지어 job과 sal의 평균을 출력 HAVING : ..

Subquery

Subquery 하나의 sql 문장의 절에 중첩된 select 문장 → 괄호로 묶어서 사용 서브쿼리의 결과 1개 : '=' 사용 ▶ emp 테이블에서 ename이 'SCOTT'인 사원의 deptno과 동일한 emp 테이블의 ename 출력 서브쿼리의 결과 1개 이상 : 'in' 사용 ▶ emp 테이블에서 sal이 1500보다 많은 사원의 empno과 동일한 emp 테이블의 ename 출력 from + subquery : from 절에 서브쿼리 사용 → 반드시 별칭 사용해야 함 ▶ emp table에서 sal이 1500보다 큰 사원의 empno과 ename이 동일하고 이름이 A로 시작하는 사원의 empno과 ename 출력 ★ 별칭 미지정 ★ Q1. EMP 테이블의 "ALLEN" 사원의 이름(ENAME)과..

반응형