낙서장[1]/93. DataBase: 6개의 글

[DataBase] PK 지정 및 제거

Posted by nkjok
2025. 4. 7. 16:51 낙서장[1]/93. DataBase
반응형

1. 테이블 생성
mysql> create table 테스트부서2( 부서번호 varchar(25) not null, 부서명 varchar(25) not null, 테스트번호 varchar(25)
not null);
Query OK, 0 rows affected (0.06 sec)

mysql> desc 테스트부서2;
+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 부서번호        | varchar(25) | NO   |     | NULL    |       |
| 부서명          | varchar(25) | NO   |     | NULL    |       |
| 테스트번호      | varchar(25) | NO   |     | NULL    |       |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)



2. PK 지정 
mysql> alter table 테스트부서2 ADD primary key (부서번호);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc 테스트부서2;
+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 부서번호        | varchar(25) | NO   | PRI | NULL    |       |
| 부서명          | varchar(25) | NO   |     | NULL    |       |
| 테스트번호      | varchar(25) | NO   |     | NULL    |       |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)



3. PK 삭제
mysql> alter table 테스트부서2 drop primary key;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc 테스트부서2;
+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 부서번호        | varchar(25) | NO   |     | NULL    |       |
| 부서명          | varchar(25) | NO   |     | NULL    |       |
| 테스트번호      | varchar(25) | NO   |     | NULL    |       |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)



4. PK 삭제 후 다른 속성에 PK 지정
mysql> alter table 테스트부서2 add primary key (테스트번호);
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc 테스트부서2;
+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 부서번호        | varchar(25) | NO   |     | NULL    |       |
| 부서명          | varchar(25) | NO   |     | NULL    |       |
| 테스트번호      | varchar(25) | NO   | PRI | NULL    |       |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

반응형

[DataBase] mysql & mariadb 계정생성 및 원격권한

Posted by nkjok
2025. 2. 4. 21:15 낙서장[1]/93. DataBase
반응형

mysql :  

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
CREATE USER 'react'@'%' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'react'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

 

mariadb:

ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
CREATE USER 'react'@'%' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'react'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

반응형

[DataBase] MySQL에서 데이터베이스 및 테이블 생성하기

Posted by nkjok
2025. 1. 29. 12:53 낙서장[1]/93. DataBase
반응형

데이터베이스와 테이블 생성 절차

  1. 데이터베이스를 생성한다:
    CREATE DATABASE db_board;
    

     

  2. 생성한 데이터베이스를 사용한다:
    USE db_board;
    

     

  3. 테이블을 생성한다:
    CREATE TABLE article (
        id BIGINT AUTO_INCREMENT PRIMARY KEY,
        title VARCHAR(30),
        contents VARCHAR(500),
        writer VARCHAR(20),
        reg_date TIMESTAMP DEFAULT NOW()
    );
    

데이터 삽입

  1. 데이터를 테이블에 삽입한다:
    INSERT INTO article(title, contents, writer) VALUES
    ('한 번 배워서 어디서나 사용하기','기술 스택의 나머지 부분에는 관여하지 않기 때문에, 기존 코드를 다시 작성하지 않고도 React의 새로운 기능을 이용해 개발할 수 있습니다.','red');
    
    INSERT INTO article(title, contents, writer) VALUES
    ('상태를 가지는 컴포넌트','컴포넌트는 this.props를 이용해 입력 데이터를 다루는 것 외에도 내부적인 상태 데이터를 가질 수 있습니다. 이는 this.state로 접근할 수 있습니다.','orange');
    
    INSERT INTO article(title, contents, writer) VALUES
    ('애플리케이션','props와 state를 사용해서 간단한 Todo 애플리케이션을 만들 수 있습니다.','yellow');
    
    INSERT INTO article(title, contents, writer) VALUES
    ('외부 플러그인을 사용하는 컴포넌트','React는 유연하며 다른 라이브러리나 프레임워크를 함께 활용할 수 있습니다. 이 예제에서는 외부 마크다운 라이브러리인 remarkable을 사용해 <textarea>의 값을 실시간으로 변환합니다.','green');
    
    INSERT INTO article(title, contents, writer) VALUES
    ('자습서를 시작하기 전에','우리는 이 자습서에서 작은 게임을 만들겁니다. 게임을 만들고 싶지 않아서 자습서를 건너뛰고 싶을 수 있습니다. 그래도 한번 해보세요!','blue');
    
    INSERT INTO article(title, contents, writer) VALUES
    ('브라우저에 코드 작성하기','먼저 새 탭에서 초기 코드를 열어주세요. 새 탭은 비어있는 틱택토 게임판과 React 코드를 보여줄 것입니다. 우리는 자습서에서 React 코드를 편집할 것입니다.','navy');
    
    INSERT INTO article(title, contents, writer) VALUES
    ('React란 무엇인가요?','React는 몇 가지 종류의 컴포넌트를 가지지만 우리는 React.Component의 하위 클래스를 사용해보겠습니다.','purple');
    

     

  2. 변경 사항을 저장한다:
    COMMIT;
    

     

  3. 데이터 확인을 위해 모든 레코드를 조회한다:
    SELECT * FROM article;
    

 

이 방법으로 MySQL에서 데이터베이스와 테이블을 생성하고 데이터를 삽입할 수 있다. 

반응형

[DataBase] MySQL에서 사용자 계정/권한 생성 및 제거하기

Posted by nkjok
2025. 1. 29. 12:47 낙서장[1]/93. DataBase
반응형

계정 생성 및 권한 부여

  1. 계정을 생성한다:
    CREATE USER 'react'@'%' IDENTIFIED BY 'Password';
    

     

  2. 모든 권한을 부여한다:
    GRANT ALL PRIVILEGES ON *.* TO 'react'@'%' WITH GRANT OPTION;
    

     

  3. 권한 변경을 적용한다:
    FLUSH PRIVILEGES;
    

     

계정의 권한 제거 및 삭제

  1. 모든 권한과 부여 옵션을 제거한다:
    REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'react'@'%';
    

     

  2. 사용자 계정을 삭제한다:
    DROP USER 'react'@'%';
    

 

이제 MySQL에서 계정을 생성하고 삭제할 수 있다-!

반응형

[DataBase] 조인 SQL문

Posted by nkjok
2025. 1. 24. 15:53 낙서장[1]/93. DataBase
반응형

1. LEFT JOIN

LEFT JOIN은 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환한다. 왼쪽 테이블에 일치하는 레코드가 없으면 NULL 값을 포함한 레코드를 반환한다.

sql
SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key;

2. INNER JOIN

INNER JOIN은 두 테이블 간의 일치하는 레코드만 반환한다. 일치하는 레코드가 없으면 결과에 포함되지 않는다.

sql
SELECT * FROM TableA A INNER JOIN TableB B ON A.key = B.key;

3. RIGHT JOIN

RIGHT JOIN은 오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 일치하는 레코드를 반환한다. 오른쪽 테이블에 일치하는 레코드가 없으면 NULL 값을 포함한 레코드를 반환한다.

sql
SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key;

4. LEFT JOIN with NULL condition

LEFT JOIN에 WHERE 조건을 추가하여 오른쪽 테이블에 일치하지 않는 레코드만 반환한다.

sql
SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key WHERE B.Key IS NULL;

5. FULL OUTER JOIN

FULL OUTER JOIN은 두 테이블의 모든 레코드를 반환하며, 일치하지 않는 레코드는 NULL 값을 포함한다. SQL에서는 FULL OUTER JOIN을 UNION으로 구현할 수 있다.

sql
SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key
UNION
SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key;

6. FULL OUTER JOIN with NULL condition

FULL OUTER JOIN에 WHERE 조건을 추가하여 어느 한쪽에 일치하지 않는 레코드만 반환한다.

sql
SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key
UNION
SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key WHERE A.key IS NULL OR B.key IS NULL;

7. RIGHT JOIN with NULL condition

RIGHT JOIN에 WHERE 조건을 추가하여 왼쪽 테이블에 일치하지 않는 레코드만 반환한다.

sql
SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key WHERE A.Key IS NULL;

이러한 JOIN 종류를 사용하면 다양한 방식으로 데이터를 결합하고 조회할 수 있다. 상황에 맞게 적절한 JOIN을 선택하여 데이터베이스 쿼리를 작성하면 된다.

 

 

출처: https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-JOIN-%EC%A1%B0%EC%9D%B8-%EA%B7%B8%EB%A6%BC%EC%9C%BC%EB%A1%9C-%EC%95%8C%EA%B8%B0%EC%89%BD%EA%B2%8C-%EC%A0%95%EB%A6%AC 발췌

반응형