728x90

목차

  1. SQL
  2. 데이터 타입
  3. 기타 속성

데이터베이스 개념도

* 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

728x90

'# Database > SQL' 카테고리의 다른 글

[SQL] SQL JOIN  (0) 2020.12.23

+ Recent posts