본문 바로가기
IT/SQL

[SQL] - SQL 명령어 및 사용법

by 차이나는 개발자 2020. 8. 1.
728x90
반응형

#SQL 명령어 및 사용법

 

#MySQL COMMAND 명령어

#mysql cmd접속
>mysql -uroot -p

#데이터베이스 목록 보기
>show databases;

#test 스키마(데이터베이스)사용
>use test;

#test에 있는 테이블 목록 보기
>show tables;

#cmd 종료
>exit

 

 

#자료형

CHAR(5) 

장점
-고정형
-수정이 빈번한 값에 유리하다.

 

단점

(단편화 - 쓰지않는 공간을 낭비한다.) 

 


VARCHAR(5)  

장점
-가변형(값의 수정이나 삭제가 되었을때 시간과 비용이 더 필요하다.)

-경제적이다.
-수정이 빈번하지 않는 값에 유리하다.

 

단점

단점: 데이터에 변경이 자주 있을 경우 
(모든 데이터에 영향을 주기때문에 시간이나 금전적으로 손해이다.)

 


INT(8) : 8바이트 (zerofill)

ZEROFILL 옵션이 있는 데이터들은
자릿수가 괄호 안의 수보다 작을 때 자릿수를 다 0으로 채운다

 

 

#테이블 추가

-자동 번호 부여 키워드

MySQL : AUTO_INCREMENT

Oracle : Sequence

-번호를 PK로 지정, 자동 번호부여(기본키에만 사용가능하며 중복이 있으면 안된다. MySQL이 관리 해준다.) 

-Primary key : 개체 무결성

-NOT NULL : 도메인 무결성

CREATE TABLE car(
	car_id		INT			PRIMARY KEY		AUTO_INCREMENT,		
	car_model	CHAR(20)	NOT NULL,
	car_price 	INT 		NOT NULL,
	car_desc	VARCHAR(200)
);

 

#테이블 구조 확인(테이블 스키마)

DESC car;

 

#테이블 삭제

DROP TABLE car;

 

#CRUD

#INSERT

-- 추가
INSERT INTO car(car_model, car_price, car_desc) VALUES('sonata',2000,'good');
-- 컬럼 위치 바꿔서 추가
INSERT INTO car(car_desc, car_price, car_model ) VALUES('not bad',2000,'bmw');
-- NULL값 허용하는 컬럼 제외하고 추가
INSERT INTO car(car_model, car_price) VALUES('genesis', 6000);
-- 다중 추가
INSERT INTO car(car_model, car_price, car_desc) 
	VALUES
	('avante', 2500, 'bad'),
	('morning', 1800, 'great'),
	('k5', 3000, 'trash'),
	('malibu', 3100, 'cool');

 

#SELECT

-SELECT사용시 기본키를 사용해서 찾는게 가장 빠르다. 
(인덱스 : 정렬하는 기준)

-- 조회하기
SELECT * FROM car;
-- 별칭 부여
SELECT car_model model, car_price price FROM car;
-- AS로 별칭 부여
SELECT car_model AS model, car_price AS price FROM car;

-- >, < 크거나 작다
SELECT * FROM car WHERE car_price > 2000;
-- = 같다
SELECT * FROM car WHERE car_price = 3000;
-- <> 다르다
SELECT * FROM car WHERE car_price <> 3000;
-- NOT 반대
SELECT * FROM car WHERE NOT car_price = 3000;
-- AND 및
SELECT * FROM car WHERE car_price >= 2500 AND car_price <= 5000;
-- BETWEEN 사이
SELECT * FROM car WHERE car_price BETWEEN 3000 AND 3700;
-- OR 또는
SELECT * FROM car WHERE car_price = 3000 OR car_price = 3700;
-- IN() 안에
SELECT * FROM car WHERE car_price IN (3000, 3700);
-- IS NULL NULL인지 여부
SELECT * FROM car WHERE car_desc IS NULL;
-- IS NOT NULL NULL이 아닌지 여부
SELECT * FROM car WHERE car_desc IS NOT NULL;

-- 오름차순
SELECT * FROM car ORDER BY car_price ASC;
-- 내림차순
SELECT * FROM car ORDER BY car_price DESC;
-- 깊은 정렬
SELECT * FROM car ORDER BY car_price DESC, car_id DESC;
-- 순서 FROM -> WHERE -> ORDER BY -> SELECT
SELECT * FROM car WHERE car_price >= 2500 ORDER BY car_price, car_id DESC;

-- MySQL에만 있는 LIMIT키워드(자르기 기능)
SELECT * FROM car WHERE car_price >= 2500 ORDER BY car_price DESC, car_id DESC LIMIT 3;
-- 3,2 -> 인덱스 3부터 2개를 조회 한다는 의미
SELECT * FROM car WHERE car_price >= 2500 ORDER BY car_price DESC, car_id DESC LIMIT 3,2;

-- 검색 (% 와일드 카드)
-- 첫 번째 글자가 m인 모든 값
SELECT * FROM car WHERE car_model LIKE "m%";
-- 마지막 글자가 m인 모든 값
SELECT * FROM car WHERE car_model LIKE "%m";
-- m이 포함된 모든 값
SELECT * FROM car WHERE car_model LIKE "%m%";

-- 검색(_와일드 카드)
-- m + _ <- 자리수
SELECT * FROM car WHERE car_model LIKE "m_____";
SELECT * FROM car WHERE car_model LIKE "m_%";

 

#UPDATE

-- 조건 수정
UPDATE car SET car_desc = 'very good' WHERE car_id = 8;
-- 조건 다중 컬럼 수정
UPDATE car SET car_desc = 'very good', car_price = 7777 WHERE car_id = 8;

 

#DELETE

-- 조건 삭제
DELETE FROM car WHERE car_id = 1;

 

 

 

728x90
반응형

댓글