0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQLの基本(データベースの操作)

Posted at

前回に引き続きドットインストールで学んどことを復習がてらアウトプットしていきます。

データベースからの条件つきでデータ抽出

○ まず外部ファイルにテーブル作成&レコード作成を記述したファイルを用意します。

myapp.sql:


drop table if exists users;    -- usersテーブルがすでにあれば消去
create table users (
 id int unsigned primary key auto_increment,
 name varchar(20),
 score float
);

insert into users (name, score) values ('taguchi', 5.8);
insert into users (name, score) values ('fkoji', 8.2);
insert into users (name, score) values ('dotinstall', 6.1);
insert into users (name, score) values ('Tanaka', 4.2);
insert into users (name, score) values ('yamada', null);
insert into users (name, score) values ('tashiro', 7.9);

次に上記ファイルにデーベース操作のコマンドを書いていきます。

○ usersテーブルの全てのデータを取得

select * from users;  

○ 抽出するカラムを指定

select id, name from users;

○ 条件付きで抽出 - where -

select * from users where score > 6;  (scoreが6より大きいレコードを取得)

select * from users where score >= 3.0 and score <= 6.0; (scoreが6以下レ3以上のレコードを取得)

select * from users where score between 3 and 6;  (指定条件の間は between で代用可能)

select * from users where name = 'taguchi' or name = 'fkoji'; (条件にした名前を含むレコードを取得)

select * from users where name in ('taguchi', 'fkoji'); (指定条件を含むは in で代用可能)

○ ワイルドカードを使用したデータ取得

select * from users where name like 't%';  (nameがtから始まるレコードを取得)

select * from users where name like '%t%'  (nameにtを含むレコードを取得)

select * from users where name like binary 'T%'  (binaryでより厳密に比較。nameが大文字のTで始まるレコードを取得)

select * from users where name like '______'  (アンダーバーの数でnameが指定の文字数のレコード取得)

select * from users where name like '_a%'  (名前の2文字目がaのレコードを取得)

○ データの並び替え

select * from users order by score;  (scoreの昇順で並び替え)

select * from users order by score desc;  (scoreの降順で並び替え)

select * from users limit 3;  (limitで上から3つのレコードのみ取得)

select * from users order by score desc limit 3;  (降順で上から3つのレコードのみ取得)

○ レコードの更新と削除

update users set score = 5.9 where id = 1;  (idが1のレコードのscoreを5.9に更新)

update users set name = 'sasaki' , score = 5.9 where id = 1;  (一度に複数のカラム更新も可能)

delete from users where score < 5; (scoreが5未満のレコードを削除)

○ 数値の計算

update users set score = score * 1.2;  (scoreの値を1.2倍する)

select round(5.355);  (四捨五入)

select round(5.355,1);  (小数点1以下で四捨五入)

select floor(5.833);  (切り捨て)

select ceil(5.238);  (切り上げ)

elect rand();  (ランダムな値を返す)

select * from users order by rand() limit 1;  (乱数で並び替え)

○ 文字列の演算

select length('Hello');  (文字列の長さ)

select substr('Hello',2);  (2文字目から全て表示)

select substr('Hello',2,3);  (2文字目から3文字を抽出)

select upper('hello');  (大文字に変換)

select lower('HELLO');  (小文字に変換)

select concat('Hello','World');  (文字の連結)

select length(name), name from users order by length(name);  (名前の長さで並び替え)

select length(name) as len, name from users order by len;  (asでカラム名置き換え)

今日はこの辺で:writing_hand:

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?