2021.05.29 MYSQL
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에선 첫번째글자 INDEX가 1
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 |
+-------------------+
Author And Source
이 문제에 관하여(2021.05.29 MYSQL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gjtkdan7777/2021.05.29-MYSQL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)