MySql - SELECT

27742 ワード

1. DESC


表バーの表示
DESC [테이블명] ;

2.SELECT-クエリーデータ

SELECT [컬럼명 또는 표현식] FROM [테이블명, 뷰명] ;
すべての列を表示
SELECT * FROM t_emp;
必要な列のみ表示
SELECT empno, ename FROM t_emp;
式出力の使用
SELECT  name, '교수님~배고파요' FROM t_professor;
カラム別名(alias)出力の使用
SELECT studno '학번',  name '이름' FROM t_student;
SELECT studno AS 학번, name AS 이름 FROM t_student;
SELECT studno "학번", name "이름" FROM t_student;
SELECT studno AS "학생 학번", name AS "학생 이름" FROM t_student;
[コード練習]
SELECT 'abcde';		-- CTRL + ENTER

SELECT '안녕하세요', '목요일입니다', 2022;

SELECT * FROM phonebook;

-- 숫자, 문자, 날짜시간

SELECT * FROM t_professor ;

SELECT name, POSITION, pay FROM t_professor;
SELECT  POSITION, pay, name, pay, pay FROM t_professor;

-- 컬럼 별칭(alias) 사용
SELECT POSITION 직위, pay 급여, name 이름
FROM t_professor;

SELECT * FROM t_student;

SELECT studno "학생 학번", name AS 이름, grade FROM t_student;


-- 연습1
-- t_emp 테이블을 사용하여 empno 를 '사원번호',
-- ename을 '사원명'
-- job을 '직업' 으로 별명을 설정하여 출력
SELECT empno 사원번호, ENAME 사원명, job AS 직업
FROM t_emp;

-- t_dept 테이블을 사용하여 deptno를 '부서#', dname을 '부서명', loc를 '위치' 로 별명을 설정하여 출력
SELECT deptno AS 부서, DNAME AS 부서명, loc AS 위치
FROM t_dept;

# 이것은 MySQL 에서
# 사용가능한 주석입니다

3.DISTINCT-重複値を消去して出力


4.CONCAT()関数:カラム接続


SELECT CONCAT(name, '-', position) FROM professor;

[コード練習]
-- DISTINCT
SELECT deptno FROM t_emp;
SELECT DISTINCT deptno FROM t_emp;


-- 문자열 연결 concat()
SELECT concat('hello', 'mysql');

SELECT concat(name, ' ', position) AS 교수님목록 FROM t_professor;

5.算術演算子


+, - , *,/
SELECT ename, sal, sal+100 FROM emp;
SELECT sal, sal+100/2, (sal+100)/2 FROM emp;

6.WHERE:必要条件のみ検索

SELECT [컬럼명 또는 표현식] FROM [테이블명, 뷰명]  WHERE [조건절] ;
[コード練習]
-- WHERE 조건절
SELECT * FROM t_emp;
SELECT ename, sal, deptno FROM t_emp WHERE deptno = 10;

SELECT ename, sal FROM t_emp WHERE sal > 4000;

SELECT ename, empno, sal FROM t_emp WHERE ename = 'SCOTT';
SELECT ename, empno, sal FROM t_emp WHERE ename = 'Scott';	-- MySQL 은 = 연산자로 문자열 비교시 대소문자 불문

7.複数演算子の使用



8.Likeとともに使用するワイルドカード%

  • %:
  • 文字数制限なし
  • :文字数はハングル文字でも任意の文字でも
  • ex)Like'%SAW%'<-真ん中にSAWが必要で、後ろに文字が必要です

    9. ORDER BY


    ソート出力
    SELECT [컬럼명 또는 표현식] 
    FROM [테이블명, 뷰명]  
    WHERE [조건절]  
    ORDER BY [정렬열] [ASC/DESC];
    [コード練習]
    # 산술연산자
    
    -- t_emp 테이블
    -- 직원이름(ename), 급여(sal), 급여10%인상분
    
    SELECT ename, sal, sal * 1.1 "10% 인상분"
    FROM t_emp;
    
    SELECT ename, empno, sal FROM t_emp WHERE ename = 'Scott';	-- MySQL 은 = 연산자로 문자열 비교시 대소문자 불문
    
    -- MySQL 에서 대소문자 구분하여 비교하기
    SELECT ename, empno, sal FROM t_emp WHERE BINARY(ename) = 'Scott';
    
    -- 학생 테이블(t_student) 에서
    -- 2,3학년(grade) 학생의 이름(name), 학년(grade) 출력
    
    SELECT name, grade FROM t_student
    WHERE grade = 2 OR grade = 3;
    
    SELECT name, grade FROM t_student
    WHERE grade IN (2, 3);
    
    SELECT name, grade FROM t_student
    WHERE grade NOT IN (1, 4);
    
    SELECT name, grade FROM t_student
    WHERE grade BETWEEN 2 AND 3;
    
    
    SELECT * FROM t_professor;
    
    -- 교수님의 이름, 급여, 보너스, 급여 + 보너스
    -- null 값과의 연산결과는 무.조.건 null 이다!!★
    SELECT name, pay, bonus, pay + bonus
    FROM t_professor;
    
    -- LIKE 와 같이 쓰는 와일드 카드 % , _
    -- % : 글자수 제한 없고 어떤 글자가 와도 됨
    -- _ : 글자수는 한글자가 반드시 와야 되고 어떤 글자 와도 좋음
    
    -- 교수님 중에서 김씨 성을 가진 교수님의 이름만 출력 (LIKE 사용)
    SELECT name FROM t_professor
    WHERE name LIKE '김%';
    
    -- 연습
    -- 직원 테이블(t_emp)에서 직원이름 (ename) 중에
    -- 두번째 글자가 'A'인 사람의 이름(ename)만 출력
    SELECT ename FROM t_emp 
    WHERE ename LIKE '_A%';
    
    -- ORDER BY
    SELECT name, grade, height, weight FROM t_student
    ORDER BY grade ASC, height DESC;
    
    
    -- 직원(t_emp)중 이름에 L 이 들어간 사람의 이름을 사전오름차순으로 출력하기
    SELECT ename FROM t_emp
    WHERE ename LIKE '%L%'
    ORDER BY ename ASC
    ;
    
    
    -- SELECT
    [実習]
    # p14, 15, 16
    
    SELECT name, height FROM t_student
    WHERE height >= 180;
    
    SELECT name, weight FROM t_student
    WHERE 60 <= weight AND weight <= 80;
    
    SELECT * FROM t_student
    WHERE deptno1 IN (101, 201);
    
    SELECT * FROM t_student
    WHERE name LIKE '김%';
    
     -- t_student 테이블에서 키(height)가 180 보다 크거나 같은 사람 이름, 키 출력
    SELECT name, height 
    FROM t_student 
    WHERE height >= 180;
    
    -- t_student 테이블에서 몸무게(weight)가 
    -- 60~80 인 사람의 이름과 체중 출력
    SELECT name, weight 
    FROM t_student 
    WHERE weight BETWEEN 60 AND 80;
    
    -- t_student 테이블에서는 제1전공이 101번 학과(deptno1) 학생과 201번 학과 학생들을 모두 출력하세요 (in 연산자 활용)
    SELECT name, deptno1 
    FROM t_student 
    WHERE 
    	deptno1 IN (101, 201);
    	-- deptno1 = 101 OR deptno1 = 201 (O)
    	-- deptno1 = 101 OR 201 (X)
    
    -- t_student 테이블에서 성이 ‘김’ 씨인 사람 조회
    -- LIKE 연산자 사용:  
    SELECT name 
    FROM t_student 
    WHERE name LIKE '김%';
    
    -- t_student 테이블에서 4학년 학생중에 키 가 170cm 이상인 사람의 
    -- '이름'과 '학년'과 '키'를 조회하세요
    SELECT name, grade, height 
    FROM t_student 
    WHERE grade = 4 AND height >= 170;
    
    -- t_student 테이블에서 1학년이거나 또는 몸무게가 80kg 이상인 학생들의 
    -- '이름'과 '키'와 '학년'과 '몸무게'를 출력하세요
    SELECT name, height, grade, weight 
    FROM t_student 
    WHERE grade = 1 OR weight >= 80;
    
    -- t_student 테이블을 사용해서 2학년 중에서 키가 180cm 보다 크면서 
    -- 몸무게가 70kg 보다 큰 학생들의 
    -- 이름과 학년과 키와 몸무게를 출력하세요
    SELECT name, grade, height, weight 
    FROM t_student 
    WHERE grade = 2 AND height > 180 AND weight > 70;
    
    -- t_student 테이블: 2학년 학생중에서 키가 180cm보다 크거나 
    -- 또는 몸무게가 70kg 보다 큰 학생들의 
    -- 이름과 학년과 키와 몸무게를 출력하세요
    SELECT name, grade, height, weight 
    FROM t_student 
    WHERE grade = 2 AND (height > 180 OR weight > 70);
    
    -- t_emp 테이블에서 고용일(hiredate)이 1992년 이전인 사람들의 
    -- 이름(ename) 과 고용일을 출력하세요
    SELECT ename, hiredate 
    FROM t_emp 
    WHERE hiredate < '1992-01-01';
    
    -- t_student 테이블: 1학년 학생의 이름과 생일과 키와 몸무게를 출력하세요, 
    -- 단 생일이 빠른 사람 순서대로 정렬하세요.
    SELECT name, birthday, height, weight 
    FROM t_student 
    WHERE grade = 1 
    ORDER BY birthday ASC;
    
    -- student 테이블: 1학년 학생의 이름과 키를 출력하세요, 
    -- 별명은 ‘이름’, ‘키’ 로 출력.  
    -- 단 이름은 오름차순으로 정렬하세요
    SELECT name 이름, height 키 
    FROM t_student 
    WHERE grade = 1 
    ORDER BY name ASC;
    
    SELECT name 이름, height 키, grade
    FROM t_student
    ORDER BY grade DESC, name ASC;  -- 정렬조건 복수개 가능
    
    -- t_emp2 직원 테이블에서
    -- 생일(birthday) 가 1980년대생인 사람들의 이름과 생일만 출력하세요
    -- 즉 1980/01/01 ~ 1989/12/31
    
    SELECT name, birthday
    FROM t_emp2
    WHERE '1980-01-01' <= birthday AND birthday < '1990-01-01';