2019年4月4日木曜日

mariaDB これだけ知っていれば困らないかも、、、

これだけ知っていれば、困らない
僕は、、、


(1) 検索について

結局大事なのは検索で、メモとして追加
NULL 検索をするとKeyも無視するらしいので、NULLを使ってはならない。

棚番号にXXXXが入って無く、かつdataに20%の値が設定されている。
select tana,hinc from zaiko where tana != "XXXX" and date like '20%';

カラムをグレイヴ アクセントで囲み検索条件をシングルクォーテーション
select count(*) from zaiko
where
`tana` like '%CHC%'
and
`data` like '20%';

(2) Login

mariadb -uroot db -pxxxxx
mariadb -uroot -p -h ホスト名


(3) DB処理

select * from zaiko;
select * from zaiko where id = 10;
select * from zaiko where hinc like('% style="font-size: 10pt;"%');

insert into users (name) values ('かばかば');
insert into profiles (name) select users from users where users.id = 1;
update users set name='kayak', status=3 where id=1;
delete from wakuwaku where kimoti like "waku%" and fuku <> "hadaka";

・例)検索してREPLACEで置換
update ship set post_kayakp = replace(post_content, 'style="font-size: 12pt;"', '') where kayak like('% style="font-size: 12pt;"%');

(4) DB import export

・import
入力ファイルはテーブル名
mysqlimport -uthn -pxxxxux --fields-terminated-by="|" 
 --lines-terminated-by="\n" --local test /home/pi/tmp/t1.csv

test.t1: Records: 21  Deleted: 0  Skipped: 0  Warnings: 0

・export
出力先は/tmpにしないとエラーになる。
DB名test, DB内にはtable名t1のみ、結果は  /tmp/t1.txt  となっている。
sudo rm /tmp/t*; mysqldump -uroot -pxxxxx --tab=/tmp  
 --fields-terminated-by='|' test

・コマンドライン
load data local infile “./test.csv” into table t1
 fields terminated by “,” lines terminated by “\r\n”;

出力先は/tmpにしないとエラーになる。

select * fromt1 into outfile ‘/tmp/te.csv’ 
 fields terminated by ‘|’ lines terminated by ‘\n’;


(5) DB, Table 作成、管理

・DB作成
create database DB名称;

・DB削除
drop database DB名称;

・例)DB作成とテーブル作成
create database wm;
create table wm.zaiko(hinc CHAR(32),
 hin CHAR(35),
 kazu int(6),
 hink CHAR(3),
 kata CHAR(200),
 hin2 VARCHAR(300),
 tana CHAR(32),
 yearin char(4),
 monthin char(2),
 date char(14),
 koushin datetime,
 other VARCHAR(256)
);
Query OK, 0 rows affected (5.89 sec)

・例)テーブル作成
cretat table t1(id int, name varchar(128), atr varchar(128));
  `id` int(11) default null,
  `name` varchar(128) default null,
  `atr` varchar(128) default null,
  `txt1` varchar(128) default null,
  `txt2` varchar(128) default null
) engine=InnoDB default charset=utf8mb4;

・テーブル確認
describe t1; 

・プライマリーキーの追加
alter table テーブル名 add primary key (カラム名);

・カラム名と型を変更
alter table `posts` change column `txt` `caption` varchar(255);

カラムの名前だけを変更する場合でも、上記のように型指定が必要
not null制約を追加する場合です。カラム名の制約を追加

alter table `posts` change column `txt` `caption` varchar(255) not null;

・カラムの型を変える
alter table `comments` modify column `post_id` bigint not null;

・カラム追加
alter tableとADDを使用してカラムを追加。
after 指定でpasswordカラムの後ろに、kayak_idカラムが追加
先頭に追加する時は、first  を指定する。

alter table `users` add `kayak_id` int(11) default null;
alter table `users` add `kayak_id` int(11) default null after `password`;
alter table `users` add `kayak_id` int(11) default null first;
alter table t1 addtxt2 varchar(128);
alter table t2 addtxt1 varchar(128) after txt1;

・テーブル内のデータを削除する。データだけの削除。
truncate t1;

(6) Utility

status;
show databases;
show columns from zaiko;
select count(*) from zaiko;
select version();
show variables;
show variables like "char%";
show variables like 'slow%';

use mysql;
select * from user;


(7) ユーザ管理

・ユーザー確認
select user from mysql.user;

・ユーザ追加とパスワード設定
create user 'ユーザ名'@'localhost' identified by 'ここにパスワード';

create user 'kayak'@'localhost' identified by 'password';

・ユーザーのパスワードを変更
set password for kayak@localhost=password( 'kayakPassword' );

・ユーザーを削除
drop user ユーザー名@ホスト名;

・ユーザー権限を確認
show grants for wordpress@localhost;
show grants for 'kayak'@'%';

・権限を追加 
grant all privileges on DB名.テーブル名 to 'ユーザ名'@'localhost';
mariadb 10.1.37では、上記のDB名.テーブル名は、シングルコーテーションで
囲むとエラーになる。従って、下記のようにする。
grant all privileges on TESTDB.* to 'user'@'localhost';

grant select on `kayakdb`.`users` to 'kayak'@'%'
grant file on *.* to kayak@localhost;

まとめると、、、
・グローバルレベル.sql
全DBの全テーブルに対して、与える権限を与える
grant 与える権限 on *.* to user名;

・データベースレベル.sql
指定したDB名の全テーブルに与える権限を与える
grant 与える権限 on DB名.* to user名;

・テーブルレベル.sql
指定したDB名の指定したテーブル名に与える権限を与える
grant 与える権限 on DB名.テーブル名 to user名;

・変更を反映さえる
flush privileges;


(8)開発環境を作る

sudo apt-get install default-libmysqlclient-dev
gcc slct01.c -o slct01 -lmysqlclient -L/usr/lib/arm-linux-gnueabihf

libmariadbclient-dev は、必要無いのかしら、、、

 Peace!!

0 件のコメント:

コメントを投稿