반응형



CREATE / DROP DB


https://www.w3schools.com/sql/sql_create_db.asp


CREATE DATABASE databasename;


를 통해 데이터 베이스 생성이 가능하다.


https://www.w3schools.com/sql/sql_drop_db.asp


DROP DATABASE databasename;


를 통해 존재하는 DB를 삭제(Drop) 가능하다.





CREATE / DROP / ALTER TABLE


https://www.w3schools.com/sql/sql_create_table.asp


데이터 베이스를 생성했다면 테이블을 생성해야한다.


CREATE TABLE는 다음과 같이 사용한다.


CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);


CREATE TABLE Persons (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

Persons 테이블을 만드는데 PersonID는 int형, 나머지는 char형으로 구성되어있다.


위의 테이블을 생성했으면 데이터 추가를 해야한다.


INSERT INTO Persons
VALUES (1,'A','B','C','D')


혹은 


INSERT INTO Persons (PersonID, LastName, FirstName, City, Address)
VALUES (1,'A','B','C','D')


두개를 이용해서 데이터를 추가해보고 비교해보자.



이미 존재하는 테이블에서 새로운 테이블을 생성하며 값을 가져오고 싶을 때는 다음과 같이 이용한다.


CREATE TABLE new_table_name AS
SELECT column1, column2,...
FROM existing_table_name
WHERE ....;



https://www.w3schools.com/sql/sql_drop_table.asp


테이블을 DROP 시키기 위해서는 다음과 같이 사용한다.


DROP TABLE table_name;
DROP TABLE Persons;


를 해보자.        


테이블은 살려두되 테이블 내부 레코드는 모두 삭제하기 위해서는 아래와 같이 TRUNCATE를 사용한다,.


TRUNCATE TABLE table_name;



https://www.w3schools.com/sql/sql_alter.asp


테이블 상태 변경을 위해서는 ALTER TABLE을 사용한다.


테이블에 새로운 열을 추가하기 위해서는 ADD를 이용하면 된다.


ALTER TABLE table_name
ADD column_name datatype;


ALTER TABLE Persons
ADD hello int;


를 해보자



테이블에 열을 삭제하기 위해서는 DROP를 사용하면 된다.


ALTER TABLE table_name
DROP COLUMN column_name;



데이터 타입을 변경시키기 위해서는 ALTER 혹은 MODIFY를 프로그램에 맞게 이용하면 된다.


SQL Server / MS Access:

ALTER TABLE table_name
ALTER COLUMN column_name datatype;



My SQL / Oracle (prior version 10G):

ALTER TABLE table_name
MODIFY COLUMN column_name datatype;



Oracle 10G and later:

ALTER TABLE table_name
MODIFY column_name datatype;




CONSTRAINTS


https://www.w3schools.com/sql/sql_constraints.asp


constraints는 CREATE TABLE 구문 혹은 ALTER TABLE에서 사용 가능한데 잘못된 형식의 데이터 삽입 혹은 삭제가 일어날 때 액션을 금지시킨다.


CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);


아래에는 constraint가 어떻게 쓰이는지 알려주고 있다.


The following constraints are commonly used in SQL:


NOT NULL - Ensures that a column cannot have a NULL value

UNIQUE - Ensures that all values in a column are different

PRIMARY KEY - A combination of a NOT NULL and UNIQUE. Uniquely identifies each row in a table

FOREIGN KEY - Uniquely identifies a row/record in another table

CHECK - Ensures that all values in a column satisfies a specific condition

DEFAULT - Sets a default value for a column when no value is specified

INDEX - Used to create and retrieve data from the database very quickly



NOT NULL Constraint


NOT NULL이 붙으면 해당하는 값에 NULL이 들어오면 금지시킨다.


CREATE TABLE Persons2 (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);


INSERT INTO Persons2
VALUES (1,'A','B',2)


INSERT INTO Persons2 (LastName, FirstName, Age)
VALUES ('A','B',2)



INSERT INTO Persons2 (LastName, FirstName, ID)
VALUES ('A','B',2)


테이블을 생성하고 첫번째 INSERT INTO는 제대로 들어가지만 


두번째 INSERT INTO는 NULL을 허용하지 않기에 금지된다.


세번째 INSERT INTO는 NOT NULL constraint를 설정하지 않았기에 삽입된다.



UNIQUE Constraint


UNIQUE가 붙으면 열의 모든 값이 서로 다른지 확인하고 중복이 되지 않게 해준다.


UNIQUE와 PRIMARY KEY는 둘다 열 집합 내에서의 고유성을 보장하지만


하나의 테이블에서 UNIQUE는 여러번 쓸 수 있지만 PRIMARY KEY는 한 번만 쓸 수 있다.




여러 컬럼을 한번에 UNIQUE로 하고 UNIQUE constraint에 이름을 부여하는 방식이다.


MySQL / SQL Server / Oracle / MS Access 공용이다.


CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE (ID,LastName)
);



ALTER TABLE를 이용하여 특정 필드를 UNIQUE로 바꾸기 위해서는


ALTER TABLE table_name
ADD UNIQUE (field_name);

을 하면된다


ALTER TABLE Persons
ADD UNIQUE (ID);


ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);



UNIQUE Constraint를 없애기 위해서는 DROP을 쓰면된다.


MySQL:

ALTER TABLE Persons
DROP UNIQUE UC_Person;



SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT UC_Person;





반응형