일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터
- 자바
- 하드웨어
- 백준
- IF
- 자료구조
- 배열
- Scanner class
- FOR문
- Scanner
- java프로그래밍
- 변수
- IFELSE
- 스캐너
- C언어
- 백준알고리즘
- error
- MySQL
- 기본
- Spring
- 파이썬프로그래밍기초
- for
- 유비쿼터스
- 1차원배열
- 알고리즘
- 반복문
- 스캐너클래스
- IF문
- java
- 함수
Archives
- Today
- Total
정리하고기록하자
SQL 본문
반응형
SQL
SQL 이란 Structrued Query Language 이고, 데이터베이스에서 데이터를 저장하거나 얻기 위해서 사용하는 표준화된 언어이다.
Mysql 공식 매뉴얼
SQL 언어의 특성
- SQL은 대소문자를 가리지 않는다.
- SQL 명령은 반드시 세미콜론(;)으로 끝나야 한다.
- 고유의 값은 따옴표('')로 감싸준다.
- SQL에서 객체를 나타낼 때는 백틱(``) 으로 감싸준다.
- 주석은 일종의 도움말로, 주석 처리된 문장은 프로그램에서 동작하지 않는다. ( 한 줄 주석은 문장 앞에 -- 를 붙여서 사용한다. 여러줄 주석은 /* */ 으로 감싸준다
SQL 문법
DML ( Data Manipulation Language, 데이터 정의 언어 )
- select
/* 모든 컬럼 조회 */
SELECT * FROM 테이블명
/* 필요한 컬럼 조회 */
SELECT 컬럼명, 컬럼명, 컬럼명 FROM 테이블명
/* SELECT 문법 순서 */
1. SELECT
2. FROM
3. WHERE
4. GROUP BY
5. HAVING
6. ORDER BY
// 쿼리 실행 순서는 FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
- Insert
Insert into
테이블명
values (
컬럼 명
);
- update
/* 데이터 내용 수정 */
UPDATE 테이블명 SET 컬럼명 = '변경할 값' WHERE 조건;
- delete
/* 데이터 삭제 */
DELETE FROM 테이블명 WHERE 조건;
DDL ( Data Definition Language, 데이터 조작 언어 )
- create
/* 테이블 생성 */
CREATE TABLE 테이블명 (
컬럼명 타입 조건 (NOT NULL 등..) ,
컬럼명 타입 조건 (NOT NULL 등..) ,
컬럼명 타입 조건 (NOT NULL 등..) ,
PRIMARY KEY ~ );
- alter
/* 컬럼 추가 */
/* ALTER TABLE 테이블명 ADD COLUMN 컬럼명 타입 NOT NULL; */
ALTER TABLE A ADD COLUMN exCoulmn varchar(20) NOT NULL;
/* 컬럼 변경 */
/* ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 타입 NOT NULL; */
ALTER TABLE A MODIFY COLUMN exCoulmn varchar(10) NOT NULL;
/* 컬럼 이름까지 변경 */
/* ALTER TABLE 테이블명 CHANGE COLUMN 컬럼명 변경할컬럼명 타입 NOT NULL; */
ALTER TABLE A CHANGE COLUMN exCoulmn exCoulmn2 varchar(10) NOT NULL;
/* 컬럼 삭제 */
/* ALTER TABLE 테이블명 DROP COLUMN 컬럼명; */
ALTER TABLE A DROP COLUMN exCoulmn;
/* 테이블 이름 변경 */
/* ALTER TABLE 테이블명 RENAME 변경할테이블명; */
ALTER TABLE A RENAME AAA;
- drop
/* 컬럼 삭제 */
DROP TABLE 테이블명;
- truncate
/* 테이블 초기화 */
TRUNCATE TABLE 테이블명;
- rename
/* 테이블 이름 변경 */
RENAME TABLE 테이블명 TO 변경할테이블명;
/* 단일 테이블 이름 변경 */
ALTER TABLE 테이블명 RENAME 변경할테이블명;
/* 다수 테이블 이름 변경 */
RENAME TABLE 테이블명 TO 변경할테이블명,
테이블명 TO 변경할테이블명,
테이블명 TO 변경할테이블명;
/* 다른 데이터베이스로 테이블 이동 */
/* RENAME TABLE DB명.테이블명 TO 이동할DB명.테이블명; */
RENAME TABLE A_DB.A_TABLE TO B_DB.A_TABLE;
DCL ( Data Control Language, 데이터 제어 언어 )
- grant
/* 새로운 계정을 생성하고 권한을 부여하는 GRANT 쿼리 */
GRNAT 권한종류 ON 대상 TO 계정명 IDENTIFIED BY 암호 [WITH GRANT OPTION];
/* 계정을 생성 후에는 변경된 내용을 적용하기 위해 아래의 쿼리를 실행해야 한다 */
FLUSH privileges;
권한 종류
권한 | 내용 | |
CREATE, ALTER, DROPO | 테이블 생성, 변경, 삭제 | 일반 사용자, 관리자 |
SELECT, INSERT, UPDATE, DELETE | 테이블 조회,입력,수정,삭제 | |
RELOAD | 권한 부여된 내용을 리로드 | 관리자 |
SHUTDOWN | 서버 종료 작업 실행 | |
ALL | 모든 권한 허용 | 관리자와 동급 |
USAGE | 권한 없이 계정만 생성 |
대상
- *.* : 서버의 모든 데이터베이스, 테이블에 대한 접근을 허용한다.
- 데이터베이스명.* : 특정 데이터베이스의 모든 내용에 대한 접근을 허용한다.
- 데이터베이스명.테이블명 : 특정 데이터베이스의 특정 테이블에 대한 접근을 허용한다.
계정명 : MySQL 서버에 접속시 지정하는 이름이다. ( 계정명과 호스트로 구성 )
암호 : IDENTIFIED BY 구문을 넣지 않으면 비밀번호 없는 계정을 생성한다.
- revoke
/* 데이터베이스 사용자에게 권한을 취소 한다. */
REVOKE [권한종류] ON DB.테이블명 FROM 유저ID@호스트
JOIN
INNER JOIN
- 교집합으로 기준 테이블과 JOIN 테이블의 중복된 값을 보여준다.
SELECT
A.a,
A.b,
B.c
FROM A
INNER JOIN B
ON A.a = B.a;
/* INNER JOIN 대신에 JOIN 을
ON 대신 WHERE 을 사용할 수 있다. */
LEFT OUTER JOIN
- 기준테이블값과 조인테이블과 중복된 값을 보여준다. ( 왼쪽테이블 기준으로 JOIN을 한다고 생각하면 편하다 )
SELECT
A.a,
A.b,
B.c
FROM A
LEFT OUTER JOIN B
ON A.a = B.a
RIGHT OUTER JOIN
- LEFT JOIN과는 반댈로 오른쪽 테이블 기준으로 JOIN 하는 것이다
SELECT
A.a,
A.b,
B.c
FROM A
RIGHT OUTER JOIN B
ON A.a = B.a
FULL OUTER JOIN
- 합집합을 말한다. A와 B 테이블의 모든 데이터가 검색된다
SELECT
A.a,
A.b,
B.c
FROM A
FULL OUTER JOIN B
ON A.a = B.a
CROSS JOIN
- 모든 경우의 수를 전부 표현해주는 방식이다. ( ex : A가 3개, B가 3개면 총 3*3 = 9개의 데이터가 검색된다.
SELECT
A.a,
A.b,
A.c,
B.a,
B.b,
B.c
FROM A
CROSS OUTER JOIN B
ON A.a = B.a
반응형
'Database - 데이터베이스 ( DB )' 카테고리의 다른 글
TIMESTAMPDIFF 날짜 차이 가져오기 - mysql (0) | 2022.09.19 |
---|---|
DB Clustering & Replication (0) | 2022.07.02 |
MYSQL 음력 변환 함수 (0) | 2022.04.12 |
Unknown column '' in 'where clause' (0) | 2022.01.20 |
Subquery returns more than 1 row - mysql (0) | 2022.01.13 |