목차
* 1. 데이터베이스서버 접근 : uroot mysql -uroot -p 입력 > 비밀번호를 입력
* 2. 데이터베이스 접근 : USE database; / 모든 데이터베이스 조회 : SHOW databases;
* 3. 테이블 호출 : SELECT * FROM table; / 모든 테이블 조회 : SHOW tables;
1. SQL(Structured Query Language)
[목차로 이동]
* SQL 서버와 소통하기 위한 언어
* 데이터베이스에 input에 해당하는 CREATE, UPDATE, DELETE와 output에 해당하는 READ 기능을 할 수 있다.
명령어 | 설명 | 예시 |
CREATE |
'데이터베이스'나 '테이블'을 생성한다 | CREATE DATABASE databaseName; |
CREATE TABLE tableName ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(10) NOT NULL, number INT(11) NOT NULL, PRIMARY KEY(id) ); |
||
DROP | 데이터베이스를 삭제한다 | DROP DATABASE databaseName; |
SHOW | 로그인된 유저에 생성된 데이터베이스나 테이블을 모두 출력한다 * DATABASE'S'/TABLE'S' : S가 붙음 |
SHOW DATABASES; SHOW TABLES; |
USE | 여러 데이터베이스 중에 특정 데이터베이스를 사용할 것이고, 이후 명령어는 그 데이터베이스에 내리는 명령어가 됨 | USE databaseName; |
DESC | 테이블이 어떤 데이터타입으로 이루어져있고 어떤 속성이 있는지 알 수 있음 | DESC tableName; |
INSERT | 생성된 테이블에 자원을 추가함 | INSERT INTO tableName (name, number) VALUES ( 'SANA', '1234' ); |
SELECT | 테이블에서 원하는 데이터만 조회할 수 있음. | SELECT * FROM tableName WHERE columnName='twice' ORDER BY idx DESC LIMIT 2; // 특정 테이블의 모든 요소를 출력할껀데, column요소가 'twice'인 요소들만 출력해. 출력하면 idx가 큰 숫자부터 출력해줘, 그리고 상위 2개의 요소만 |
WHERE | 조회하려는 테이블에 조건을 추가 | |
ORDER BY | 테이블을 조회할 때 특정 기준으로 정렬 ASC(오름차순정렬, 기본값) / DESC(내림차순) |
|
LIMIT | 조회한 테이블에서 출력할 값의 갯수를 지정 | |
UPDATE | 테이블의 특정 칼럼의 값을 수정 *WHERE문이 없다면 모든 컬럼이 바뀌니 주의 |
UPDATE tableName SET columnName='no1_Twice' WHERE columnName='twice'; //특정 테이블에서 칼럼값을 바꿀 건데, columnName의 요소를 'no1_Twice'로 바꿀꺼야. 그런데 조건은 columnName의 요소가 'twice'인 것들만 |
DELETE | 테이블의 특정 행을 삭제 *WHERE문이 없다면 모든 테이블이 삭제되니 주의 |
DELETE FROM tableName WHERE columnName ='asdf'; //특정 테이블의 자원 중 columnName의 요소가 'asdf'인 행을 모두 삭제 |
RENAME | 테이블 이름을 바꿈 | RENAME TABLE tableNAME1 TO tableNAME2; |
AS | 컬럼을 출력할 때 출력할 이름을 바꿔줄 수 있다. | SELECT name1 AS name2 FROM tableName; |
JOIN | 관계가 있는 테이블들을 엮어서 출력함 [바로가기]JOIN 추가설명 |
SELECT * FROM table1 LEFT JOIN table2 ON table1.column1=table2.column2; // table1의 모든 자원을 출력하는데 table2도 엮어서 출력할꺼야. 조건은 table1의 column1과 table2의 column2가 같아야 해 |
2. 데이터타입
[목차로 이동]
* 데이터 크기와 맞지 않은 타입을 사용하면 저장공간을 낭비하거나 입출력에 문제가 있을 수 있다.
ex) 학생들의 이름을 입력하는 데이터를 만든다고 하면 VARCHAR정도만 해도 충분하다. TEXT와 같은 데이터 타입은 2-4글자 정도 되는 이름을 담기에는 비효율적인 데이터타입이다.
* 데이터를 생성할 때, 타입을 지정한다. 이때 타입에 괄호에 숫자가 들어가는 경우가 있는데 괄호 옵션의 기능은 ZEROFILL 속성이 부여될 때, 0이 채워져 출력되는 자릿수를 뜻하며, 이는 실제로 해당 데이터속성을 부여받은 데이터들의 입력 가능 한계와 같다. (이해 안될 것 같아서 예시와 추가 설명 링크)
ex) id INT(11) NOT NULL [예시 보기]
* CHAR vs VARCHR
CHAR(고정형 문자열) : 데이터타입이 CHAR(10)이면 2바이트만 갖고 있는 데이터도 10바이트가 할당됨
VARCHAR(가변형 문자열) : 데이터타입이 VARCHAR(10)이라면 2바이트만 갖고 있는 데이터에는 2바이트만 가변적으로 할당함
3. 기타 속성
[목차로 이동]
속성 | 설명 | 예시 |
NOT NULL | NOT NULL이 부여된 데이터는 반드시 채워져야 함 | CREATE TABLE tableName( ... id INT(11) NOT NULL AUTO_INCREMENT, ... PRIMARY KEY(id) ); |
AUTO_INCREMENT | 테이블에 자원이 추가될 때 해당 컬럼은 자동으로 1씩 증가됨 * INSERT로 자원 추가할 때 따로 지정 안해줘도 알아서 증가됨 * PRIMARY KEY(i) 와 함께 사용됨 |
|
PRIMARY KEY(i) | 데이터 i의 중복값을 허용하지 않고 각각의 행을 식별하는 식별자로 사용함 1. 같은 값을 갖는 행이 추가 된다면 DB에서 거절한다. 2. 색인 기능을 사용한다면 처리 속도가 빨라진다 |
|
NULL | 데이터가 꼭 안채워져도 됨 | CREATE TABLE tableName( ... description TEXT NULL, ... ); |
ZEROFILL | ZEROFILL 속성을 부여 받은 데이터는 데이터공간이 비면 '0'을 채운다. | CREAETE TABLE tableName( id INT (5) ZEROFILL ); INSERT INTO test VALUES(123); SELECT * FROM test; //출력값 00123 |
'# Database > SQL' 카테고리의 다른 글
[SQL] SQL JOIN (0) | 2020.12.23 |
---|