목록Database (15)
꾸준하고 즐겁게

이전 글에 이어지는 내용이다. Python에서 MySQL 데이터 가져올 때 변수처리하는 법 이번엔 고양이 이름을 param이라는 변수에 따로 저장했다. 이 부분은 따로 설명할 건 없고, 이전 것과 비교를 해보는 것이 좋겠다. 먼저 하드코딩했을 때다. 파라미터를 변수 처리했을 때다. if connection.is_connected() : cursor = connection.cursor(dictionary= True) query = """insert into cats (name, age) values ("정민근", 2);""" cursor.execute(query) connection.commit() if connection.is_connected() : cursor = connection.cursor(di..

지난 글에서 일부를 바꾼 후 이어서 작성하겠다. 지난 글에 이어 다시 한 번 쓰지만, connection 가져오는 코드는 보안상의 문제로 config 파일로 따로 만들어 관리하고 사용한다. 이 글에서는 순전히 설명상의 편의를 위해 그렇게 작성되었다. 이번 글에서 사용할 코드는 다음과 같다. query라는 변수에 들어갈 문자열은 진행하면서 작성해보겠다. import mysql.connector from mysql.connector import Error def main(): try : connection = mysql.connector.connect( host = 'database-1.abcedfghijklmophihi.us-east-2.rds.amazonaws.com', database = 'mydb',..

전용 DB 유저 생성하기 create user 'wj9183' @'%' identified by 'hi1234'; grant all on mydb.* to 'wj9183' @'%'; 먼저, 모든 권한을 가진 admin 계정으로 Workbench에 접속한다. username과 password를 정해, 첫 쿼리문과 같이 입력하고 실행해준다. 작성자는 username은 wj9183으로 했고, password는 hi1234로 했다. 그리고 두 번째 쿼리에서, mydb이라는 schema에 한해 모든 걸 할 수 있는 권한을 wj9183에게 준 것이다. 이렇게 특정 db만 사용할 수 있는 계정을 만들어서 통신하게 할 수 있다. 어떤 조작만 할 수 있는지 다 정해줄 수 있다. 데이터 인서트를 못하게 한다거나 셀렉트만 ..

라이브러리 설치하기 $ pip install mysql-connector-python 실제 입력하는 모습과 명령어다. 실제 입력하는 이미지의 경우 저 가상환경에 이미 설치가 되어있었기 때문에 저렇게 나온 것이다. 라이브러리 import 하기 주석에 다 달아뒀다. 첫줄이 기본적으로 라이브러리를 사용할 때 필요하다. 커넥션을 가져오고, 커서를 가져오는 등의 기능을 할 수 있다. 두번째 줄은 데이터베이스 관련된 에러를 예외처리를 할 때 필요하다. 사용에 대한 예는 다음 글에서 작성해보겠다.

select concat_ws(' - ', '010', '0000', '1234') 이걸 이렇게 입력하고 실행하면, 이렇게 보여준다. 숫자로 쓰니까 자릿수가 줄어들어서 문자열로 입력했다. 더 설명할 게 없다.

MySQL의 between select * from books where released_year between 2004 and 2015; 단어를 해석하면 해석이 될 정도로 간단하니, 간단한 설명만 덧붙이겠다. books라는 테이블이 있다. 전체 테이블을 다 보려고 하는데, 조건이 있다. released_year라는 컬럼에서 2004년과 2015년 사이로 표기된 자료들만 가져온다. 이때 2004년과 2015년을 포함한다.(이하, 이상) not between 위의 between에 해당되지 않는 년도의 책 데이터만 가져온다. select * from books where released_year not between 2004 and 2015;

substring 함수 파라미터로 문자열과, 시작하는 지점, 끝나는 지점을 받는다. 시작점 이후로 데이터를 전부 억세스할 경우 끝나는 점은 입력하지 않아도 된다. 파이썬에서의 인덱싱과는 약간 다르다. 파이썬에서는 첫번째 지점이 0으로 시작하는 반면, SQL에서는 1로 시작한다. 파이썬처럼 끝나는 지점 기준이 미만이 아니라서, 끝나는 지점에 +1을 해줄 필요도 없다. select substring('Hello World', 1, 4); >>> Hell replace 함수 파라미터로 문자열, 문자열에서 대체될 문자(혹은 문자열), 대체할 문자(혹은 열)을 받는다. 욕설 등을 검열할 때 사용할 수 있다 select replace('What the hell', 'hell', '***'); >>> What the..

이번에도 이전 글의 그 테이블이 맞다. 어떨 때 사용할까? 100개가 조금 넘는 데이터가 들어있는 테이블이 있다. 여기서 username에 hi라는 문자열을 포함하는 username은 어떤 게 있는지 확인하고 싶다고 가정하자. 그럴 때 사용할 수 있는 게 like다. 사용 예 select * from users where username like 'hi'; 사용하는 방법은 이렇다. 하지만 hi라는 문자열을 포함하는 username이 없다. 이렇게 사용할 경우, username 컬럼에 정말 찾는 문자열 그대로 hi가 있어야한다. hi1도 안되고, 1hi도 안된다. hi여야만 한다. 찾고자하는 문자열을 끝에서 끝까지 완벽하게 알고 있는 게 아니라면, 이럴 땐 와일드 카드를 사용하면 된다. select * f..

이전 글의 그 테이블이 맞다. MySQL의 Limit users라는 테이블에 100개가 넘는 데이터가 있다. 나는 여기서 가장 처음 나오는 5개만 보고 싶다. 그럴땐 Limit을 이용한 쿼리를 작성하면 된다. select * from users limit 5; 위의 쿼리를 실행하니, 위와 같은 결과를 볼 수 있다. 만약 가장 최근에 등록된 5명의 유저의 username만 보고 싶다면, 이전 글의 order by와 limit을 같이 사용한 쿼리를 작성하면 된다. select * from users order by created_at desc limit 5; 가장 최근에 등록된 유저의 username과 등록된 날짜를 확인할 수 있게 되었다. MySQL의 offset limit이 처음부터 몇 개까지의 데이터를..

MySQL 오름차순 정렬하기 다음과 같은 테이블에서 이름 알파벳 순으로 정렬하는 쿼리를 작성해보겠다. select * from users order by username; users라는 테이블에서 모든 컬럼의 데이터를 가져오는데, username을 기준으로 정렬하라는 의미이다. MySQL 내림차순 정렬하기 order by 컬럼명 뒤에 asc 혹은 desc를 붙일 수 있는데, asc의 경우 기본값인 오름차순 정렬이 된다. 생략해도 되는 것이다. desc를 입력할 경우, 이전과 반대로 내림차순 정렬이 된다. 당연히 이 경우엔 생략을 하면 안된다. MySQL 여러 컬럼을 기준으로 정렬하기 두 컬럼을 기준으로 정렬해야하는 경우도 있다. 그럴 때는 이런 식으로 쿼리를 작성한다. username으로 오름차순 정렬된..