2020.8.20教室ノート(MySQL復習、MySQL時間フォーマットの変換)

5726 ワード

mysqlロック:テーブル・レベル・ロック、行レベル・ロック、ライブラリ・レベル・ロック、トランザクション・ロック行レベル・ロックはupdateに対して単独で実行されることが多く、操作によってそれらの行がロックされ、テーブル・レベル・ロックは往々にして削除され、Oracleのデフォルトは行レベル・ロック同期スレッド・ロックの最下位ストレージ構造である:bTree
mysql:データベース管理システム(dbms)ライブラリ:データを格納する地方テーブル:データと関係の対応ビューに使用する関係を定義する:仮想テーブルと見なすことができ、テーブル構造とデータは定義されたクエリー文によって決定される:コードの再利用性を高め、安全で、対外インタフェースの統一劣勢:効率が低下し、連表の基礎の上で増削除のトリガを行うことができません:増削除の操作の条件のトリガの作用:自動的にいくつかの操作を実行して、流れの劣勢を減らします:定義の時にトリガ文の有効性を検証しませんinsert:new delete:old update:new、oldストレージの過程:voidの方法に相当して、しかしパラメータを出すことができて、重視するのは過程の関数です:戻り値のある方法に相当して、注目するのは戻り値インデックス:プライマリ・キーprimary key:重複せず、クエリー検索速度が速い一意インデックスunique:基本的にプライマリ・キーと同じですが、複数の一般インデックスindex:クエリー効率の向上全文インデックス:クエリー効率の向上MyISAMエンジンのテーブルでしか使用できない文の分類:DDL:ライブラリとテーブル自体に対する操作:create、drop、alter DML:データの削除変更:insert、update、delete DQL:データに対するクエリー:select DCL:権限付与とトランザクションサポート:grant、commit、rollbackライブラリの構造:create database[if not exists]ライブラリ名;drop database[if exists]ライブラリ名;show databases; grant select/update/delete/drop onライブラリ名.表名to'ユーザ名'@'ipアドレス'identified by'パスワード'//文字列内%はワイルドカード、非文字列はワイルドカード表の操作:create table[if not exists]表名(フィールド名タイプ(長さ)[属性インデックス][注釈]...)drop table[if exists]表名;alter tableテーブル名rename to新テーブル名;alter tableテーブル名add columnフィールド名タイプ(長さ)[属性インデックス][注釈];show tables; descテーブル名;show create tableテーブル名;データ操作:updateテーブル名set列名=値[,...]where条件;delete fromテーブル名where条件;truncate[table]テーブル名;insert intoテーブル名[(フィールドリスト)]values(対応する値リスト)[,...];select[distinct]{|フィールドリスト}fromテーブル名[xxx joinテーブル名on][where条件][group byパケットキュー][havingパケット条件][order byソートフィールド][limit a,b];トランザクション:バックアップ:mysqldump[-hホスト名]-uユーザー名-p[options]ライブラリ名[テーブル名リスト]>ファイルパス;リカバリ:mysql[-hホスト名]-uユーザー名-pライブラリ名コマンドライン:sourceファイルパス;終了子delimiter@@delimiterを変更します.自動コミットset autocommit=0をキャンセルします.自動コミットset autocommit=1を復元します.
データベース設計:食品連盟商店shop_id | shop_name | shop_type商家詳細shop_id | shop_address | shop_phone | work_time事業者評価表comment_id | shop_id | comment_person | comment_detail | comment_time|levelメニューdish_id | dish_name | shop_id | price | dish_type | dish_detail | saled_numメニュー分類(辞書表)type_id | type_nameメニュー評価表comment_id | dish_id | comment_person | comment_detail | comment_time|levelユーザーテーブルuser_id | user_name | phone | address | gender | birthday | pay_type支払タイプテーブル(辞書テーブル)pay_type_id | pay_type_name | support_brandユーザーvip等級(辞書表)vip_id | user_id | charge_percent | vip_name | affect_time | deffect_timeオーダー(インクリメンタルテーブル)bill_id | bill_name | user_id | dish_id | dish_num | total_price | send_person | start_time | end_time | finish_time | expire_time | status | bill_detail受注履歴(全量表)bill_id | bill_name | user_id | dish_id | dish_num | total_price | send_person | start_time | end_time | finish_time | expire_time | status | bill_detail配送員send_person_id | send_person_name|phone|gender配送履歴send_history_id | send_person_id | bill_id | isSuccess |sent_time | send_distance配送員評価send_comment | comment_person | comment_detail | comment_time | level
mysql時間変換1.現在のタイムスタンプの取得:select unix_timestamp(now()); select unix_timestamp();
mysql>  select unix_timestamp(now());
+-----------------------+
| unix_timestamp(now()) |
+-----------------------+
|            1599030443 |
+-----------------------+
1 row in set (0.00 sec)

2.現在時刻の取得:select now();select date(now());
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-09-02 15:08:56 |
+---------------------+
1 row in set (0.00 sec)

3.タイムスタンプに変換
mysql> select unix_timestamp('2020-07-26 00:00:00');
+---------------------------------------+
| unix_timestamp('2020-07-26 00:00:00') |
+---------------------------------------+
|                            1595692800 |
+---------------------------------------+
1 row in set (0.00 sec)

4.タイムスタンプをタイムに変換
mysql> select from_unixtime(785606400);
+--------------------------+
| from_unixtime(785606400) |
+--------------------------+
| 1994-11-24 00:00:00      |
+--------------------------+
1 row in set (0.00 sec)

5.タイムスタンプをタイム同時フォーマットにする
mysql> select from_unixtime(785606400,'%Y-%m-%d %H:%i:%S');
+----------------------------------------------+
| from_unixtime(785606400,'%Y-%m-%d %H:%i:%S') |
+----------------------------------------------+
| 1994-11-24 00:00:00                          |
+----------------------------------------------+
1 row in set (0.00 sec)

6.時間書式
mysql> select date_format(now(),'%Y-%m-%d');
+-------------------------------+
| date_format(now(),'%Y-%m-%d') |
+-------------------------------+
| 2020-09-02                    |
+-------------------------------+
1 row in set (0.00 sec)

7.文字列の回転時間
mysql> select str_to_date('2018-12-23', '%Y-%m-%d');
+---------------------------------------+
| str_to_date('2018-12-23', '%Y-%m-%d') |
+---------------------------------------+
| 2018-12-23                            |
+---------------------------------------+
1 row in set (0.00 sec)

8.文字列のタイムスタンプ
mysql> select unix_timestamp('2020-02-22 22:22:22');
+---------------------------------------+
| unix_timestamp('2020-02-22 22:22:22') |
+---------------------------------------+
|                            1582381342 |
+---------------------------------------+
1 row in set (0.00 sec)

SELECT s.worker_名前、DATE_FORMAT(s.sign_time,’%Y-%m-%d’)‘勤務日’,TIMESTAMPDIFF(SECOND,s.sign_time,STR_TO_DATE(CONCAT(DATE_FORMAT(s.sign_time,’%Y-%m-%d’),w.sign_time),’%Y-%m-%d %H:%i:%S’))/60 FROM sign_log s JOIN work_plan w ON s.worker_name=w.worker_name