본문 바로가기
공부

MYSQL 명령어 정리(DML)

by yeaseul912 2022. 7. 2.
728x90

DML (Data Manipulation Language ) 데이터 조작어

 : Database Table안에 들어있는 값을 조작

 : Select, Insert, Update, Delete

DDL ( Data Definition Language ) 데이터 정의어

 : Table과 같은 데이터 구조를 정의하는데 사용되는 명령어(생성, 변경, 삭제, 테이블이름변경)

 : Create, Alter, Drop, Rename, Truncate

DCL ( Data Control Language ) 데이터 제어어

 : Database에 접근하여 데이터를 사용할 수 있도록 권한을 부여/회수하는 명령어

 : Grant, Revoke

TCL ( Transaction Control Language ) 트랜잭션 제어어

 : 논리적인 작업의 단위를 묶어서 조작된 데이터의 결과를 작업단위(트랜잭션)로 제어하는 명령어

 : Commit, Rollback, SavePoint

Select
Query Comment
Select * From {table} * 웬만하면 쓰지 말기
Select  {filed1, filed2} From {table} Where {C1} Where절 조건 C1에서 filed값은 건드리지 말기
ex) filed * 3< 10 x / filed < 10/3 o
Select * From TAB 존재하는 모든 테이블 보기
Select DISTINCT {filed1} From {table} 중복 제거
<비교연산자>
Select {filed1} From {table} Where {filed2}
Between {C1} AND {C2} / Not Between {C1} AND {C2}
ex) Select * From {table} Where user_id Between 10 AND 20;
  =  Select * From {table} Where user_id >=10 AND user_id<=20;
Where절의 C1와 C2사이 모든 값 가져오기
/ C1 보다 작거나 C2보다 큰 값 가져오고
Select {filed1} From {table} Where {filed2} IN {C1, C2} / Not IN {C1, C2} {filed2}에 C1이나 C2 포함여부에 따라 가져오기
Select {filed1} From {table} Where {filed2} Is Null / Is NOT Null  
<논리연산자>
AND, &&, OR, ||, XOR, NOT, ! 전자공학과니까 알지?
<패턴 매칭>
Select {filed1} From {table} Where {filed2} LIKE '%{word}%'
ex) WHERE Name LIKE '장%';  ==> '장발장'
       WHERE Name NOT LIKE '장%';==>'홍길동'
      WHERE RoomNum LIKE '20__';==> '2014'
특정패턴을 포함하는 데이터만 검색
 _ : 1개 문자를 대체함
 % : 0개이상의 글자를 대체함(와일드카드)
 [] : []안에 있는 글자들 (정규표현)
 [^] : ^다음에 있는 글자를 제외한 다른 것
ex) WHERE Name REGEXP '^홍|장$';  ==> 임꺽정
    홍으로 시작하지 않고.. 산으로 끝나지 않는 레코드..
Like보다 좀더 복잡한 패턴을 검색(정규표현식)
참고
   
Select {filed1} From {table} Where Exists (Select * From {table} Where {C1})  
Select {filed} AS {alias} From {table} / Select {filed} From {table} AS {alias}
ex) Select date. Concat(roomNum, ":", Name) AS rvInfo From Reservation
필드/테이블에 별칭 부여하기
<흐름제어문>  
SELECT CASE 0
    WHEN 0 THEN 'zero'
    WHEN 1 THEN 'one'
    ELSE 'more'
END;  ======> zero

else if 같은 존재
if = case
else if = when then
else = else
IF(expr1, expr2, expr3)
SELECT IF(1, 'yes', 'no'); =====>  yes
삼항연산자 같은 존재

SELECT IFNULL(NULL, '전달받은 값이 null입니다.'); => 전달받은 값이 null입니다.
SELECT IFNULL("안녕"'전달받은 값이 null입니다.'); => 안녕

첫번째 인수값이 null이면 두번째 인수 반환
null이 아니면 첫번째 인수 반환
SELECT NULLIF(3, 3);  => null 두 인수값이 서로 같은지 검사
같으면 null, 같지 않으면 첫번째 인수 반환
<MYSQL 내장함수>
 SELECT LENGTH('12345678');   ==> 8 문자열 길이 반환
SELECT CONCAT('Ora', 'cle Cor', 'poration'), ==>  Oracle Corporation
CONCAT('Oracle', NULL, 'Corporation'); ==> null
문자열 결합
문자열중 하나라도 Null이 존재하면 Null반환
SELECT LOCATE('abc', 'ababcDEFabc'), ==> 3(문자열의 시작부분)
LOCATE('abc', 'ababcDEFabc', 4); ==> 9
특정 문자열 위치 검색, 1부터 시작함
첫번째 : 찾을 문자열, 두번째 : 검색할 문자열
세번째 : 문자열을 찾기 시작할 인덱스
SELECT LEFT('MySQL PHP HTML Java', 5), 
RIGHT('MySQL PHP HTML Java', 4);
문자열 추출
LEFT 왼쪽부터 추출/ RIGHT 오른쪽부터 추출
SELECT LOWER('MySQL PHP HTML Java'),  ==> mysql php html java
UPPER('MySQL PHP HTML Java'); ==> MYSQL PHP HTML JAVA
문자열 대소문자 변경
SELECT REPLACE('MySQL', 'My', 'MS '); ==> MS SQL 문자열 대체
SELECT TRIM('   !!!MySQL PHP HTML Java!!!    '), 
TRIM(LEADING '!' FROM '!!!MySQL PHP HTML Java!!!')
문자열 다듬기

  FORMAT()
문자열의 형식화..
<수학함수>
SELECT FLOOR(10.95), CEIL(10.95), CEIL(-11.01), ROUND(10.45);
                               10                   10                 -11                       10
올림(FLOOR), 내림(CEIL), 반올림(ROUND)
SELECT SQRT(4), POW(2, 3), EXP(3), LOG(3);
                          2                8      20.08       1.09
 지수 로그
SQRT : 제곱근(양수), POW : 거듭제곱
EXP : e의 거듭제곱, LOG : 자연로그 계산
SELECT SIN(PI()/2), COS(PI()), TAN(PI()/4);
                         1                   -1                 0.999
삼각함수 ㅋㅋ
SIN 사인  COS 코사인 TAN 탄젠트
SELECT ABS(-3), ROUND(RAND()*1000);
                       3                            24
절대값 ABS()
RAND() 실수를 무작위로 생성(0.0~1.0)
<집합(aggregate)함수>  
SELECT COUNT(*) AS NumberOfRervation FROM Reservation;
COUNT()
레코드의 총 갯수 반환
SELECT MIN(Age) AS MinAge FROM Customer;
SELECT MAX(Name) AS MaxName FROM Customer; // 홍길동 문자열도 쌉가능
MIN() 선택된 필드 중 가장 작은 값
MAX() 선택된 필드 중 가장 큰 값 
SELECT SUM(Age) AS SumOfAge FROM Customer;
SUM() 선택된 숫자필드에 저장된 값의 총 합
SELECT AVG(Age) AS AverageOfAge FROM Customer;
AVG() 선택된 숫자필드에 저장된 값의 평균값
SELECT 필드이름, 그룹함수(필드이름) FROM 테이블이름 [WHERE 조건]
GROUP BY 필드이름;
ex)SELECT Age, COUNT(*) AS NumOfCustomer FROM Customer
     GROUP BY Age; // 나이별 회원수를 구하는 예제
Group By : 선택된 레코드의 집합을 필드의 값이나 표현식에 의해 그룹화한 결과 집합을 반환
Select랑 같이 써주세용
(GROUP BY ALL을 사용하면 WHERE제외된것 도 포함 ??)
SELECT 필드이름, 그룹함수(필드이름) FROM 테이블이름 [WHERE 조건]
GROUP BY 필드이름 HAVING 조건;
ex) SELECT Address, Name, MAX(Age) AS MaxAge FROM Customer
GROUP BY Address HAVING MaxAge > 15; // 도시별 가장 나이가 많은 레코드 중 15살 이상의 레코드만을 선택하는 예제
Having : Group By 에 의해 반환되는 결과집합의 조건을 설정 (select의 where처럼)
address name MaxAge
   서울     홍길동     17

 

Update {table} Set {filed1}='{value1}', {filed2}='{value2}' Where {filed} Like '{C1}'
Insert into User(name, birth) Values (yeaseul, 0912)
Delete From {table} Where {C1}
다중 테이블 연산
Select {filed1} From {table1} Join {table2} On {table1.filed1}={table2.filed1}  
Select {filed1} From {table1} Left Join {table2} On {table1.filed1}={table2.filed1}  
Select {filed1} From {table1} Right Join {table2} On {table1.filed1}={table2.filed1}  
SELECT {filed1}, {filed2} FROM {table1}
UNION (중복데이터 제거) / UNION ALL (중복데이터도 가져옴)
SELECT {filed1}, {filed2} FROM {table2}
두개의 쿼리 결과를 합쳐줌
Select문으로 선택된 filed의 갯수와 타입, 순서가 맞아야 한다.
Select, Insert, Update, Delete, Set, Do
 SELECT ID, ReserveDate, RoomNum
   FROM Reservation
 WHERE Name IN (SELECT Name
                  FROM Customer
                  WHERE Address = '서울')

서브쿼리

 

연산자
산술 연산자 설명 예시
+ 왼쪽 피연산자에 오른쪽 피연산자를 더함. 504.7 + 13 = 517.7
- 왼쪽 피연산자에서 오른쪽 피연산자를 뺌. 504.7 - 13 = 491.4
* 왼쪽 피연산자에 오른쪽의 피연산자를 곱함. 504.7 * 0.9 = 454.23
/ 왼쪽 피연산자를 오른쪽 피연산자로 나눔. 504.7 / 2 = 252.35
DIV 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 소수 부분을 버림. 504.7 DIV 2 = 252
%또는 MOD 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 그 나머지를 반환함. 504.7 % 2 = 0.7

 

우선순위 연산자
1 INTERVAL
2 BINARY, COLLATE
3 !
4 - (단항 연산자), ~ (비트 연산자)
5 ^
6 *, /, DIV, %, MOD
7 - (이항 연산자), +
8 <<, >>
9 &
10 |
11 = (관계 연산자), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
12 BETWEEN, CASE, WHEN, THEN, ELSE
13 NOT
14 AND, &&
15 XOR
16 OR, ||
17 = (대입 연산자), :=

 

 

reference

https://melonicedlatte.com/database/2017/02/16/174901.html

 

[기초] 데이터베이스 SQL 숙지해야 할 필수 명령어 - Easy is Perfect

ㅁ 알아야 할 명령어 DESC 테이블명; 테의블 정의 보기 SELECT SELECT * FROM 테이블명 WHERE 필드='조건' AND 필드2='조건2' SELECT 필드1, 필드2, 필드3 FROM 테이블명 SELECT * FROM TAB; 존재하는 모든 테이블 보기

melonicedlatte.com

http://www.tcpschool.com/mysql/mysql_operator_arithmetic

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

반응형

'공부' 카테고리의 다른 글

[Linux] 내가 쓴 명령어들 정리  (0) 2023.03.31
AWS CLI S3 에러 : RequestTimeTooSkewed (+ Ubuntu 시간 설정)  (0) 2023.03.27
MYSQL 비밀번호 재설정  (0) 2021.09.27
IT 정보  (0) 2021.09.23
블록체인 캠퍼스 190703  (0) 2019.07.04

댓글