[TIL] SQL, Database
What is SQL?
sql is structured query language
=構造化クエリ言語
What is Query?
=>必要なデータを取得するためにqueryをデータベースに送信します.
なぜデータベースが必要ですか?
=>サーバもクライアントもシャットダウン時にデータが消失する
=>目的のデータのみをインポートすることはできません.また、すべてのデータをインポートした後にサーバからフィルタリングする必要があります.(サーバ負荷が大きい)
データベース(データ専用サーバ)
基本クエリーコマンド
Select
Where
And, Or, Not
Order By
Insert Into
Null Values
Update
Delete
Count
Like
Wildcards
Aliases
Joins
Inner Join
Left Join
Right Join
Group By
データベース関連
SQL Create DB
SQL Drop DB
SQL Create Table
SQL Drop Table
SQL Alter Table
SQL Not Null
SQL Unique
SQL Primary Key
SQL Foreign Key
SQL Default
SQL Auto Increment
SQL Dates
データベース関連コマンド
データベースの作成
CREATE DATABASE 데이터베이스_이름;
データベースの使用USE 데이터베이스_이름;
テーブルの作成CREATE TABLE user (
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255),
email varchar(255)
);
フィールド名フィールドタイプその他の属性id数値プライマリキー、名前文字列(最大255文字)email文字列(最大255文字)を自動的に増加表情報の表示
DESCRIBE user;
mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
SQLコマンド
SELECT
-必要なコンテンツを検索するために使用しますが、単独で使用するよりも複数のコマンドの組み合わせを使用して、検索に必要なコンテンツのみをフィルタ処理します.
たとえば、
SELECT *(특성_1)
FROM DB01(테이블_이름)
「*」はワイルドカード(ワイルドカード)として使用されます.DB 01テーブルからすべての特性を出力します.
WHERE
-フィルタの役割
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 = "특정 값"
select * from user where name = 'duhyunkim'
テーブルuserからnameが「duhyunjim」のすべてのプロパティを出力します.`select * from user where name <> 'duhyunkim'`
テーブルuserからnameを出力するのは「duhyunjim」のすべてのプロパティではありません.<>代替!=使用しても同様の効果があります.(違いはわかりませんが)
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 > "특정 값"
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 <= "특정 값"
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 LIKE "%특정 문자열%"
INを使用して、SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 IN ("특정값_1", "특정값_2")
値がSELECT *
FROM 테이블_이름
WHERE 특성_1 IS NULL
値がSELECT *
FROM 테이블_이름
WHERE 특성_1 IS NOT NULL
ORDER BY返されるデータ結果をソートする方法に関するオプション.
(デフォルトは昇順です.)
SELECT *
FROM 테이블_이름
ORDER BY 특성_1
降順で並べ替えますか?SELECT *
FROM 테이블_이름
ORDER BY 특성_1 DESC
LIMIT返されるデータ結果の数を決定します.クエリ文で使用する場合は、最後に追加する必要があります.
データ結果の数を200個に制限できます.
SELECT *
FROM 테이블_이름
LIMIT 200
DISTINCTユニークな価格が欲しい場合は、SELECTの後ろに貼って使うことができます.
属性1のみに基づいてユニークな値を選択します.
SELECT DISTINCT 특성_1
FROM 테이블_이름
プロパティ1、プロパティ2、およびプロパティ3のユニークな「組合せ」値を選択します.SELECT
DISTINCT
특성_1
,특성_2
,특성_3
FROM 테이블_이름
INNER JOIN or JOIN共通の部分にのみ接続します.
https://sql-joins.leopard.in.ua/
(を参照)
SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
OUTER JOIN「left inclusive」「right inclusion」「fullouterjoin」には3つの基本的な選択があります.(上のリンクを参照して、どの部分が参照図に適用されるかを確認してください)
AS
必要な文字列に名前を変更
SELECT COUNT(name) AS ContentCount
FROM user
JOIN content ON user.id = content.userId
WHERE user.name = 'duRiCha'`
Count
結果を数値に戻す
SELECT user.name, COUNT(content.title) AS ContentCount
FROM content RIGHT JOIN user ON content.userId = user.id
group by user.name
Groub by
必要な結果値のみを選択して出力
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_groupby
Reference
この問題について([TIL] SQL, Database), 我々は、より多くの情報をここで見つけました https://velog.io/@iooi75/TIL-SQL-Databaseテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol