기초/SQL에 해당하는 글 16

  1. 13. 정규표현식 2021.05.10

    튜토리얼 링크 👉 regexone.com/lesson/introduction_abcs 정규식을 매치해볼 수 있는 사이트 👉 regexr.com/ 이미 풀었던 문제로 다시! /*문자열에서 특정 패턴을 찾아서 규칙으로 작성*/ SELECT DISTINCT city FROM station /*REGular EXPression, aeiou중 하나로 시작(^)하면 그 이후에는 뭐가 와도(.*) 상관 없다.*/ WHERE city REGEXP '^[aeiou].*' 연습문제 1 SELECT DISTINCT city FROM station /*처음에는 뭐가 와도(.*) 상관 없지만 aeiou중 하나로 끝($)나야 한다.*/ WHERE city REGEXP '.*[aeiou]$' 연습문제 2 SELECT DISTINC..


  2. 12-1. 윈도우 함수 문제풀이 2021.05.09

    연습문제 1 SELECT DISTINCT l.Num AS ConescutiveNums FROM ( SELECT Num ,LEAD(Num,1) OVER (ORDER BY Id) AS "next" ,LEAD(Num,2) OVER (ORDER BY Id) AS afternext FROM logs ) AS l WHERE l.Num = l."next" AND l.Num = l.afternext LAG로도 풀 수 있음. 스스로 해보기! 연습문제 2 SELECT ms.department AS Department ,ms.name AS Employee ,ms.salary FROM (SELECT d.Name department) ,e.Name name ,e.Salary salary ,max(Salary) OVER (PAR..


  3. 12. 윈도우 함수 2021.05.06

    자세한 내용은 아래 링크 참고 👉 dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html A window function performs an aggregate-like operation on a set of query rows. GROUP BY 함수와 비슷하게 SUM, COUNT, MAX, MIN, AVG 등을 그룹별로 구해볼 수 있는 함수. GROUP BY의 대부분의 aggregation 함수를 다 사용할 수 있다고 보면 된다. 하지만 GROUP BY와는 다르다. 어떤 점이? By contrast, window operations do not collapse groups of query rows to a single output row. Instea..


  4. 11-1. 서브쿼리 추가 문제풀이 2021.04.29

    연습문제 1 >SELECT CASE WHEN g.grade > 7 THEN s.name ELSE NULL END ,g.grade ,s.marks FROM students s JOIN grades g ON s.marks BETWEEN g.min_mark AND g.max_mark ORDER BY g.grade DESC, s.name ASC JOIN절 내에 BETWEEN을 넣어서 풀어야 하는 문제! BETWEEN을 조인 조건으로 써야한다는 사실 외에는 주어진 게 없었는데 따로 검색하지도 않고 스스로 시행착오하면서 풀어 내서 매우 뿌듯하다!!! 연습문제 2 >SELECT DISTINCT L3.num AS ConsecutiveNums FROM logs L INNER JOIN logs L2 ON L.num = L..


  5. 11. 서브쿼리 2021.04.15

    서브쿼리(Subquery) : 쿼리 안에 들어가는 또 다른 쿼리. = 가상의 테이블을 만든다. SELECT(ex.누적 합cumulative sum), FROM(ex.기간별 평균 발생량), WHERE 등에서 사용이 가능하다. *(괄호) 안에 들어가야 하며 이름을 꼭 지어 주는 게 좋다. WHERE절의 = 뒤에 들어가는 서브쿼리는 결과물(Column과 Row)이 1개여야만 한다. IN을 쓰면 여러 개의 데이터가 나타나도 된다. 연습문제 1 여기서 다른 방법으로 풀었던 문제 연습문제 2 WHERE절 내의 서브쿼리에서 출력된 Salary가 어떤 DepartmentId의 Salary 인지 알 수 없기 때문에, 최대값으로 출력된 Salary와 같은 사람이라면 모두 출력되는 상황이라서! 틀린것! JOIN할 때 키를 ..


  6. 10. ERD, 데이터 타입 2021.04.14

    ERD(Entity Relationship Diagram) : 개체/엔티티(=테이블) 간의 관계를 나타내는 그림. Attribute : 각 엔티티가 가지는 특징이자 구조적으로 각 테이블의 컬럼명, 컬럼 정보=데이터타입 해당 컬럼이 무엇을 의미하는지 등을 나타낸다. PK(Primary Key) : 주 식별자. 하나의 엔티티에 PK는 하나씩만 존재할 수 있다. 해당 엔티티(테이블)을 대표하는 키. 각 레코드마다 유니크하게 가지는 key. FK(Foreign Key) : 외부 식별자. 다른 엔티티의 PK에서 참조될 수 있다. 두 가지 이상의 엔티티에서 그 사이의 관계를 정의하는 데 사용될 수 있다. 화살표는 어떤 엔티티와의 관계를 보여주지만, 몇 개의 데이터가 몇 개의 데이터와 대응되는지 나타내 준다. (1 ..


  7. 09. 조작어 / INSERT, UPDATE, DELETE 2021.04.08

    조작어(DML, Data Manifulation Language) : DB에 저장되어 있는 데이터를 조작하는 명령어 [INSERT : 새로운 데이터를 추가 ] 1. 테이블 전체에 데이터를 추가하기 format : INSERT INTO 테이블명 VALUES (VALUE_LIST) ; VALUE_LIST는 컬럼 순서대로 입력 아래와 같은 4개의 컬럼을 가지는 텅 빈 "Salary"라는 테이블이 있을 때, id name salary date INSERT INTO Salary VALUES ('1', 'A', '250', '2021-04-07') ; 를 실행하면! id name salary date 1 A 250 2021-04-07 2. 특정 컬럼을 지정하여 데이터를 추가하기 format : INSERT INTO..


  8. 08-1. 추가 연습문제 풀이 2021.01.31

    연습문제 1-1 연습문제 1-2 연습문제 1-3 연습문제 1-4 연습문제 2-1 연습문제 2-2 연습문제 2-3 *BETWEEN 38.7880 AND 137.2345 하려면 이상/이하여야 함. 연습문제 2-4 select * from submissions as S left join Hackers as H on H.hacker_id = S.hacker_id -- inner join Challenges as C on S.challenge_id = C.challenge_id -- inner join Difficulty as D on D.difficulty_level = C.difficulty_level -- where C.difficulty_level = D.difficulty_level and D.score..


  9. 08. 숫자와 문자열을 다루는 함수 2021.01.25

    ***웬만한 건 다 함수로 정해져 있으니 여기를 참고*** *** 테이블 내부 데이터 자체를 건드리는 게 아니다! *** select로 뽑아올 때 출력값을 어떻게 보일 지 정해주는 함수라는 것 유의*** [소수점 이하 숫자 다루기] ROUND(컬럼명/값, n) : 값을 소수점 이하 n자릿수로 반올림 -> ROUND(8.765,2) = 8.77 TRUNCATE(컬럼명/값,n) : 값을 소수점 이하 n자릿수까지만 남기고 나머지 버림 -> TRUNCATE(8.765,2) = 8.76 CEIL(컬럼명/값) : 값의 소수점 이하를 올림해 정수 반환 FLOOR(컬럼명/값) : 값의 소수점 이하를 버림해 정수 반환 [간단한 숫자 연산하기] POWER(컬럼명/값, n) = POW(컬럼명/값, n) : 값을 n제곱해서 ..


  10. 07. 데이터 결합하기(↕️) / UNION, UNION ALL 2021.01.04

    JOIN의 경우는 옆으로 데이터를 이어 붙이는 것이었다. 이번에는 위 아래로 붙이는 걸 해볼거임! 실습링크 UNION : 두 개의 테이블의 데이터를 중복값을 제외하여 결합한 테이블을 반환한다. (default) UNION ALL : 중복값을 포함하여 결합한 테이블을 반환한다. *SELECT와 달리 중복값을 제외하는 출력이 디폴트다. 예시 : Products테이블에서 Price가 5 이하거나 200 이상인 데이터만 출력하세요. > SELECT * FROM Products WHERE Price = 200 위와 같은 기능을 하는 코드를 구현하기 위해서는 . . . UNION을 아래와 같이 사용하면 5 이하인 테이블과 200 이상인 두 개의 테이블을 붙여준다. > SELECT * FROM Products WHE..