목록Database/MySQL (11)
꾸준하고 즐겁게

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으로 오름차순 정렬된..

말투가 다르지만 작성자 본인이 작성한 게 맞다. MySQL Workbench를 다운받는다. 이 글에서는 0.8.0.23 community 버전을 다운로드 받았다. 뭐 설치하는 거 번거롭다. 타이핑이 너무 싫었던 날.

MySQL Workbench에 접속해준다. 그리고 다음 쿼리를 입력한다. create user '새로 만들 유저 아이디' @'%' identified by '비밀번호'; grant all on 데이터베이스 이름.* to '새로 만들 유저 아이디' @'%'; 이렇게 입력하고 각각 실행시켜준다. 우리가 원래 MySQL 워크벤치에서 쓰던 계정 말고 새로운 계정을 만든 것이다. 서버에 직접적으로 조작을 할 순 없으므로, 리모트해서 억세스할 수 있게 하는 것이다. 2번째 줄 명령어로 저 아이디에 모든 권한을 준다. 저 아이디로 제 데이터베이스에 연결하면, 제 데이터베이스에서 셀렉트든 억세스든 딜리트든 전부 다 할수 있다. 단, 정해준 데이터베이스의 모든 테이블에서만 가능하다. 그리고 워크벤치 홈으로 나온다. 이제..

create table test.books ( book_id int not null auto_increment, title varchar(100), author_fname varchar(100), author_lname varchar(100), released_year int, stock_quantity int, pages int, primary key(book_id) ); select * from books; 테이블을 준비해준다. select concat('hello','...', 'welcome'); 하지만 예제는 상관없는 걸로 들겠다. 실행해보면 이런 결과를 볼 수 있다. 그런데 컬럼 이름이 너무 지저분하다. 이제 컬럼 이름도 바꿔본다. select concat('hello','...', 'welc..

insert into test (student_name, student_age, student_email_adress) values ('블로그 주인', '29', 'wj9183@daum.com'), ('블로그 방문자', '25', 'visitor@gmail.com'); 이전 글에 이어 작성한다. 2번째줄까지만 쓰고 세미콜론으로 마무리지어도 되고, 계속해서 괄호를 이용해 정보를 더 입력할 수도 있다. 실행한 뒤, 테이블에 우클릭으로 select rows - limit 1000 버튼을 눌러보면, 이렇게 입력되어 있는 걸 확인할 수 있다.