한화시스템 BEYOND SW 캠프 2기 4일차(23.11.02)

강지흔·2023년 11월 2일
0
post-thumbnail

!!!!!!!!포트포워딩!!!!!!!!정확히 이해하기~!~!~!
앞으로 계속 써야하는 개념

외울 것

클라이언트 프로그램(workbench)
서버 프로그램에 연결해서 서버 프로그램이 제공하는 서비스를 이용하는 프로그램

서버 프로그램(mysql)
서비스를 제공하는 프로그램

서버 프로그램과 클라이언트 프로그램이 둘 다 실행중이어야 서버 접속 가능
접속이 안되면 프로그램이 실행중인지 확인
ps -ef
systemctl status
ping ipaddr
netstat -anlp


web이라는 데이터 베이스를 사용하겠단는 명령어

USE web;

student라는 이름의 테이블을 생성

CREATE TABLE student (
name VARCHAR(10),
age INT,
gender VARCHAR(1)
);

student 테이블에 addr 속성 추가

ALTER TABLE student ADD addr VARCHAR(30);

student 테이블에 addr 속성 제거

ALTER TABLE student DROP addr;

student 테이블에 gender 속성을 addr로 변경

ALTER TABLE student RENAME COLUMN gender TO addr;

student 테이블에 addr 속성의 데이터 타입을 VARCHAR(30)로 변경

ALTER TABLE student MODIFY addr VARCHAR(30);

student 테이블 삭제

DROP TABLE student;

속성에 옵션 설정

CREATE TABLE student (
idx INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(10) NOT NULL,
age INT DEFAULT 1,
gender VARCHAR(1),
school_idx INT,
FOREIGN KEY (school_idx) REFERENCES school(idx)
);

ALTER로 옵션 설정

ALTER TABLE student MODIFY gender VARCHAR(1) NOT NULL;

school이라는 이름의 테이블 생성

CREATE TABLE school (
idx INT AUTO_INCREMENT PRIMARY KEY, # idx 속성에 자동 증가 옵션과 기본키 옵션 설정
name VARCHAR(20),
addr VARCHAR(20)
);

CREATE TABLE subject (
idx INT PRIMARY KEY,
name VARCHAR(20),
time INT
);

CREATE TABLE register (
subject_idx INT,
student_idx INT,

# 현재 테이블에 있는 subject_idx라는 속성을 subject라는 테이블에 있는 idx라는 속성을 참조해서 외래키로 설정
FOREIGN KEY (subject_idx) REFERENCES subject(idx), 
FOREIGN KEY (student_idx) REFERENCES student(idx)

);

CREATE TABLE teacher(
idx INT auto_increment PRIMARY KEY,
name VARCHAR(10)
);

ALTER TABLE subject ADD COLUMN teacher_idx INT;
ALTER TABLE subject ADD foreign key (teacher_idx) REFERENCES teacher(idx);

데이터 조회 기본 문법, school이라는 테이블에서 idx, name, addr 속성의 값을 조회

SELECT idx, name, addr FROM school;

데이터 삽입 기본 문법

INSERT INTO school (idx, name, addr) VALUES (1,'플레이 데이터','동작구');

기본값이 있는 속성은 안써줘도 됨 (auto_increment 또는 default)

INSERT INTO school (name, addr) VALUES ('동작 대학교','동작구');

속성의 값을 다 써주면 굳이 속성을 안써줘도 됨

INSERT INTO school VALUES (3, '동작 대대학교','동작구');

한 번에 여러 데이터 삽입

INSERT INTO school (name, addr)
VALUES
('동작 대학교1','동작구'),
('동작 대학교2','동작구'),
('동작 대학교3','동작구'),
('동작 대학교4','동작구');

school테이블에 있는 name 속성의 값이 '동작 대학교4'인 데이터만 삭제

DELETE FROM school WHERE name='동작 대학교4';

school테이블에 있는 name 속성의 값이 '플레이 데이터'인 데이터만 addr 속성의 값을 'SFC 빌딩'로 변경

UPDATE school SET addr='SFC 빌딩' WHERE name='플레이 데이터';

기본키는 테이블당 하나씩 존재
외래키는 1 대 N 관계에서 N쪽에 생성됨(1쪽의 속성 이름을 따옴)

N 대 N의 관계에선 테이블이 하나 더 생성 됨(양쪽의 기본키를 가져와서 생성)

(삽입, 삭제, 갱신)이상문제를 해결하려면 테이블을 쪼개면 됨-> 정규화

  1. 리눅스 컴퓨터에 압축 파일 다운(파일의 주소 http://192.168.0.100:1234/test_db%2dmaster.zip)
    wget http://192.168.0.100:1234/test_db%2dmaster.zip

  2. 리눅스 컴퓨터에 unzip 이라는 압축 해제 프로그램 설치
    yum install -y unzip

  3. unzip 이용해서 압축 해제
    unzip test_db-master.zip

  4. DB 서버의 관리자 권한으로 압축 해제한 파일을 DB 서버에 추가
    ls 입력해서 확인 후
    경로이동 cd test_db-master
    mysql -u root -p < employees.sql
    패스워드 입력

5.권한부여
mysql -u root -p
패스워드 입력
GRANT ALL PRIVILEGES ON employees.* to 'kjh'@'%';

exit로 나오기


위에 받은 파일로 SQL에서 실습

  1. salaries 테이블에서 급여가 65000~70000 범위에 속하지 않는 사원의 emp_no와 salary를 출력하시오.

select emp_no, salary
from salaries
where salary < 65000 or salary > 70000;

2.employees 테이블에서 last_name이 Facello 이거나 Simmel 인 사원들의 last_name과 birth_date를 출력하시오.

select last_name, birth_date
from employees
where last_name = 'Facello' or last_name = 'Simmel';

3.employees 테이블에서 last_name이 A로 시작하는 사원의 last_name과 first_name을 출력하시오

select last_name, first_name
from employees
where last_name like 'A%';

4.employees 테이블에서 last_name에 aba가 포함된 사원의 last_name과 first_name을 출력하시오

select last_name, first_name
from employees
where last_name like '%aba%';

putty 리눅스 서버 ip 입력하면 사용 가능(스크롤, 글씨 키우기 가능)

0개의 댓글