
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
function solution(numbers) {
var answer = [];
for (i = 0; i < numbers.length; i++) {
for (j = i + 1; j < numbers.length; j++) {
ver sum = numbers[i] + numbers[j];
if( answer.indexOf(sum) === -1) {
answer.push(sum);
}
}
}
answer.sort((a, b) => a - b);
return answer;
}
numbers의 값을 순서대로 더해주고, indexOf를 이용해 answer 배열 안에 sum의 내용이 없을때(중복이 아닐 때) sum값을 answer에 넣어줌.
위의 과정이 모두 완료된 후(반복문이 끝난 후) answer을 오름차순으로 정렬해주고 return.
각 데이터를 테이블이라는 표형태의 구조에 저장.
여러 정보를 저장, 테이블간의 연관 관계를 설정해, 여러 테이블에 분산된 데이터를 서로 연결하여 관리 가능.
RDB는 테이블이라는 개념이 존재 => 테이블간의 연관 관계로 더 복잡한 쿼리를 작성할 수 있음.
더욱 복잡한 비즈니스 로직과 정형화된 데이터를 체계적으로 관리할 수 있어 안전한 서버 환경 구성에 좋음.
=> 보안이 중요한 기관이나 은행같은 안전성을 중시하는 곳에서 사용
NoSQL은 유연한 데이터 구조를 가지기 때문에 저장과 읽기작업이 빠르고 복잡한 비즈리늣 로직없이 주로 데이터 읽기와 쓰기에 중점을 둔 서버에서 주로 사용
=> 빅데이터 환경, 단순 페이지뷰가 많은 어플리케이션 등
데이터를 정의할 때 사용하는 언어, 테이블이나 데이터베이스를 생성, 수정, 삭제와 같은 작업에 사용.
- CREATE - DATABASE, TABLE, VIEW, INDEX 등을 생성할 때 사용합니다.
CREATE DATABASE 데이터베이스명; CREATE TABLE 테이블명 { 컬럼명 컬럼속성 }
- DROP - DATABASE, TABLE, VIEW, INDEX 등을 삭제할 때 사용합니다.
DROP DATABASE 데이터베이스명; DROP TABLE 테이블명;
- ALTER - DATABASE, TABLE 등의 속성을 변경할 때 사용합니다.
ALTER DATABASE 데이터베이스명 변경조건; ALTER TABLE 테이블명 ADD 변경조건; -- 테이블에 새로운 컬럼을 추가합니다. ALTER TABLE 테이블명 DROP 변경조건; -- 테이블에서 컬럼을 삭제합니다. ALTER TABLE 테이블명 MODIFY 변경조건; -- 테이블의 컬럼을 수정합니다. ALTER TABLE 테이블명 RENAME 변경조건; -- 테이블의 이름을 변경합니다.
데이터베이스에서 데이터를 조작할 때 사용. 저장, 삭제, 수정, 조회와 같은 행위를 함.
- SELECT - 일반적으로 TABLE에서 원하는 데이터들을 조회할 때 사용합니다.
DB를 관리하면서 가장 많이 사용하는 명령어 이기도 합니다.SELECT 컬럼목록 FROM 테이블명 [WHERE 조건];
- INSERT - TABLE에 새로운 데이터들을 삽입할 때 사용합니다.
INSERT INTo 테이블명 (컬럼목록) VALUES (값목록);
- DELETE - TABLE에서 특정한 조건에 맞는 데이터들을 삭제할 때 사용합니다.
WHERE 조건이 없다면, 모든 데이터가 삭제됩니다.DELETE FROM 테이블명 [WHERE 조건];
- UPDATE - TABLE에서 특정한 조건에 맞는 데이터들을 수정할 때 사용합니다.
WHERE 조건이 없다면, 모든 데이터가 수정됩니다.UPDATE 테이블명 SET 컬럼 = 값 [WHERE 조건];
데이터베이스에 대한 권한과 관련된 문법으로 특정 유저가 DB에 접근할 수 있는 권한을 설정할 때 사용.
- GRANT - 데이터베이스의 특정한 유저에게 사용 권한을 부여할 때 사용합니다.
권한에는SELECT,INSERT,UPDATE,DELETE등 다양한 종류가 존재합니다.GRANT [권한] ON 객체명 TO 사용자;
- REVOKE - 데이터베이스의 특정한 유저에게 사용 권한을 취소할 때 사용합니다.
REVOKE [권한] ON 객체명 FROM 사용자;
데이터베이스 내의 트랜잭션을 관리하는 문법, 트랜잭션의 시작과 종료, 롤백을 수행할 때 사용.
- COMMIT - 데이터베이스의 작업이 정상적으로 완료되었음을 관리자에게 알려줄 때 사용합니다.
START TRANSACTION; ... COMMIT;
- ROLLBACK - 데이터베이스의 작업이 비정상적으로 완료되었음을 관리자에게 알려줄 때 사용합니다.
작업 중 오류가 발생한 경우 이를 취소하고, 이전 상태로 되돌릴 때 사용합니다.START TRANSACTION; ... ROLLBACK;
각 컬럼간의 제한사항을 관리하고, 조건을 위반하는 데이터를 방지해 데이터베이스의 무결성(Integrity)을 보장하는 규칙.
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
- 사용자(Users)테이블
1. userId 컬럼을 가지고, 기본키로 설정.
2. 이름(name) 컬럼을 가짐.
CREATE TABLE Users
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255)
);
- 사용자(
Users) 테이블
1.userId컬럼을 가지고, 기본키로 설정.
2. 이름(name) 컬럼을 가짐.- 이외 요구사항
1. 사용자 테이블의 이름 컬럼은NULL값을 허용 X.
CREATE TABLE Users
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL
);
- 사용자(
Users) 테이블
1.userId컬럼을 가지고, 기본키로 설정합니다.
2. 이름(name) 컬럼을 가집니다.- 이외 요구사항
1. 사용자 테이블의 이름 컬럼은NULL을 허용하지 않습니다.
2. 사용자 테이블의 이름 컬럼은 중복된 값을 허용하지 않습니다.
CREATE TABLE Users
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL UNIQUE
);
CREATE TABLE 문을 사용해 테이블을 생성과 동시에 정의.
- 정원(
Garden) 테이블
1. 이름(name) 컬럼을 가집니다.
2. 주소(address) 컬럼을 가집니다.- 정원 식물(
GardenPlants) 테이블
1. 식물 이름(name) 컬럼을 가집니다.- 이외 요구사항
1. 정원 식물(GardenPlants)은 특정 정원(Garden)에 소속되어 있습니다.
2. 하나의 정원은 여러개의 정원 식물을 가질 수 있습니다.
CREATE TABLE Garden
(
gardenId INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
);
CREATE TABLE GardenPlants
(
gardenPlantsId INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gardenId INT(11) NOT NULL,
name VARCHAR(255) NOT NULL,
FOREIGN KEY (gardenId) REFERENCES Garden (gardenId)
);
- 참조하는 개체가 변경/삭제 될 경우 함께 변경/삭제됨. => 사용자가 삭제되면 그 사용자의 모든 주문 내역도 삭제.
FOREIGN KEY (userId) REFERENCES Users(userId) ON DELETE CASCADE ON UPDATE CASCADE;
- 참조하는 개체가 변경/삭제 될 경우 아무런 행위를 하지 않고 에러 발생. => 사용자가 삭제될때, 주문 내역이 아직 존재하면 삭제를 막음.
FOREIGN KEY (userId) REFERENCES Users(userId) ON DELETE NO ACTION ON UPDATE NO ACTION;
- 참조하는 개체가 변경/삭제 될 경우 현재 데이터를 NULL로 변경. => 사용자가 삭제되면 주문 내역의 사용자 ID는 NULL로 변경.
FOREIGN KEY (userId) REFERENCES Users(userId) ON DELETE SET NULL ON UPDATE SET NULL;
- 참조하는 개체가 변경/삭제 될 경우 현재 데이터를 기본 값으로 변경. => 사용자가 삭제되면 주문내역의 사용자 ID는 기본값으로 변경.
FOREIGN KEY (userId) REFERENCES Users(userId) ON DELETE SET DEFAULT ON UPDATE SET DEFAULT;