# 0812 HW
[TOC]
## 在 Maven 專案中要使用 MariaDB 的步驟
:::danger
* **Prerequisites**
* A MariaDB / MySQL server running on localhost using the default port 3306
* Java version >= 8
* Maven
:::
:::info
1. 創建 maven 專案( Create Maven Project )
* 使用 Maven 創建一個簡單的 Java 專案:
```
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
```
:::
:::info
2. pom.xml 設定 MariaDB Java 驅動( Get MariaDB Java Driver )
```
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.0.7</version>
</dependency>
```
:::
:::info
3. 設定 MariaDB 連線( Connection )
* 基本的 maven 原型App.java在src/main/java/com/mycompany/app. 使用以下內容更新文件App.java
```
package com.mycompany.app;
import java.sql.*;
public class App {
public static void main( String[] args ) throws SQLException {
//create connection for a server installed in localhost, with a user "root" with no password
try (Connection conn = DriverManager.getConnection("jdbc:mariadb://localhost/", "root", null)) {
// create a Statement
try (Statement stmt = conn.createStatement()) {
//execute query
try (ResultSet rs = stmt.executeQuery("SELECT 'Hello World!'")) {
//position result to first
rs.first();
System.out.println(rs.getString(1)); //result is "Hello World!"
}
}
}
}
}
```
:::
:::info
4. Compile project:
```
mvn install
```
:::
流程參考 [MariaDB 文件](https://mariadb.com/kb/en/java-connector-using-maven/)
POM.XML 設定 [MVN Repositoey](https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client/3.0.7)
# 請使用原生 SQL 語法回答以下問題
## 新增一個名為 training 的 DB
```sql=
CREATE DATABASE training;
```
## 新增一張名為 user 的 table,有 id、name、age 欄位
```sql=
CREATE TABLE user(
id INT NOT NULL PRIMARY KEY AUTO_INCREMEN,
name VARCHAR(128) NOT NULL,
age INT NOT NULL
);
```
## 查詢全部 user
```sql=
SELECT * FROM user;
```
## 查詢 name 是 Bill,age 是 17 歲的 user
```sql=
SELECT name, age
FROM User
WHERE name = "Bill"
AND age = 17;
```
## 新增三個 user
### name 是 Brian,age 是 13 歲
### name 是 Brian,age 是 20 歲
### name 是 Brian,age 是 50 歲
```sql=
INSERT INTO (name, age) VALUES ('Brian', 13);
INSERT INTO (name, age) VALUES ('Brian', 20);
INSERT INTO (name, age) VALUES ('Brian', 50);
```
## 將 name 是 Brian,age 是 50 歲的 user 的 age 改完 60 歲
```sql=
UPDATE user
SET age = 60
WHERE name ='Brian'
AND age = 50;
```
## 刪除 name 是 Brian,age 是 60 歲的 user
```sql=
DELETE FROM user
WHERE name='Brain'
AND age = 60;
```
## 計算出有幾個 name 是 Brian 的 user
```sql=
SELECT COUNT(*) FROM user
WHERE name = 'Brian' ;
```
# 將 input 元素轉成 output 元素後 return
* input : petList = [“2. dog”, “”, “3. cat”, " ", “1. rabbit”]
* output : petList = ["1.rabbits, “2.dogs”, “3.cats”]
* 使用一般方法
```java=
Class Animal{
public String sortArrayByPetList(String[] pet) {
List<String> petList = new ArrayList();
//移除空字串
prtList.removeAll(Arrays.pet("", null));
//排序第一個字母,字母為數字,所以自然可以比大小
Collections.sort(petList)
return petList.toArray(new String[petList.size()]);
}
}
```
* 使用 Stream 方法
```java=
Class Animal{
public String[] sortArrayByPetList(String[] pet) {
petList = strings.stream().filter(string -> !string
.isEmpty())// 獲取非空字串
.sorted().collect(Collectors.petList())//排序
retrun petList;
}
}
```