본문 바로가기

프로그래밍/mySQL

(14)
[mySQL] 정규화 방법1(원소화) 하나의 열에 여러 자료가 있을 경우 정규화 방법 1) family first, second, third 2) family first second third 2번 표와 같이 바꾸는 것 1) 열 추가ALTER TABLE my_tableADD COLUMN family1 VARCHAR(20),ADD COLUMN family2 VARCHAR(20),ADD COLUMN family3 VARCHAR(20); 2) 첫번 째 원소를 얻어낸다UPDATE my_tableSET family1 = SUBSTRING_INDEX( family, ',', 1);//family열에서 1번째 콤마(,)가 나오기 전까지 추출 family family1 family2 family3 first, second, third first 3) 옮기..
[mySQL] 스키마, 정규화 스키마 : 테이블과 테이블이 어떻게 연결되는지 표현한 것. 테이블을 두개로 만드는 방법1. 하나의 열을 없애고 없앨 열의 테이블을 따로 만들어 넣는다.2. 원래 테이블의 기본키를 새 테이블의 참조키로서 삽입한다.(두개의 테이블을 연결하는 방법) 참조키를 포함한 테이블 생성 방법CREATE TABLE family(basic_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, //family테이블의 기본키 지정family_name VARCHAR(30) NOT NULL, //열 생성f_id INT NOT NULL, //참조용 키(f_id) 생성CONSTRAINT my_table_count_id_fx //참조할 테이블과 그 기본키에 제약조건을 건다FOREIGN KEY ( f_id ) ..
[mySQL] SUM, AVG, MAX, MIN 등 SELECT문 SUM연산SELECT SUM(count)FROM my_tableWHERE last_name = 'JANG';//last_name열의 JANG에 해당하는 행 중에 count열의 수를 모두 합한 값을 출력 SELECT first_name, SUM(count)FROM my_tableGROUP BY first_nameORDER BY SUM(count) DESC;//first_name의 같은 값들을 그룹으로 만들어서 SUM연산 후 출력//같은 이름을 가진 사람들의 count 값을 모두 합한 값 내림차순 출력. SELECT first_name, AVG(count)FROM my_tableGROUP BY first_nameORDER BY AVG(count) DESC;//평균값 출력 SELECT first_name, M..
[mySQL] SQL 카테고리, 정렬 1. 카테고리 설정UPDATE my_table SET category =CASEWHEN drama = 'T' THEN 'drama'WHEN comedy = 'T' THEN 'comedy'WHEN cartoon = 'T' AND rating = 'G' THEN 'family'ELSE 'misc'END; 2. 정렬 방법SELECT * FROM my_tableORDER BY last_name;//last_name열을 기준으로 알파벳순 정렬 SELECT * FROM my_tableORDER BY category, last_name;//category 기준으로 정렬하고 last_name으로 정렬. 더 추가하여 세세하게 설정 가능 SELECT * FROM my_tableORDER BY last_name ASC, f..
[mySQL] SQL 기본 문장 정리_2 DELETE FROM my_tableWHERE 레코드이름 = '레코드내용';ex) DELETE FROM my_tableWHERE first_name = 'MMMM';//해당되는 레코드가 전부 지워짐 UPDATE my_tableSET first_name = 'DDDD'WHERE first_name = 'MMMM';//데이터가 업데이트 됨. SET은 입력할 데이터, WHRER은 데이터의 위치 SHOW CREATE TABLE my_table;// 생성했던 테이블의 코드를 볼 수 있다. CREATE TABLE my_contacts( contact_id INT NOT NULL AUTO_INCREMENT, //1에서 시작해서 계속 증가 PRIMARY KEY (contact_id) //기본키 지정) ALTER TAB..
[mySQL] SQL 기본 문장 정리 _1 CREATE DATABASE 이름;ex) CREATE DATABASE db_test;//데이터베이스 생성 USE 이름;ex) USE db_test;//데이터베이스 선택 및 사용 CREATE TABLE 테이블이름(last_name VARCHAR(20),first_name VARCHAR(10),gender VARCHAR(1) NOT NULL, //빈칸을 허용하지 않는다email VARCHAR(50) DEFAULT '.....' //기본값을 ....으로 사용);//테이블 생성 INSERT INTO 테이블이름('last_name', first_name')VALUE('KKK', 'MMMM');ex) INSERT INTO my_table('last_name', 'first_name')VALUE ('KKK', 'MM..