728x90
<데이터베이스 언어>
2. DML (데이터 조작어): 데이터베이스 조작 (삽입, 삭제, 수정, 검색)
SQL 명령어 | 기능 |
INSERT | 삽입 (릴레이션에 데이터 삽입) |
UPDATE | 수정 (릴레이션에 저장된 데이터 수정) |
DELETE | 삭제 (릴레이션에 저장된 데이터 삭제) |
SELECT | 검색 (릴레이션에 저장된 데이터 검색) |
3. DCL (데이터 제어어): 데이터베이스 관리 (데이터베이스 보안, 데이터베이스 보호)
SQL 명령어 | 기능 |
GRANT | 권한 설정 |
REVOKE | 권한 해제 |
<DCL 실습>
show DATABASE;
use mysql;
SELECT * FROM `user`;
<결과>
<사용자 생성>
- % <= 아무데서나 접속 가능하지만, localhost에서는 접속 불가
- CREATE USER 'user_1'@'%' IDENTIFIED BY 'abcdefg';
- CREATE USER 'user_1'@'localhost' IDENTIFIED BY 'abcdefg';
- CREATE USER 'user_1'@'182.31.0.2' IDENTIFIED BY 'abcdefg';
<계정 생성>
CREATE USER 'user_1'@'%' IDENTIFIED BY 'abcdefg';
SELECT * FROM `user`;
<결과>
<계정 삭제>
DROP USER 'user_1'@'%';
<결과>
<권한 설정> 터미널에서 진행
** 터미널로 mysql 접속
[centos@localhost ~]$ mysql -uroot -p --host=localhost --port=3306
mysql> grant select on w3backup.cust to 'user_1'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> grant update, delete on w3backup.cust to 'user_1'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on w3backup.* to 'user_1'@'%';
Query OK, 0 rows affected (0.00 sec)
<결과>
mysql> show grants for 'user_1'@'%';
+-------------------------------------------------------------------+
| Grants for user_1@% |
+-------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `user_1`@`%` |
| GRANT ALL PRIVILEGES ON `w3backup`.* TO `user_1`@`%` |
| GRANT SELECT, UPDATE, DELETE ON `w3backup`.`cust` TO `user_1`@`%` |
+-------------------------------------------------------------------+
3 rows in set (0.00 sec)
<파이썬 서버에서 MySQL 서버 접속해서 DB 관리>
# Mysql server IP ADDRESS: 192.168.0.34
# Mysql server user IP / PW: user_1 / abcdefg, root/root
# Mysql server Database: w3backup
# sudo pip3 install pymysql
# sudo pip3 install cryptography
import pymysql
conection = pymysql.connect(host='10.0.2.15', port=3306,
user='root', password='root',
db='w3backup', charset='utf8mb4') # DB 접속
cursor = conection.cursor() # SQL 실행 준비
sql = 'SELECT * FROM user'
cursor.execute(sql) # SQL 실행 (데이터 준비)
result = cursor.fetchone() # SQL 실행 결과 중 한 건만 리턴
print(type(result), result[1])
result=cursor.fetchall() # SQL 실행 결과 전부 리턴
print(result)
result=cursor.fetchmany(3)
print(result)
for val in cursor.fetchall():
print(val)
cursor = conection.cursor(pymysql.cursors.DictCursor)
cursor.execute(sql)
result=cursor.fetchall()
for val in result:
print(val['CustomerName'])
conection.close()
'프로그래밍 언어 > SQL' 카테고리의 다른 글
데이터베이스 언어 정리 (DDL / DML / DCL) (1) - DDL 편 (0) | 2024.02.03 |
---|---|
SQL 함수 간단 실습 :: 서브쿼리 (비상관 커리, 상관 커리) (0) | 2024.01.26 |
SQL 함수 간단 실습 :: JOIN (내부 조인, 외부 조인, 셀프 조인) (0) | 2024.01.25 |
SQL 함수 간단 실습 :: 시간/날짜 관련 함수 (0) | 2024.01.24 |
SQL 함수 간단 실습 :: 문자열 관련 함수 (0) | 2024.01.23 |