웹_프론트_백엔드/프론트엔드

2021.01.24

shine94 2021. 1. 27. 01:21

1. 만약 Apache와 MySQL이 안될때, 제일 먼저 확인해야 하는 것

1) Apache2.4

 

2) MySQL

 

 

2. SQL(Structured Query Language)

 : 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어이다.

 

 

3. 특징
   대소문자를 구별하지 않는다.
   문자열을 저장할때 ''(홑따옴표)만 사용한다.

 

 

4. 데이터베이스(DataBase)

 : 저장소, 데이터를 통합하여 관리하는 집합체를 의미한다.

 


5. 데이터베이스 관리시스템(DataBase Management System, DBMS)
 : MySQL -> 데이터베이스를 관리해주는 소프트웨어를 말한다.

 

 

6. 데이터베이스

   - 테이블(Data 저장) → 엑셀과 비슷
     [열] 컬럼, 필드, 어트리뷰트, 속성
     [행] 로우, 레코드, 튜플

   - 함수

   - 저장프로시저

   - 뷰

   ...

 

 

7. 데이터 타입

1) 숫자 타입

   [정수] tinyint, smallint, meduimint, int, bigint, ...

   [소수] float, double, ...

 

2) 문자열 타입

   [텍스트] char, varchar, text
              char(5) → 1byte만 저장하더라도 5byte를 모두 사용
              varchar(5) → 1byte만 저장하면 1byte만 사용

   [바이너리] binary, varvinary

   [열거] enum
           enum('남자', '여자')

 

3) 날짜와 시간타입

   [날짜] date

   [날짜와 시간] datetime, timestamp

 

 

8. 제약조건
 : 데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행하는 검사 규칙이다.


1) NOT NULL

   필드에 NULL값을 저장할 수 없다.

 

2) UNIQUE
   서로 다른 값을 가져야 한다.

   중복된 값을 저장할 수 없다.

   단, NULL 값을 허용한다.


3) DEFAULT
기본값을 설정한다(NULL 값이 저장될때).

 

4) AUTO_INCREMENT

   자동으로 숫자가 증가되어 추가된다.


5) PRIMARY KEY

   UNIQUE 제약과 NOT NULL 제약의 특징을 모두 가진다.

   테이블에 오직 하나의 필드에만 설정할 수 있다.

   데이터를 쉽게 빠르게 찾을 수 있게 도와준다(색인).

   외래키가 참조할 수 있도록 만든다.

 

6) FOREIGN KEY

   다른 테이블과 연결해주는 역할을 한다.

   기준이 되는 테이블의 내용을 참조해서 레코드가 입력된다.
   다른 테이블에 의존하는 필드가 된다.
   PRIMARY KEY를 참조한다.

 

 

9. SQL 문법
   ① -- : 주석문

   ② ; : 문장의 끝

   ③ 실행 : (문장의 끝이나 블록, 문장 중간에) Ctrl + Enter
   ④ 테이블(Table) : 테이터를 행과 열로 스키마에 따라 저장할 수 있는 구조를 말한다.
       └ 스키마 : 데이터베이스의 구조와 제약 조건에 관한 명세를 기술한 집합을 의미한다.

   ⑤ 데이터베이스 확인 : SHOW DATABASES;

   ⑥ 테이터베이스 생성 : CREATE DATABASE 데이터베이스명;

   ⑦ 데이터베이스 삭제 : DROP DATABASE 데이터베이스명;

   ⑧ 데이터베이스 사용 : USE 데이터베이스명;

   ⑨ 테이블 생성

       CREATE TABLE 테이블명 (
           필드이름1 타입 제약조건,
           필드이름2 타입 제약조건,
           필드이름3 타입 제약조건,
           필드이름4 타입 제약조건,
           ...
       );

   ⑩ 테이블 구조 확인 : DESC 테이블명;

   ⑪ 테이블 삭제 : DROP TABLE 테이블명;

   ⑫ 테이블 필드 추가 : ALTER TABLE 테이블명 ADD 컬럼명 컬럼타입 제약조건

   ⑬ 테이블 필드 수정 : ALTER TABLE 테이블명 modify colum 컬럼명 컬럼타입 제약조건;

   ⑭ 테이블 필드 삭제 : ALTER TABLE 테이블명 DROP 컬럼명;

   ⑮ 데이터 삽입(INSERT)
       └ INSERT INTO 테이블명 VALUES (값1, 값2, 값3, 값4, ... );
       └ INSERT INTO 테이블명 (필드명1, 필드명2, 필드명3, ... ) VALUES (값1, 값2, 값3, ... );

   ⑯ 모든 데이터 확인 : SELECT * FROM tb_member;

   ⑰ 데이터 수정(UPDATE)
       └ UPDATE 테이블명 SET 필드명1=값1, 필드명2=값2, ... ;
       └ UPDATE 테이블명 SET 필드명1=값1, 필드명2=값2, ... WHERE 조건절;
       └ Error Code: 1175. You are using safe update mode and 
           you tried to update a table without a WHERE that uses a KEY column.  
           To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
           [해결] SET SQL_SAFE_UPDATES = 0;

   ⑱ 데이터 삭제(DELETE)
       └ DELETE FROM 테이블명;
       └ DELETE FROM 테이블명 WHERE 조건절;

   ⑲ 외래키 실습

 

 

10. SQL 실습

-- 데이터베이스 확인
-- SHOW DATABASES;
SHOW DATABASES;

-- 데이터베이스 생성
-- CREATE DATABASE 데이터베이스명;
CREATE DATABASE frontenddb;
SHOW DATABASES;

-- 데이터베이스 삭제
-- DROP DATABASE 데이터베이스명;
DROP DATABASE frontenddb;
SHOW DATABASES;
CREATE DATABASE frontenddb;

-- 데이터베이스 사용
-- USE 데이터베이스명;
USE frontenddb;

-- 회원테이블 만들기
CREATE TABLE tb_member (
    mem_idx bigint auto_increment primary key,
    mem_userid varchar(20) unique not null,
    mem_userpw varchar(20) not null,
    mem_name varchar(20) not null,
    mem_hp varchar(13) not null,
    mem_email varchar(50),
    mem_hobby varchar(100),
    mem_ssh1 char(6) not null,
    mem_ssh2 char(7) not null,
    mem_zipcode char(5) not null,
    mem_address1 varchar(100),
    mem_address2 varchar(100),
    mem_address3 varchar(100),
    mem_regdate datetime default now()
);

-- 테이블 구조 확인
-- DESC 테이블명;
DESC tb_member;

-- 테이블 삭제
-- DROP TABLE 테이블명;
DROP TABLE tb_member;
DESC tb_member;
CREATE TABLE tb_member (
    mem_idx bigint auto_increment primary key,
    mem_userid varchar(20) unique not null,
    mem_userpw varchar(20) not null,
    mem_name varchar(20) not null,
    mem_hp varchar(13) not null,
    mem_email varchar(50),
    mem_hobby varchar(100),
    mem_ssh1 char(6) not null,
    mem_ssh2 char(7) not null,
    mem_zipcode char(5) not null,
    mem_address1 varchar(100),
    mem_address2 varchar(100),
    mem_address3 varchar(100),
    mem_regdate datetime default now()
);
DESC tb_member;

-- 테이블 필드 추가
-- ALTER TABLE 테이블명 ADD 컬럼명 컬럼타입 제약조건
ALTER TABLE tb_member ADD mem_point int default 0;
DESC tb_member;

-- 테이블 필드 수정
-- ALTER TABLE 테이블명 modify colum 컬럼명 컬럼타입 제약조건;
ALTER TABLE tb_member modify column mem_address3 varchar(50);
DESC tb_member;

-- 테이블 필드 삭제
-- ALTER TABLE 테이블명 DROP 컬럼명;
ALTER TABLE tb_member DROP mem_point;
DESC tb_member;

-- 데이터 삽입(INSERT)
-- 1. INSERT INTO 테이블명 VALUES (값1, 값2, 값3, 값4, ... );
-- 2. INSERT INTO 테이블명 (필드명1, 필드명2, 필드명3, ... ) VALUES (값1, 값2, 값3, ... );
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('apple', '1111', '김사과', '010-1111-1111', 'apple@apple.com', '드라이브',
						'001011', '4068518', '12345', '서울 강남구', '역삼동', '11-1');

-- 모든 데이터 확인
SELECT * FROM tb_member;

ALTER TABLE tb_member ADD mem_point int default 0;
DESC tb_member;
SELECT * FROM tb_member;

-- 값이 다른 행을 10개 추가
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('banana', '1234', '반하나', '010-2222-2222', 'banana@banana.com', '영화감상',
						'001011', '4068518', '12345', '서울 서초구', '양재동', '11-1');
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('orange', '1212', '오렌지', '010-3333-3333', 'orange@orange.com', '등산',
						'001011', '4068518', '12345', '서울 서초구', '서초동', '11-1');
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('melon', '2222', '이멜론', '010-4444-4444', 'melon@melon.com', '게임',
						'001011', '4068518', '12345', '서울 서초구', '반포동', '11-1');
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('berry', '0000', '배애리', '010-5555-5555', 'berry@berry.com', '드라이브',
						'001011', '4068518', '12345', '서울 동작구', '사당동', '11-1');
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('tomato', '3333', '도마토', '010-6666-6666', 'tomato@tomato.com', '등산',
						'001011', '4068518', '12345', '서울 강남구', '역삼동', '11-1');
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('avocado', '4444', '안카도', '010-7777-7777', 'avocado@avocado.com', '게임',
						'001011', '4068518', '12345', '서울 서초구', '방배동', '11-1');
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('cherry', '5555', '채애리', '010-8888-8888', 'cherry@cherry.com', '드라이브',
						'001011', '4068518', '12345', '서울 동작구', '신대방동', '11-1');
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('coconet', '8888', '고코넛', '010-9999-9999', 'coconet@coconet.com', '영화감상',
						'001011', '4068518', '12345', '서울 동작구', '흑석동', '11-1');
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, 
							mem_ssh1, mem_ssh2, mem_zipcode, mem_address1, mem_address2, mem_address3) 
			VALUES ('grapes', '9999', '구래프', '010-0000-0000', 'grapes@grapes.com', '쇼핑',
						'001011', '4068518', '12345', '서울 구로구', '구로동', '11-1');
SELECT * FROM tb_member;

-- 데이터 수정(UPDATE)
-- 1. UPDATE 테이블명 SET 필드명1=값1, 필드명2=값2, ... ;
SET SQL_SAFE_UPDATES = 0;
UPDATE tb_member SET mem_point = 500;
SELECT * FROM tb_member;
-- 2. UPDATE 테이블명 SET 필드명1=값1, 필드명2=값2, ... WHERE 조건절;
UPDATE tb_member SET mem_point = 300 WHERE mem_userid = 'apple';
SELECT * FROM tb_member;

UPDATE tb_member SET mem_point = mem_point + 1000;
SELECT * FROM tb_member;

-- 데이터 삭제(DELETE)
-- 1. DELETE FROM 테이블명;
-- 2. DELETE FROM 테이블명 WHERE 조건절;
DELETE FROM tb_member WHERE mem_idx = 10;
SELECT * FROM tb_member;

-- 추가 테이블
CREATE TABLE tb_profile (
    pro_memidx bigint,
    pro_age int,
    pro_gender enum('남자', '여자'),
    pro_height double,
    pro_weight double,
    pro_birthday datetime,
    foreign key(pro_memidx) references tb_member(mem_idx)
);

INSERT INTO tb_profile VALUES (1, 20, '여자', 160.5, 50.5, '2000-01-24');
SELECT * FROM tb_profile;

-- foreign key 에러
-- INSERT INTO tb_profile VALUES (10, 25, '남자', 170.5, 60.5, '1995-01-24');

INSERT INTO tb_profile (pro_memidx, pro_age) VALUES (2, 22);
SELECT * FROM tb_profile;

INSERT INTO tb_profile (pro_memidx, pro_age, pro_gender, pro_height, pro_weight) VALUES (3, 25, '남자', 180.5, 80.5);
SELECT * FROM tb_profile;

-- 외래키가 연결되어 있는 경우 삭제(원본 테이블의 데이터를 삭제)
-- DELETE FROM tb_member WHERE mem_idx = 2;	-- 외래키 데이터가 존재하기 때문에 삭제 불가

-- 1. 외래키 데이터 삭제
DELETE FROM tb_profile WHERE pro_memidx = 2;
-- 2. 원본 데이터 삭제
DELETE FROM tb_member WHERE mem_idx = 2;
SELECT * FROM tb_member;
SELECT * FROM tb_profile;

'웹_프론트_백엔드 > 프론트엔드' 카테고리의 다른 글

2021.01.31  (0) 2021.01.31
2021.01.30  (0) 2021.01.30
2021.01.23  (0) 2021.01.23
2021.01.17  (0) 2021.01.17
2021.01.16  (0) 2021.01.16