SQL 쿼리문

jadive study·2022년 10월 12일
0

SQL을 잠깐 해본기억이 있는데 그동안 vue node java를 달리느라 쿼리문을 까먹은것 같아서 생활코딩으로 리마인드 해줬다.
join문이 많이 어려웠던 기억이 있는데 간단한 실습을 해보고 다음 포스팅에 작성하겠다.

sql은 표준화 되어있다

Database
데이터가 실질적으로 적재되는 테이블들을 분류하는 상위 개념

SQL
생성
1

CREATE DATABASE `데이터베이스명` CHARACTER SET utf8 COLLATE utf8_general_ci;

삭제

DROP DATABASE `데이터베이스명`;

열람

SHOW DATABASES;

선택

USE `데이터베이스명`

Table
데이터가 실질적으로 저장되는 저장소

스키마(schema)란?
테이블에 적재될 데이터의 구조와 형식을 정의 하는 것

테이블 생성

CREATE TABLE table_name (
    칼럼명1 data_type,
    칼럼명2 data_type
CREATE TABLE `student` (
    `id`  tinyint NOT NULL ,
    `name`  char(4) NOT NULL ,
    `sex`  enum('남자','여자') NOT NULL ,
    `address`  varchar(50) NOT NULL ,
    `birthday`  datetime NOT NULL ,
    PRIMARY KEY (`id`)
);

테이블 리스트

SHOW tables;
테이블 스키마 열람
DESC `테이블명`
테이블 제거
DROP TABLE `테이블명`
데이터타입
CHAR( )	0 to 255 고정문자 길이
VARCHAR( )	0~65535 가변 문자 길이
TINYTEXT	최대 255 문자길이
TEXT	최대 65535 문자길이
BLOB	최대 65535 문자길이
MEDIUMTEXT	최대 16777215 문자길이
MEDIUMBLOB	최대 16777215 문자길이
LONGTEXT	최대 4294967295 문자길이
LONGBLOB	최대 4294967295 문자길이
TINYINT( )	-128 ~ 127 정수형
0 ~ 255 정수형, UNSIGNED
SMALLINT( )	-32768 ~ 32767, 정수형
0 ~ 65535, 정수형, UNSIGNED
MEDIUMINT( )	-8388608 to 8388607, 정수형
0 to 16777215 , 정수형, UNSIGNED
INT( )	-2147483648 ~ 2147483647 정수형
0 ~ 4294967295, 정수형, UNSIGNED
BIGINT( )	-9223372036854775808 ~ 9223372036854775807, 정수형
0 ~ 18446744073709551615, 정수형, UNSIGNED.
FLOAT	작은 부동소수점
DOUBLE( , )	큰 부동소수점
DECIMAL( , )	 
 
DATE	YYYY-MM-DD.
DATETIME	YYYY-MM-DD HH:MM:SS.
TIMESTAMP	YYYYMMDDHHMMSS.
TIME	HH:MM:SS.
 

ENUM ( ) 정해진 값을 강제
SET

문법


#### INSERT INTO table_name VALUES (value1, value2, value3,...)

#### INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
예제

INSERT INTO `student` VALUES ('2', 'leezche', '여자', '서울', '2000-10-26');
INSERT INTO `student` (`id`, `name`, `sex`, `address`, `birthday`) VALUES ('1', 'egoing', '남자', 'seoul', '2000-11-16');
DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL,
  `name` char(4) NOT NULL,
  `sex` enum('남자','여자') NOT NULL,
  `address` varchar(50) NOT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', '1982-11-16 00:00:00'); 
INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울', '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', '1981-2-3 00:00:00');
1
UPDATE `student` SET address='서울';
1
UPDATE `student` SET name='이진경' WHERE id=1;
1
UPDATE `student` SET name='이고잉', birthday='2001-4-1' WHERE id=3;

DELETE
행단위로 데이터를 삭제

문법

DELETE FROM 테이블명 [WHERE 삭제하려는 칼럼 명=값]
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL,
  `name` char(4) NOT NULL,
  `sex` enum('남자','여자') NOT NULL,
  `address` varchar(50) NOT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  
INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', '1982-11-16 00:00:00');
INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울', '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', '1981-2-3 00:00:00');

1

DELETE FROM student WHERE id = 2;
TRUNCATE
테이블의 전체 데이터를 삭제
테이블에 외부키(foreign key)가 없다면 DELETE보다 훨씬 빠르게 삭제됨

문법
1

TRUNCATE 테이블명
예제
1
TRUNCATE student;
DROP TABLE
테이블을 삭제한다.

문법

DROP TABLE 테이블명;
DROP TABLE student;

조회

SELECT 칼럼명1, 칼럼명2 
    [FROM 테이블명 ] 
    [GROUP BY 칼럼명] 
    [ORDER BY 칼럼명 [ASC | DESC]] 
    [LIMIT offset, 조회 할 행의 수]
profile
개발 메모창고

0개의 댓글