*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*
데이터베이스 만들기
- create databases DB이름;
- 테이블: 데이터를 행(레코드, 로우)과 열(컬럼, 필드)로 스키마에 따라 저장할 수 있는 구조
- 스키마: 데이터베이스의 구조와 제약조건에 관한 명세를 기술한 집합
# 데이터베이스 형태
/*
create table 테이블명(
필드명1 데이터타입 제약조건,
필드명2 데이터타입 제약조건,
필드명3 데이터타입 제약조건,
...
)
*/
1. 숫자형 타입
- tinyint: 정수(1byte)
- smallint: 정수(2byte)
- int: 정수(4byte) - 약 -21억~21억 들어갈 수 있으며, 숫자형 타입 중 거의 int형만 사용합니다.
- bigint: 정수(8byte)
- float: 부동 소수형 데이터 타입(4byte)
- double: 부동 소수형 데이터 타입(8byte)-실수형 기본 / pc서버쪽 개발하려고 DBMS에서 쓰입니다.
- decimal(길이, 소수): 고정 소수형 데이터 타입
2. 문자형 타입
- char: 고정 길이 데이터 타입(최대 255byte)입니다.
- char은(는) 지정된 길이보다 짧은 데이터를 입력하면, 나머지 공간을 채워서 낭비합니다.
- varchar: 가변 길이 데이터 타입(최대 65535byte)으로 데이터베이스에서 많이 사용합니다.
- varchar은(는) 지정된 길이보다 짧은 데이터를 입력하면, 나머지 공간을 채우지 않아 메모리를 아낄 수 있습니다.
- text: 문자열 데이터 타입(최대 65535byte)
- longtext: 무제한 문자열 데이터 타입
3. 이진 데이터 타입
- binary, byte: char의 형태의 이진 데이터 타입(최대 255byte)
- varbinary: varchar의 형태의 이진 데이터 타입(최대 65535byte)
4. 날짜 데이터 타입
- date: 날짜(년도, 월, 일)형태의 데이터 타입(3byte)
- time: 시간(시, 분, 초)형태의 타입(3byte)
- datetime: 날짜와 시간 형태의 데이터 타입(8byte)
- timestamp: 1970년 1월 1일 0시 0분 0초부터 시작한 ms타입의 시간이 저장(4byte)
5. 제약 조건(constraint)
- 데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행되는 검사 규칙을 의미
- not null: null값을 허용하지 않고, 중복값은 허용합니다.
- unique: 중복값을 허용하지 않고, null 값을 허용합니다.
- unique + not null: unique 고윳값은 가지되, null값은 가지지 않으므로, 1개의 값만 가집니다.
- primary key: 기본키로써, null값을 허용하지 않고, 중복값을 허용하지 않으며, 테이블에 단 하나만 설정합니다. 참조키와 쌍으로 연결되며, 인덱싱을 설정합니다. (인덱싱은 자동 )
- default: null값을 삽입할 때 기본이 되는 값을 설정합니다.
- enum: 원하는 범위를 설정하고 해당 범위의 값만 저장합니다. (권장하진 않습니다.)
- foreign key: 참조키로써, 기본키와 쌍으로 연결됩니다. (-primary key 대응)
- primary key- foreign key 가 쌍으로 연결된다는 점은 기억해야 합니다.
# 문법구조 순서
create table member(
칼럼이름 자료타입 제약조건
)
# 데이터베이스 확인하기
show databases;
# 데이터베이스 만들기
create database kdt;
# 데이터베이스 선택하기(저장위치 지정)
use kdt;
create table member (
userid varchar(20) primary key,
userpw varchar(20) not null,
name varchar(20) not null,
hp varchar(20) unique not null,
email varchar(50) not null,
gender varchar(10) not null,
ssn1 char(6) not null,
ssn2 char(7) not null,
zip varchar(5) not null,
address1 varchar(100),
address2 varchar(100),
address3 varchar(100),
regdate datetime default now(), #넣지 않아도 기본적으로 현재시간 조정
point int default 100
);
위 코드는 'member'라는 kdt 데이터베이스에서 'member'라는 테이블을 생성하는 SQL코드입니다. userid 열을 primary key 설정, 나머지 열에는 제약조건을 걸고, 그중 regdate 열에는 default now()라는 제약조건을 겁니다. default now()제약조건은 now() 현재시간을 default값으로 지정합니다.
6. primary key와 foriegn key
primary key - foreign key는 테이블 간의 관계를 설정하고 유지하는데 사용합니다. primary key(기본키)는 각 행을 식별하고 고유하게 만들어주며, foreign key(외래키, 참조키)는 다른 테이블의 행을 참조하여 관계를 형성합니다.
REATE TABLE Students (
student_id INT PRIMARY KEY,
student_name VARCHAR(50),
class VARCHAR(50)
);
INSERT INTO Students (student_id, student_name, class) VALUES
(1, 'Alice', 'Mathematics'),
(2, 'Bob', 'Physics'),
(3, 'Charlie', 'Biology');
CREATE TABLE Courses (
course_id INT PRIMARY KEY,
course_name VARCHAR(50),
student_id INT,
FOREIGN KEY (student_id) REFERENCES Students(student_id)
);
INSERT INTO Courses (course_id, course_name, student_id) VALUES
(101, 'Calculus', 1),
(102, 'Physics 101', 2),
(103, 'Biology 101', 3);
위 예시에서 Students table에서 student_id열을 primary key로 지정합니다. Courses table에서 student_id를 foreign key로 지정합니다. 이를 통해, 각 과목이 어떤 학생에 의해 수강되는지 추적할 수 있습니다.
'DBMS' 카테고리의 다른 글
DBMS(5)- 문자열 함수와 union 연산자 (0) | 2024.03.27 |
---|---|
DBMS 기초(4)- 계수함수와 정규화, 그룹화 (0) | 2024.03.26 |
DBMS기초(3)-Crud와 연산자 (0) | 2024.03.26 |
DBMS 기초(1)- 데이터, DataBase에 대해 (0) | 2024.03.25 |
DBMS- MySQL 설치 및 실행 (0) | 2024.03.25 |