SQL (Strunctured Query Language) 분류 ① 데이터 정의어 (DDL: Data Definition Language)→ 논리/물리적 데이터 구조 정의CREATE (생성)CREATE DOMAIN / SCHEMA / TABLE / VIEW / INDEX → 생성ALTER (변경)TABLE 이름 변경 → ALTER TABLE / 컬럼 추가DROP (삭제)DROP DOMAIN / SCHEMA / TABLE / VIEW / INDEX → 삭제* CASCADE : 참조하는 모든 개체 함께 제거* RESTRICTED : 제거할 요소를 다른 개체가 참조 시 제거 취소 ② 데이터 조작어 (DML : Data MAnipulation Language)SELECT (검색)SELECT FROM 테이블명 ..
My Tech Blog (데이터베이스)
오늘의 명언
■ 정규화이상(Anomaly) 현상이 발생하지 않도록 중복성/종속성 최소화 하기 위한 작업논리적 설계 단계에서 수행, 속성 수가 적은 테이블로 분할되어 관리가 용이해짐데이터 구조 안정성 최대화 / 데이터 삽입 시 릴레이션 재구성 필요 최소화 ■ 이상 현상 종류삽입 이상 : 데이터 삽입 시 불필요한 데이터가 함께 삽입삭제 이상 : 튜플 삭제 시 필요한 데이터도 함께 삭제갱신 이상 : 일부만 수정되어 데이터 불일치 → 정보 모순 발생 ■ 정규화 과정 외우는 법 : 도부이결다조(두부 이걸 다줘)제 1 정규형모든 도메인(Domain)이 원자 값만으로 되어 있음제 2 정규형- 기본키가 아닌 속성이 기본키에 대한 완전 함수적 종속 만족- 부분적 함수 종속을 제거한 정규형제 3 정규형기본키가 아닌 모든 속성이 기본키..
내가 보려고 정리한 것 ■ 스키마외부 스키마(서브스키마)사용자 관점의 스키마 → 하나의 DB에 여러 개의 외부 스키마가 존재사용자, 프로그램마다 다양한 형태의 논리적 구조로 존재개념 스키마사용자와 DB 관리자 관점의 스키마 / DB의 전체적인 논리적 구조일반적으로 하나의 DB에는 하나의 개념 스키마 존재→ 데이터 개체/관계/제약조건/접근권한/무결성 규칙 명세내부 스키마DB 설계자/개발자 관점의 스키마개념 스키마를 물리적 저장장치에 구현하는 방법을 정의→ 물리적 구조 / 내부 레코드의 물리적 순서 ■ 데이터 언어DDL(Data Definition Language)데이터베이스 구조/제약 조건 정의DML(Data Manipulation ~)데이터 처리/조작에 사용되는 언어DCL(Data Control ~..
📑 1. 문제설명😉 2. 문제 요약문제에서 주어진 조건PATIENTDOCTORAPPOINTMENT환자 정보의사 정보진료 예약 목록PT_NO, PT_NAME, GEND_CD, AGE, TLNODR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNOAPNT_YMD, APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_CNCL_YN, APNT_CNCL_YMD환자번호, 환자이름, 성별코드, 나이, 전화번호의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호진료 예약일시, 진료예약번호, 환자번호, 진료과코드, 의사ID, 예약취소여부, 예약취소날짜 문제쪼개기✅ 2022년 4월 13일 AP.APNT_YMD LIKE '2022-04-13%'✅ 취소되지 않은..
📑 1. 문제설명❌ 2. 실패한 시도위치틀린부분맞는 쿼리설명SELECTAVERAGEAVG()평균구하는 함수AVERAGE()가 아니고AVG()임 YEAR(YM)YEAR(YM) AS `YEAR`별칭 써야 함컬럼명 YEAR로 출력 ROUND(AVG(PM_VAL1),3) ROUND(AVG(PM_VAL1),2)소수셋째자리에서 반올림하려면 둘째자리까지 결과값이 나타나야 하니까ROUND(컬럼명, 2)로 해야 함WHERELocation2 IS '수원'Location2 = '수원'IS는 NULL 값과의 비교에서 만 사용됨ORDER BYYEAR(YM)YEARSQL의 실행순서는ORDER BY절이 가장마지막에 실행되기 때문에ALIAS 명으로 써줘도 된다꼭 별칭 써야하는 건 아님 SELECT YEAR(YM) AS YEAR,..
📑 1. 루시와 엘라 찾기 ⭐ 정답코드SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKEFROM ANIMAL_INSWHERE NAME IN ('Lucy','Ella','Pickle','Rogan','Sabrina','Mitty')📑 2. 한 해에 잡은 물고기수 구하기⭐ 정답코드COUNT(ID)에 `FISH_COUNT` 라는 별칭을 주어야 함문제 예시에서 DATE 형식이 'YYYY/MM/DD'로 되어 있는 걸 보고 약간 복잡하게 풀었다.SELECT COUNT(ID) AS FISH_COUNTFROM FISH_INFOWHERE DATE_FORMAT(Time, '%Y/%m/%d') LIKE '2021%' 다른 사람들이 풀이한 것을 확인했는데 더 간단하게 쿼리를 작성할 수 있다. 이 문제는..
📑 1. 문제설명⭐ 2. 정답코드SELECT Animal_id, name, CASE WHEN Sex_upon_intake LIKE '%Neutered%' OR Sex_upon_intake LIKE '%Spayed%' THEN 'O' ELSE 'X' END AS 중성화FROM ANIMAL_INSORDER BY ANIMAL_ID; 😊 3. TMIANSI SQL 표준에서는 ALIAS 에 작은따옴표를 사용하는 것이 허용되지 않지만 써도 상관은 없다. (나는 따옴표 썼음)SELECT Animal_id, name, CASE WHEN Sex_upon_intake LIKE '%Neutered%' ..
윈도우키 > MYSQL Command Line Client MySQL 계정 비밀번호 입력한 뒤CREATE DATABASE BBS;USE BBS; BBS라는 데이터베이스 만들어 줌 이제 테이블 생성할 차례 CREATE TABLE USER 로 유저 아이디, 비밀번호, 이름, 성별, 이메일 컬럼 5개 만들어 주고 USERID를 PK로 지정해주었음.SHOW TABLES; 위 명령어로 테이블 보기 DESC USER; `DESC + 테이블명`으로 현재 테이블 형태 보여줌 테스트로 홍길동이라는 유저의 정보를 테이블에 한 줄 넣어 줌 참고로 테이블에 데이터가 잘 들어갔는지 확인하려면 `select * from user;` 데이터가 잘 들어왔으면 `commit` 해 준다. 여기까지 했으면 이제..