CS과목/데이터베이스
[CS과목/데이터베이스] MySQL 실습1
johyeongseob
2025. 4. 21. 16:53
2025-1 데이터베이스 (CSC4009-01) prof. 이우진
학교 서버 접속
C:\Users\[Nickname]>ssh [2024120418]@[접속할 서버 주소] -p [포트 번호]
> ssh : ssh 클라이언트 프로그램. 원격 컴퓨터에 접속할 때 사용
MySQL 접속
[2024120418]@linuxserver1:~$ mysql -u DB_[2024120418] -p
> mysql: MySQL 클라이언트 프로그램 실행
> u DB_[2024120418]: 사용자 이름(User)을 DB_[2024120418]으로 설정해서 로그인
> -p: 비밀번호를 입력하겠다는 의미
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| DB_2024120418 |
| information_schema |
| performance_schema |
+--------------------+
3 rows in set (0.01 sec)
> MySQL 서버에 존재하는 데이터베이스 목록을 보여줘!
mysql> USE DB_2024120418
Database changed
> 이제부터 너가 실행하는 SQL 명령어들은 DB_2024120418 데이터베이스를 기준으로 처리할게!
실습1: 테이블 생성
mysql> CREATE TABLE 제품 (
-> 제품번호 CHAR(3) NOT NULL,
-> 제품명 VARCHAR(20),
-> 재고량 INT,
-> 단가 INT,
-> 제조업체 VARCHAR(20),
-> PRIMARY KEY(제품번호),
-> CHECK (재고량 >=0 AND 재고량 <= 10000)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE 주문 (
-> 주문번호 CHAR(3) NOT NULL,
-> 주문고객 VARCHAR(20),
-> 주문제품 CHAR(3),
-> 수량 INT,
-> 배송지 VARCHAR(30),
-> 주문일자 DATE,
-> PRIMARY KEY(주문번호)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE 고객 (
-> 고객아이디 VARCHAR(20) NOT NULL,
-> 고객이름 VARCHAR(10) NOT NULL,
-> 나이 INT,
-> 등급 VARCHAR(10) NOT NULL,
-> 직업 VARCHAR(20),
-> 적립금 INT DEFAULT 0,
-> PRIMARY KEY (고객아이디)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE 배송업체 (
-> 업체번호 CHAR(3) NOT NULL,
-> 업체명 VARCHAR(20),
-> 주소 VARCHAR(100),
-> 전화번호 VARCHAR(20),
-> PRIMARY KEY(업체번호)
-> );
Query OK, 0 rows affected (0.01 sec)
> 제품 테이블 생성
> NOT NULL: 비워둘 수 없다는 제약 조건
> VARCHAR: 가변 길이 문자
> PRIMARY KEY: 기본키
> 행 끝은 , 포함. 마지막 행 끝은 , 미포함
> ';' : 명령어의 끝을 알리는 중요한 문법적 표시
실습2: 테이블 구조 확인
mysql> DESC 주문;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| 주문번호 | char(3) | NO | PRI | NULL | |
| 주문고객 | varchar(20) | YES | | NULL | |
| 주문제품 | char(3) | YES | | NULL | |
| 수량 | int | YES | | NULL | |
| 배송지 | varchar(30) | YES | | NULL | |
| 주문일자 | date | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
실습3: 테이블 변경-컬럼 추가
mysql> ALTER TABLE 고객 ADD 가입날짜 DATE;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC 고객;
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 고객아이디 | varchar(20) | NO | PRI | NULL | |
| 고객이름 | varchar(10) | NO | | NULL | |
| 나이 | int | YES | | NULL | |
| 등급 | varchar(10) | NO | | NULL | |
| 직업 | varchar(20) | YES | | NULL | |
| 적립금 | int | YES | | 0 | |
| 가입날짜 | date | YES | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
7 rows in set (0.01 sec)
실습4: 테이블 변경-컬럼 삭제
mysql> ALTER TABLE 고객 DROP COLUMN 가입날짜;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC 고객;
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 고객아이디 | varchar(20) | NO | PRI | NULL | |
| 고객이름 | varchar(10) | NO | | NULL | |
| 나이 | int | YES | | NULL | |
| 등급 | varchar(10) | NO | | NULL | |
| 직업 | varchar(20) | YES | | NULL | |
| 적립금 | int | YES | | 0 | |
+-----------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
실습5: 테이블 변경-제약조건 추가/삭제
mysql> ALTER TABLE 고객
-> ADD CONSTRAINT CHK_AGE CHECK (나이 >= 20);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM information_schema.table_constraints
-> WHERE table_name = '고객';
+--------------------+-------------------+-----------------+---------------+------------+-----------------+----------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | ENFORCED |
+--------------------+-------------------+-----------------+---------------+------------+-----------------+----------+
| def | DB_2024120418 | PRIMARY | DB_2024120418 | 고객 | PRIMARY KEY | YES |
| def | DB_2024120418 | CHK_AGE | DB_2024120418 | 고객 | CHECK | YES |
+--------------------+-------------------+-----------------+---------------+------------+-----------------+----------+
2 rows in set (0.00 sec)
실습6: 테이블 삭제
mysql> DROP TABLE 배송업체;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW TABLES;
+-------------------------+
| Tables_in_DB_2024120418 |
+-------------------------+
| 고객 |
| 제품 |
| 주문 |
+-------------------------+
3 rows in set (0.00 sec)