select concat('concat',' ','test') #실행결과 concat test
select concat('이름:', name) from celeb;

select name as '이름' from celeb;

select name as '이름', agency as '소속사' from celeb;

select concat (name,':',job_title) as profile from celeb;

select s.season, s.episode, c.name, c.job_title from celeb c, snl_show as s where c.name = s.host;

검색한 결과의 중복 제거
연예인의 소속사 종류를 조회해라(소속사의 종류만 추출해야하므로 중복결과는 제외하고 조회해야하니 distinct가 사용되었다)
select distinct agency from celeb;

검색결과를 정렬된 순으로 주어진 숫자만큼만 조회
select문의 가장 마지막에 위치하여 조회
나이가 가장 적은 연예인 4명을 검색
select * from celeb order by age limit 4;

Document % mkdir sql_ws Document % cd sql_ws sql_ws
sql_ws % code . #VSCode 실행
1) 첫번째 SQL file 실행방법
비주얼코드에서 test01.sql 파일을 하나 만듭니다.
% mysql -u root -p zerobase #만들어놓은 zerobase 데이터베이스에 접속 mysql> source test01.sql # SQL file 실행
2) 두번째 SQL file 실행방법
비주얼코드에서 test02.sql 파일을 하나 만듭니다.
% mysql -u root -p zerobase < test02.sql #zerobase 데이터베이스에 접속하면서 test02라는 SQL file을 실행합니다.
mysqldump -u root -p zerobase > zerobase.sql
만들어놓았던 제로베이스 데이터베이스의 내용을 zerobase.sql로 저장한다는 의미이다. 실행 후 . code 를 입력하여 비주얼코드에서 위 zerobase.sql 파일이 만들어져있으면 정상적으로 백업이 된것이다.
pip install mysql-connector-python
위 코드를 실행하여 커넥터를 설치해줍니다.
import mysql.connector
설치 후 커넥터를 실행 시켜줍니다. 아무문제없이 작동이된다면 정상적으로 설치가 된 것입니다.
local = mysql.connector.connect( host ="localhost", user ="root", password ="패스워드입력", database = "zerobase" )
위에서 zerobase라는 데이터베이스로 연결하려면 database 작성을 하면된다.
remote = mysql.connector.connect( host="엔드포인트입력", user ="사용자입력", password="패스워드입력" )
local.close() remote.close()
remote = mysql.connector.connect( host="엔드포인트입력", port=포트입력, user="사용자입력", password="패스워드입력", database="zerobase" ) cur = remote.cursor() cur.execute("create table sql_file (id int, filename varchar(16))") remote.close()
다음 코드를 쳐서 서버에 들어가 해당 테이블(sql_file)이 만들어졌는지 확인해보자.
%mysql -h "database-1.cpjnll2kjl1j.us-east2.rds.amazonaws.com" -P 3306 -u admin -p use zerobase; show tables;

remote = mysql.connector.connect( host="엔드포인트입력", port=포트입력, user="사용자입력", password="패스워드입력", database="zerobase" ) cur = remote.cursor() cur.execute("drop table sql_file") remote.close()
cursor 실행문에 drop table 코드를 쳐서 sql_file을 지웠다.

remote = mysql.connector.connect( host="엔드포인트입력", port=포트입력, user="사용자입력", password="패스워드입력", database="zerobase" cur = remote.cursor() sql = open("test03.sql").read() cur.execute(sql) remote.close()


remote = mysql.connector.connect( host="엔드포인트입력", port=포트입력, user="사용자입력", password="패스워드입력", database="zerobase" cur = remote.cursor() sql = open("test04.sql").read() for result_iterator in cur.execute(sql, multi=True): if result_iterator.with_rows: print(result_iterator.fetchall()) else: print(result_iterator.statement) remote.commit() remote.close()

위에서 쿼리를 실행한 다음에 결과값이 rows을 포함하고 있으면 fetchall을 통해서 실행을 시켰었다. 실행하는 쿼리가 아니라 조회하는 select문을 실행한 경우에는 데이터를 가지고 오는데 그데이터가 있는 경우에는 fetchall을 써서 위의 코드처럼 변수에 담을 수 있다.
sql_file 테이블을 조회(읽어올 데이터 양이 많은 경우 buffered=True)
1) 환경설정
import mysql.connector
2) 서버설정
remote = mysql.connector.connect( host="엔드포인트입력", port=포트입력, user="사용자입력", password="패스워드입력", database="zerobase" );
3) 커서설정
cur = remote.cursor(buffered=True) cur.execute("select * from sql_file") result = cur.fetchall() result #실행결과 [(1, 'test01.sql'), (2, 'test02.sql'), (3, 'test03.sql'), (4, 'test04.sql')]
4) 서버닫기
remote.close()
5) 위 검색결과를 pandas 로 읽기(참고)
import pandas as pd df = pd.DataFrame(result) df

1) 환경설정
import mysql.connector
2) csv데이터 판다스로 열기
df = pd.read_csv("police_station.csv") df.tail()

3) zerobase(데이터베이스)에 연결
import mysql.connector conn = mysql.connector.connect( host="엔드포인트입력", port=포트입력, user="사용자입력", password="패스워드입력", database="zerobase" );
4) cursor 만들기
cursor = conn.cursor(buffered=True)
5) insert 문 만들기
sql = "insert into police_station values (%s,%s)"
6) 데이터 입력
for i, row in df.iterrows(): cursor.execute(sql, tuple(row)) conn.commit()
참고로 tuple(row) 형태를 살펴보면 아래와 같다.

7) 결과확인
cursor.execute("select * from police_station") result = cursor.fetchall() result
8) 검색결과를 pandas로 읽기
df = pd.DataFrame(result) df.tail()
