MYSQL8以降ウィンドウ関数対応=>ランキング。

MYSQLでもランキングが使えるようになったとさ。
日本国内のレンタルサーバーは最新の技術というより
一歩遅れた技術で運営している理由はリスクを取らないために
そうしているのだろうなとヒシヒシと感じます。

### support mysql>8.0.2 ウィンドウ関数

```sql
select id,namae, rank() over(order by code_total asc)as code_rank from code_data;
```
### code_data
|id|namae|code_total|
|---|---|---|
|1|kaonashi|15|
|2|mononoke|75|
|3|asitaka|52|
|4|san|87|
|5|theta|99|

同一TABLEを参照しアップデートする。

同一TABLEを参照しアップデートする。
これでアップデートできる事を昨日知りました。

UPDATE demo1,(select chk from demo1 where id=1) as demo2 SET
demo = "2" where id = 1 and chk = demo2.chk;

--------------
--------------
/*
同一TABLEを参照しアップデートする。
table demo1
id,chk
1,123
*/
--------------

自然結合というものがある、基礎だけど知らない人もいる。

自然結合というものがある、基礎だけど知らない人もいる。
結合するTABLEのフィールド名が同じでなくてはならないので
設計する人に一任されるのでほぼ使うことはないと思います?

select * from demo1 natural join demo2;

-- table demo1
-- id,pass

-- table demo2
-- id,name,tel,email

--idで自動で結合してくれる(自然結合)

 

大量データをDBに高速にインストールする方法。

LOAD DATA INFILE 'data.csv' INTO TABLE tblname FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';

この一行の命令で…かなり高速にインストールできます。
インストールする前に、ファイルのチェックを行い整合性などが
正しければ一括にインストールするという具合がよろしいかと思われます。

 

ドロップシッピングの大量データを入れ込むときに役立ちそうだ・・・。
自分あまりSQLの事を知らないですね。そろそろSQLの知識も増やそうと
思っています。

 

全ての定義済の変数を配列で返す

全ての定義済の変数を配列で返す関数です。
全てなのでとってきて欲しくないものまでも取ってきます。
なのでそういうのはunsetします。
ちなみに似たようなのでcompactという関数がPHPには存在します。

何に使用する場合に便利かは人それぞれ違いますが
自分の場合はテンプレートエンジンを使用するときに重宝してます。
テンプレートエンジン・・・TwigやSmartyなど

<?php

$a = "abc";
$b = array(1,2,3);
$c = 123;

$vars = get_defined_vars();
unset($_COOKIE);
unset($_POST);
unset($_GET);
unset($_FILES);
unset($GLOBALS);
foreach ($vars as $key => $value) {
    var_dump($key);
    var_dump($value);
}
//...
var_dump($vars);

 

ネームスペースの利点はこれだと思っている。

ネームスペースの利点はこれだと思っている。
複数人で開発とかしているときに関数名やクラスなどが
かぶってしまう可能性ある、そういうのを
解決してくれるのがネームスペースということです。

<?php
namespace test\demo;

class test{
    function demo():string
    {
        return "demo1\n";
    }
}

namespace test\demo2;
 
class test{
    function demo():string
    {
        return "demo2\n"; 
    }
  }

 

<?php
include_once "./index-6.php";

$demo = new  test\demo\test();
print $demo->demo();
$demo = new  test\demo2\test();
print $demo->demo();

PHP忘れてしまいそう。

こういう書き方とか書かなかったら忘れてしまいそうですね。
クラスの多重継承とか職場ではそもそもしない。Functionで十分な感じで
この頃、ろくなコードを書いていません。FunctionからFunctionへなんて
コードを書いてたりしています。

 

<?php

function demo1(int $val=0):int
{
    return 3 * 3 * $val;
}

print demo1(3);


class demo2
{
    public static function test1():string
    {
        return "ABC";
    }
}

$demo2  = "demo2";
print $demo2::test1();


trait demo3
{
    public static function test2($val=""){
        return $val;
    }
    
}

class demo4 
{
    public static function test3($val = "")
    {
        return $val;
    }
}

class demo5 extends demo4
{
    use demo3;
    public static function test4($val = "")
    {
        return $val;
    }
}

$demo5 = 'demo5';
print $demo5::test2(1);
print $demo5::test3(2);
print $demo5::test4(3);