2021.05.29 MYSQL

허상무·2021년 5월 29일
0

sql파일을 실행시키는법

mysql -u 유저네임 -p 사용할데이터베이스 < 불러올sql파일이름;

이제

mysql -u 유저네임 -p 사용할데이터베이스;

를 쓴다음

show tables;

로 불러온 파일로 만든 table을 확인한다
그다음 테이블의 구조를 보고싶으면

desc 테이블이름;

SELECT 구문 예제

SELECT * FROM 테이블명;

'*' 대신에 보고싶은 컬럼만 볼수있음

SELECT 컬럼, 컬럼 FROM 컬럼을 포함하는 테이블명 

보고싶은 컬럼의 이름을 지정해줄수 있음

as 생략할 수 있음

mysql> select deptno 부서번호, name 부서명 from department;

+--------------+------------+
| 부서번호 | 부서명 |
+--------------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------------+------------+

CONCAT() 함수

alias 사용시 공백이 있으면 as 를 붙여줘야함 공백이 한번더 나오면 FROM 이 나올것으로 기대함

mysql> select concat(empno,'-',deptno) as '사번-부서번호' from employee;

+---------------------+
| 사번-부서번호 |
+---------------------+
| 7782-10 |
| 7839-10 |
| 7934-10 |
| 7369-20 |
| 7566-20 |
| 7788-20 |
| 7876-20 |
| 7902-20 |
| 7499-30 |
| 7521-30 |
| 7654-30 |
| 7698-30 |
| 7844-30 |
| 7900-30 |
+---------------------+

DISTINCT

mysql> select deptno from employee;

+--------+
| deptno |
+--------+
| 10 |
| 10 |
| 10 |
| 20 |
| 20 |
| 20 |
| 20 |
| 20 |
| 30 |
| 30 |
| 30 |
| 30 |
| 30 |
| 30 |
+--------+

mysql> select distinct deptno from employee;

+--------+
| deptno |
+--------+
| 10 |
| 20 |
| 30 |
+--------+

정렬하기 ORDER BY

mysql> select empno, name from employee order by empno asc;
오름차순

+-------+--------+
| empno | name |
+-------+--------+
| 7369 | SMITH |
| 7499 | ALLEN |
| 7521 | WARD |
| 7566 | JONES |
| 7654 | MARTIN |
| 7698 | BLAKE |
| 7782 | CLARK |
| 7788 | SCOTT |
| 7839 | KING |
| 7844 | TURNER |
| 7876 | ADAMS |
| 7900 | JAMES |
| 7902 | FORD |
| 7934 | MILLER |
+-------+--------+
내림차순은 asc 자리에 desc를 넣어준다

WHERE

SELECT * FROM employee WHERE empno = 7934;

IN 구문

8버전은 in 구문이 실행이 되지 않아 이 부분에서 5.7버전으로 다운그레이드 함
mysql> select * from employee where deptno in (10,30);
+-------+--------+-----------+------+------------+---------+---------+--------+
| empno | name | job | boss | hiredate | salary | comm | deptno |
+-------+--------+-----------+------+------------+---------+---------+--------+
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 |
| 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 |
| 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 30 |
+-------+--------+-----------+------+------------+---------+---------+--------+
9 rows in set (0.00 sec)

논리연산

mysql> select * from employee where deptno = 10 and salary < 1500;

+-------+--------+-------+------+------------+---------+------+--------+
| empno | name | job | boss | hiredate | salary | comm | deptno |
+-------+--------+-------+------+------------+---------+------+--------+
| 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 |
+-------+--------+-------+------+------------+---------+------+--------+

LIKE

name이 A로 시작하는사람을 보여주는구문

mysql> select * from employee where name like 'A%';
name이 A로 시작하는 사람을 보여주는구문

mysql> select * from employee where name like '%A';
name이 A로 끝나는 사람을 보여주는구문

mysql> select * from employee where name like 'A%';
name에 A가 들어가는 사람을 보여주는구문

+-------+-------+----------+------+------------+---------+--------+--------+
| empno | name | job | boss | hiredate | salary | comm | deptno |
+-------+-------+----------+------+------------+---------+--------+--------+
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 |
| 7876 | ADAMS | CLERK | 7788 | 1983-01-12 | 1100.00 | NULL | 20 |
+-------+-------+----------+------+------------+---------+--------+--------+

UPPER, UCASE

SELECT UPPER('SEoul'), UCASE('seOUL');
대문자로 바꾸는 함수

오라클에선 구문 뒤에 FROM DUAL이라는 구문을 썻지만 mysql에선 생략가능

LCASE, LOWER

mysql> SELECT LOWER(name) from employee;
대문자를 소문자로 바꾸는 함수

+-------------+
| LOWER(name) |
+-------------+
| smith |
| allen |
| ward |
| jones |
| martin |
| blake |
| clark |
| scott |
| king |
| turner |
| adams |
| james |
| ford |
| miller |
+-------------+

SUBSTRING

mysql> SELECT SUBSTRING('Happy Day', 3,2);
mysql에선 첫번째글자 INDEX1

LPAD, RPAD

예제 1

mysql> SELECT LPAD('hi',5,'?'),RPAD('joe',7,'*');
나온 글자의 자릿수에 맞게 공백을 채워줌

+------------------+-------------------+
| LPAD('hi',5,'?') | RPAD('joe',7,'*') |
+------------------+-------------------+
| ???hi | joe**** |
+------------------+-------------------+

예제 2

mysql> select LPAD(name,10,'+') from employee;

+-------------------+
| LPAD(name,10,'+') |
+-------------------+
| +++++SMITH |
| +++++ALLEN |
| ++++++WARD |
| +++++JONES |
| ++++MARTIN |
| +++++BLAKE |
| +++++CLARK |
| +++++SCOTT |
| ++++++KING |
| ++++TURNER |
| +++++ADAMS |
| +++++JAMES |
| ++++++FORD |
| ++++MILLER |
+-------------------+

profile
극초보개발새발자

0개의 댓글