DB 구조적 데이터 저장

RDB_관계를 테이블 구조적 정의

RDBMS_SW ex) MySQL

SQL_RDBMS와 사용자가 소통하는 프로그램, 구조화된 질의어

 


DDL  생성/정의


Table dealing

 

CREATE : 생성 - user, schema, database, table, index, view, procedure, function, trigger

 

ALTER    : 수정 - column명/table명 변경, 제약조건 추가

                 ALTER TABLE table_name RENAME TO 변경할 이름

                 ADD COLUMN

                 RENAME COLUMN

                 ADD CONSTRAINT

 

ADD  : 추가 -  column, 제약조건, index

 

RENAME : 이름 변경 - column, table

               

DROP     : 삭제 - user, database, table

                

 

 

 

DML  데이터 관리

 


Record(Data) dealing

 

INSERT INTO : 추가 - 데이터

                          INSERT INTO (col_name) VALUES (    );

 

SELECT : 조회 - Filtering DISTINCT - 중복값 없이 조회 , WHERE - 조건하에 조회

 

           # 코딩 순서     

                  SELECT select_list 집계함수

                  FROM table_name

                  WHERE 조건

                  GROUP BY 그룹화 데이터, 집계 함수

                  HAVING 조건 (그룹한 것에 대한 조건)

                  ORDER BY 정렬 ASC/DESC

                  LIMIT 조회 개수;

 

          # 실행 순서

           FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY - LIMIT

 

UPDATE : 수정

 

                  UPDATE table_name

                  SET col_name = " value " 

                  WHERE 조건;

 

DELETE : 삭제 - record 

 

                 DELEETE FROM table_name

                 WHERE 조건;   => WHERE 조건 없으면 전체 데이터 삭제 주의!!!! 테이블은 남음.

               

                 데이터 추가 시, 초기화 x, 기존 데이터 +1 

                 

 

TRUNCATE : 테이블 삭제 후, 재생성

                       = DROP table + CREATE table 의 효과

 

 


DCL 조작어 (권한관리, 적용)


GRANT : 권한 부여

REVOKE : 권한 삭제

 

CREATE USER _______@ host정보 IDENTIFIED BY "password"

DROP USER

GRANT 권한 ON db.table TO 사용자; 

              # 권한 : ALL PREVILEGES / SELECT / DELETE / 명령문

REVOKE 권한 ON db.table FROM 사용자;

 

 

 

 

TCL


COMMIT :  DB에 적용/반영

ROLLBACK : 이전의 상태로 되돌리기

SAVEPOINT : 저장점 지정

 

START TRANSACTION;

 작업

ROLLBACK; => START 전 마지막 저장 시점으로 돌아감.

 

 

SAVEPOINT savepoint_name;  저장점 지정

ROLLBACK TO savepoint_name; 지정한 저장 지점으로 

 

 

 

 

          

 

 

MySQL 내장함수


 

문자형
 
CONCAT : 인자로 들어오는 문자열 하나로 연결
TRIM : 파이썬의 strip / 특정문자 삭제
REPLACE : 문자열 수정
LOCATE : 찾으려는 문자 첫 위치 반환 / 없으면 0 반환
 
 
숫자형
ABS 절대값
MOD 나머지
POW 제곱수
CEIL 올림
FLOOR 버림
ROUND 반올림
 


날짜
CURDATE 현재 날짜
CURTIME 현재 시간 
NOW 현 날짜 + 시간
DATE_FORMAT 날짜 형식 지정
 

 


NULL



 
IFNULL
IFNULL(e1, e2)

  => e1 NULL 이면 e2 
 
COALESCE
COALESCE(e1, e2, e3......)

  => e1 NULL 이면 e2, e2도 NULL 이면 e3.....
 
NULLIF 
NULLIF (e1, e2) 

  => e1 = e2이면 NULL 반환, e1 != e2 이면 1 반환

 

 

 

 

 

 

SELECT 문 실행 순서


 

SELET

FROM table-name

WHERE 조건식

GROUP BY 그룹하는 column

HAVING 조건

ORDER BY 정렬기준

LIMIT 조회 행수
 

 


 SQL 재밌기는 한데 익숙해지려면 많이 해보는 수 밖에...


 
 

'SQL' 카테고리의 다른 글

MySQL] Mac user SQL 입문 _ 설치 및 연결 오류 해결  (0) 2025.01.16

 
 
 

문제 1. 
 
   - 맥으로 MySQL을 설치하고 workbench를 시작하는데 계속 연결 불가
      구글링하니 연결되지 않는 사례가 많아 이것저것 다 시도하다가 이유를 찾았다. 
 
 
원인1.

   -  예전에 MARIADB를 설치해서 3306 포트를 이미 사용하고 있는 걸 잊고 있었음 (설치만 해봤던 기억)
 


 
 
해결1.
 
   터미널에서 lsof - i TCP:3306 포트 사용 조회 후, kill -9 PID 로 기존 포트 연결을 끊었더니 mysql이 3306에 연결되었다.
 

(base) 내이름-MacBookPro ~ % lsot -i TCP: 3306

COMMAND  PID  USER   FD TYPE              DEVICE SIZE/OFF NODE NAME

mariadbd 792  내이름   ...   .......                    0t0   TCP   *:mysql  (LISTEN)

(base) 내이름-MacBookPro ~ % kill -9 792         

(base) 내이름-MacBookPro ~ % lsot -i TCP: 3306

COMMAND  PID  USER   FD TYPE              DEVICE SIZE/OFF NODE NAME

mysqld   ...  내이름   .....                .....................
 lsof - i TCP:3306   # 3306포트를 사용하는 프로그램 찾기
 kill -9 (PID)       # 3306사용 중지


 



 
 
문제2
   
    -  Workbench에 비번을 넣어도 data  import 불가
        ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
   
        연결 오류로 구글링 시 비번 설정 관련 본 것이 있어 혹시나 터미널에서 비번 설정 확인
 

원인2.
   
     - Workbench 설치 시, 비번을 설정했지만 터미널에서 확인해보니 비번 설정이 되지 않았음.

 
 


 
 
해결2. 
   
    터미널에 들어가 비번 새로 설정

     

$ mysql -u root -p      # MySQL 로그인

Enter password:         # 비번은 그냥 엔터



mysql> use mysql;       # MySQL 접속 후, 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';   # '1234' 자리에 본인 비번 입력

Query OK, 1 row affected (0.02 sec)

Rows matched: 4 Changed: 4 Warnings: 0



mysql> flush privileges; # ALTER된 비번 적용!! 이 단계를 거쳐야 비번 사용 가능.

 
 
# 아래 링크 참고

 


 
 
문제3.
 
      -  MySQL 이용 시, UPDATE 수행 불가
 
원인3.
 
     - MySQLWorkbench는 Safe Updates가 디폴트로 지정되어 있어 UPDATE와 DELETE가 막혀 있음. 
 


 
해결3.
 
      - Settings -> SQL Editor -> 맨 아래 Safe Updates 체크박스 체크 해제 -> MySQL 재시작
 

 
 
 

 

'SQL' 카테고리의 다른 글

MY SQL] DDL, DML, DCL, TCL, 내장함수  (0) 2025.01.20

+ Recent posts