LoginSignup
0
0

SQLを学習したのでまとめてみた

Last updated at Posted at 2023-08-02

SQLについて学んだことをまとめていきます。

MySQL起動

  • バージョン確認
$ mysql --version
  • 起動
$ net start mysql80
  • MySQLログイン
    以下のどれかでログインする
$ mysql --user=root --password
$ mysql -u user_name -p

(例)mysql -u root -p

$ mysql -u test_user -h 127.0.0.1 -p

※ -hはホスト名を指定するオプション。localhostの時は省略可)

  • ログアウト
exit
  • 停止
$ net stop mysql80

DDL

(Data Definition Language | データ定義言語)
テーブルを作成・更新・削除したり、テーブルごとのルールや制約を決めたりすることのできる言語

DDL には以下のような種類が存在する。

  • CREATE : 新しいテーブルやビューなどのデータベースオブジェクトを作成する
  • DROP : 既存のデータベースオブジェクトを削除する
  • ALTER : 既存のテーブルベースオブジェクトを変更する
  • TRUNCATE : テーブルを再作成する(テーブル内のデータを全削除する)

ユーザー

ユーザー一覧を見る

SELECT user, host FROM mysql.user;

ユーザー作成

CREATE USER user_name@host_name IDENTIFIED BY 'password';

(例)CREATE USER test_user@localhost IDENTIFIED BY 'password';

パスワード変更

SET PASSWORD FOR user_name@host_name = 'new_password';

ユーザー名、ホスト名変更

RENAME USER 'user_name'@'host_name' TO 'new_user_name'@'new_host_name';

ユーザー削除

DROP USER user_name@host_name;

データベース

データベース作成

CREATE DATABASE db_name;

データベース一覧照会

SHOW DATABASES;

データベース選択

(操作するデータベースを選択する。)

USE db_name;

データベース削除

DROP DATABASE db_name;

テーブル

データ型 説明
INT 4 バイトの数値
BIGINT 8 バイトの数値
FROAT 浮動小数点ありの数値
DATE 日付
DATETIME 日時
CHAR(n) 固定長文字列(足りない分は空白で埋められる)
VARCHAR(n) 変長文字列
TEXT 変長文字列


TEXT型:65535文字まで格納できる。データは別領域に格納され、ポインタでアクセスするため、CRUDの効率はVARCHARに劣る。
VARCHAR型:格納できるデータ量は小さい。データを直接格納するため、CRUDの効率が良い。

テーブルを作成

カラムの型をそれぞれ指定する

CREATE TABLE db_name.table_name (column_name data_type, column_name data_type, ...);

USE で、使用するデータベースを選択している場合、db_name は不要

CREATE TABLE table_name (column_name data_type, column_name data_type, ...);

(例)CREATE TABLE departments (id INT, name VARCHAR(255), start_date DATE);

テーブルのスキーマを表示

SHOW CREATE TABLE table_name;

テーブル一覧を見る

SHOW TABLES;

カラム

テーブルのカラムを確認

SHOW COLUMNS FROM table_name;

インデックス

特定のカラム値のある行をすばやく見つけるために使用される。
インデックスがないと、MySQL は該当する行を見つけるために、先頭行から始めてテーブル全体を走査する必要がある。
特定のカラムにインデックスが設定されており、そのカラムでレコードを走査する場合、 B ツリーと呼ばれるデータ走査に強い木構造を用いることで、データの特定を素早く実行できる。

インデックスの設定

どちらでも可

ALTER TABLE table_name ADD INDEX index_name (column_name);
CREATE INDEX index_name ON table_name(column_name);

(例)departments テーブルの id カラムにインデックスを追加

ALTER TABLE departments ADD INDEX id_index (id);

テーブルのインデックス情報を見る

SHOW INDEX FROM table_name;

(例)

SHOW INDEX FROM departments;
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0