`DROP SCHEMA ... RESTRICT` 명령어는 스키마를 삭제할 때 사용되며, 데이터베이스 시스템에 따라 동작 방식이 다를 수 있습니다. 주로 `RESTRICT`는 스키마에 속한 객체가 존재하는 경우 스키마 삭제를 제한하는 옵션입니다. 스키마가 비어 있지 않으면 삭제가 실패합니다.
### 주요 데이터베이스 시스템에서의 사용
1. **Oracle Database**
- Oracle에서는 `DROP SCHEMA` 명령어를 지원하지 않으며, 대신 `DROP USER`와 `CASCADE` 옵션을 사용합니다. Oracle에서는 `RESTRICT`와 같은 옵션이 없으며, `CASCADE`를 사용하여 사용자의 스키마와 모든 객체를 삭제할 수 있습니다.
2. **SQL Server**
- SQL Server에서는 `DROP SCHEMA` 명령어가 있지만, `RESTRICT` 옵션은 지원하지 않습니다. 스키마를 삭제할 때는 스키마에 속한 모든 객체를 먼저 삭제하거나 다른 스키마로 이동해야 합니다. 스키마 삭제를 제한하는 옵션은 없습니다.
```sql
DROP SCHEMA schema_name;
```
스키마를 삭제할 때 해당 스키마에 속한 객체가 있는 경우 삭제가 실패합니다.
3. **MySQL**
- MySQL에서 스키마 삭제는 `DROP DATABASE` 명령어를 통해 수행되며, `RESTRICT` 옵션은 지원하지 않습니다. 데이터베이스를 삭제할 때는 해당 데이터베이스에 속한 모든 객체가 삭제됩니다.
```sql
DROP DATABASE schema_name;
```
데이터베이스가 비어 있지 않더라도 삭제가 수행되며, 해당 데이터베이스에 속한 모든 테이블과 객체가 삭제됩니다.
4. **PostgreSQL**
- PostgreSQL에서는 `DROP SCHEMA` 명령어와 `RESTRICT` 옵션을 지원합니다. `RESTRICT`는 스키마에 속한 객체가 존재하는 경우 스키마 삭제를 거부합니다.
```sql
DROP SCHEMA schema_name RESTRICT;
```
- **`RESTRICT`**: 스키마에 객체가 존재하는 경우 삭제를 거부합니다. 스키마를 삭제하기 전에 스키마에 포함된 모든 객체를 먼저 삭제해야 합니다.
### 요약
- **Oracle**: `DROP USER ... CASCADE`를 사용하여 스키마와 객체를 삭제합니다. `RESTRICT` 옵션은 지원하지 않습니다.
- **SQL Server**: `DROP SCHEMA`를 사용하여 스키마를 삭제합니다. 스키마에 객체가 있는 경우 삭제가 실패합니다.
- **MySQL**: `DROP DATABASE`를 사용하여 데이터베이스를 삭제합니다. `RESTRICT` 옵션은 지원하지 않으며, 데이터베이스가 비어 있지 않아도 삭제됩니다.
- **PostgreSQL**: `DROP SCHEMA ... RESTRICT`를 사용하여 스키마를 삭제할 수 있으며, 스키마에 객체가 존재할 경우 삭제를 거부합니다.
스키마를 삭제할 때는 데이터와 객체가 손실될 수 있으므로 주의가 필요합니다.
'Data Analysis 데이터 분석 > SQL 통한 Database 관리' 카테고리의 다른 글
grant() (0) | 2024.08.18 |
---|---|
drop schema employee cascade (0) | 2024.08.18 |
percent_rank() (0) | 2024.08.18 |
dense_rank() , rank, row number 동일한 값 있을 경우 예시 (0) | 2024.08.18 |
오라클 데이터베이스 (0) | 2024.08.18 |