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(0 < 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()*100, 0); 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
http://www.tcpschool.com/mysql/mysql_operator_arithmetic
반응형
'공부' 카테고리의 다른 글
[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 |
댓글