章四・MySQLクライアントツールとSQL解説

I.はじめにクライアントコマンド

1.mysql

接続管理データベース1、

  • 1)接続されている()を省略
  • 2)管理:
#MySQL接口自带的命令
\h 或 help 或?      查看帮助
\G                  格式化查看数据(key:value)
\T 或 tee            记录日志
\c(5.7可以ctrl+c)   结束命令
\s 或 status         查看状态信息
\. 或 source         导入SQL数据
\u或 use             使用数据库
\q 或 exit 或 quit   退出
  • 3)ユーザーのSQL文を受け取ります

2、サーバーにユーザーのSQL文を送信

2.mysqladmin

1、コマンドライン管理ツール

3.mysqldump

目次1、バックアップデータベースとテーブル

4.helpコマンドを使用します。

mysql> help
mysql> help contents
mysql> help select
mysql> help create
mysql> help create user
mysql> help status
mysql> help show

5.sourceコマンドを使用します。

#在MySQL中处理输入文件:
#如果这些文件包含SQL语句则称为:
#1.脚本文件
#2.批处理文件
mysql> SOURCE /data/mysql/world.sql
#或者使用非交互式
mysql</data/mysql/world.sql

6.mysqladminコマンドを使用します。

01)“强制回应 (Ping)”服务器。
02)关闭服务器。
03)创建和删除数据库。
04)显示服务器和版本信息。
05)显示或重置服务器状态变量。
06)设置口令。
07)重新刷新授权表。
08)刷新日志文件和高速缓存。
09)启动和停止复制。
10)显示客户机信息。
#查看MySQL存活状态
[root@db01 ~]# mysqladmin -uroot -p123 ping
#查看MySQL状态信息
[root@db01 ~]# mysqladmin -uroot -p123 status
#关闭MySQL进程
[root@db01 ~]# mysqladmin -uroot -p123 shutdown
#查看MySQL参数
[root@db01 ~]# mysqladmin -uroot -p123 variables
#删除数据库
[root@db01 ~]# mysqladmin -uroot -p123 drop DATABASE
#创建数据库
[root@db01 ~]# mysqladmin -uroot -p123 create DATABASE
#重载授权表
[root@db01 ~]# mysqladmin -uroot -p123 reload
#刷新日志
[root@db01 ~]# mysqladmin -uroot -p123 flush-log
#刷新缓存主机
[root@db01 ~]# mysqladmin -uroot -p123 reload
#修改口令
[root@db01 ~]# mysqladmin -uroot -p123 password

II。ユーザーのSQL文を受け取ります

1. SQLとは何ですか

構造化照会言語

2.SQL種

2.1 DDL:データ定義言語

オブジェクトライブラリ:ライブラリ名、ライブラリ不動産
開発仕様:ライブラリ名を小文字

2.1.1ライブラリーを作成します。データベースを作成|スキーマ

#创建oldboy数据库
mysql> create database oldboy;
#创建OLDBOY数据库
mysql> create database OLDBOY;
#查看数据库
mysql> show databases;
#查看oldboy的创建语句(DQL)
mysql> show create database oldboy;
#查看创建数据库语句帮助
mysql> help create database
#创建oldboy数据库添加属性
mysql> create database testa charset utf8;

2.1.2削除ライブラリ:データベースをドロップ

#删除oldboy数据库
mysql> drop database oldboy;

2.1.3定義ライブラリを変更します。データベースを変更

#修改oldboy数据库属性
mysql> alter database oldboy charset gbk;
#查看oldboy的创建语句(DQL)
mysql> show create database oldboy;

テーブルオブジェクト:列名、列プロパティ、制約

2.1.4テーブルを作成します(開発者が行う)テーブルを作成します

#查看创建表语句帮助
mysql> help create table
#创建表
mysql> create table student(
sid INT,
sname VARCHAR(20),
sage TINYINT,
sgender ENUM('m','f'),
cometime DATETIME);

2.1.5データ型

int: 整数 -231 ~ 231 -1
varchar:字符类型 (变长)
char: 字符类型 (定长)
tinyint: 整数 -128 ~ 128
enum: 枚举类型
datetime: 时间类型 年月日时分秒
#创建表加其他属性
mysql> create table student(
sid INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT ‘学号’,
sname VARCHAR(20) NOT NULL COMMENT ‘学生姓名’,
sage TINYINT UNSIGNED COMMENT ‘学生年龄’,
sgender ENUM('m','f')  NOT NULL DEFAULT ‘m’ COMMENT ‘学生性别’,
cometime DATETIME NOT NULL COMMENT ‘入学时间’)chatset utf8 engine innodb;
#查看建表语句
mysql> show create table student;
#查看表
mysql> show tables;
#查看表中列的定义信息
mysql> desc student;

2.1.6データプロパティ

not null: 非空
primary key: 主键(唯一且非空的)
auto_increment: 自增(此列必须是:primary key或者unique key)
unique key: 单独的唯一的
default: 默认值
unsigned: 非负数
comment: 注释

2.1.7削除テーブル

#删除表
mysql> drop table student;

2.1.8テーブルの定義を変更します。ALTER TABLE(開発者が行います)

#修改表名
mysql> alter table student rename stu;
#添加列和列定义
mysql> alter table stu add age int;
#添加多个列
mysql> alter table stu add test varchar(20),add qq int;
#指定位置进行添加列(表首)
mysql> alter table stu add classid varchar(20) first;
#指定位置进行添加列(指定列)
mysql> alter table stu add phone int after age;
#删除指定的列及定义
mysql> alter table stu drop qq;
#修改列及定义(列属性)
mysql> alter table stu modify sid varchar(20);
#修改列及定义(列名及属性)
mysql> alter table stu change phone telphone char(20);

2.2 DCL:データ制御言語

コントロールのアクセス許可

2.2.1助成金

#授权[email protected]用户所有权限(非炒鸡管理员)
mysql> grant all on *.* to root@'10.0.0.51' identified by 'oldboy123';
#怎么去授权一个炒鸡管理员呢?
mysql> grant all on *.* to root@'10.0.0.51' identified by 'oldboy123' with grant option;
#其他参数(扩展)
max_queries_per_hour:一个用户每小时可发出的查询数量
max_updates_per_hour:一个用户每小时可发出的更新数量
max_connetions_per_hour:一个用户每小时可连接到服务器的次数
max_user_connetions:允许同时连接数量

2.2.2 REVOKE

#收回select权限
mysql> revoke select on *.* from root@'10.0.0.51';
#查看权限
mysql> show grants for root@'10.0.0.51';

2.3 DML:データ操作言語

ライン情報テーブル運転データ

2.3.1挿入

#基础用法,插入数据
mysql> insert into stu values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456);
#规范用法,插入数据
mysql> insert into stu(classid,birth.sname,sage,sgender,comtime,telnum,qq) values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456);
#插入多条数据
mysql> insert into stu(classid,birth.sname,sage,sgender,comtime,telnum,qq) values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456),
('linux02',2,NOW(),'zhangsi',21,'f',NOW(),111,1234567);

2.3.2アップデート

#不规范
mysql> update student set sgender='f';
#规范update修改
mysql> update student set sgender='f' where sid=1;
#如果非要全表修改
mysql> update student set sgender='f' where 1=1;

2.3.3削除

#不规范
mysql> delete from student;
#规范删除(危险)
mysql> delete from student where sid=3;
#DDL删除表
mysql> truncate table student;
  • 図1に示すように、擬似削除の使用
    削除の代わりに使用して更新

1)追加のステータスバーを追加します

mysql> alter table student add status enum(1,0) default 1;

2)アップデートを使用

mysql> update student set status='0' where sid=1;

3)アプリケーションデータのクエリの存在を

mysql> select * from student where status=1;
  • 図2に示すように、トリガーを使用して(理解)
trigger

2.4 DQL:データクエリ言語

選択:基本的な使い方を

#常用用法
mysql> select countrycode,district from city;
#查询单列
mysql> select countrycode from city;
#行级查询
mysql> select countrycode,district from city limit 2;
mysql> select id,countrycode,district from city limit 2,2;
#条件查询
mysql> select name,population from city where countrycode='CHN';
#多条件查询
mysql> select name,population from city where countrycode='CHN' and district='heilongjiang';
#模糊查询
mysql> select name,population,countrycode from city where countrycode like '%H%' limit 10;
#排序查询(顺序)
mysql> select id,name,population,countrycode from city order by countrycode limit 10;
#排序查询(倒叙)
mysql> select id,name,population,countrycode from city order by countrycode desc limit 10;
#范围查询(>,<,>=,<=,<>)
mysql> select * from city where population>=1410000;
#范围查询OR语句
mysql> select * from city where countrycode='CHN' or countrycode='USA';
#范围查询IN语句
mysql> select * from city where countrycode in ('CHN','USA');

III。文字セットの定義

1.文字セット(文字セット)は何ですか

文字は設定しています。支援のシステムのすべての抽象文字の集合を。文字は、その上のテキストや記号、国別文字を含め、句読点、グラフィック記号、数字、および各種の総称です。

2.MySQLデータベース・キャラクタ・セット

1)字符集(CHARACTER)
2)校对规则(COLLATION)

3.MySQL共通の文字セット

1)UTF8
2)LATIN1
3)GBK

4.一般的な照合

1)ci:大小写不敏感
2)cs或bin:大小写敏感

5.私たちは、表示するには、次のコマンドを使用することができます

mysql> show charset;
mysql> show collation;

IV。文字セット

オペレーティング・システム・レベル1

[root@db01 ~]# source /etc/sysconfig/i18n
[root@db01 ~]# echo $LANG
zh_CN.UTF-8

2.クライアント・オペレーティング・システム・レベル(SSH)

3.MySQLインスタンスレベル

方法1:コンパイル時に設置されたサーバとして設定された文字の指定。

cmake . 
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \

方法2:設定ファイル内の文字セットを設定します

[mysqld]
character-set-server=utf8

4.データベースレベルの構築

mysql> create database oldboy charset utf8 default collate = utf8_general_ci;

テーブルレベルの構築

mysql>  CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

考える:本番環境ではなく、十分な文字セットまたは文字セットであれば不適切に対処する方法?

(データを含む)データベースへの生産環境の変化文字セット方法

mysql> alter database oldboy CHARACTER SET utf8 collate utf8_general_ci;
mysql> alter table t1 CHARACTER SET utf8;

ファイブ.select高度な使用法(拡張)

1.マルチテーブルクエリ(偶数テーブルのクエリ)に参加

コレクション:

[zhang3,li4,wang5]

[50,70,80]

T1:

sid 1 2 3
sname zhang3 li4 wang5

T2:

sid 1 2 3
mark 50 70 80

パラダイム:データの冗長性を削減し、一貫性の問題を防止するため、テーブルに原子として、スプリットのテーブルには、分割することはできません。(設計仕様開発段階)

例:ジョー・スミスは、二つのテーブルの内容に基づいて結果を見つけました

select t1.sname,t2.mark from t1,t2 where t1.sid=t2.sid and t1.sname=’zhang3’;

1.1従来のコネクタ(コネクタのみ交差することができます)

#世界上小于100人的人口城市是哪个国家的?
select city.name,city.countrycode,country.name 
from city,country 
where city.countrycode=country.code 
and city.population<100;

1.2 NATURALは(共通の列名を持って結合されたテーブルから)JOIN

SELECT city.name,city.countrycode ,countrylanguage.language ,city.population
FROM  city NATURAL  JOIN  countrylanguage 
WHERE population > 1000000
ORDER BY population;

1.3エンタープライズマルチテーブルは、クエリに参加する(JA)

select city.name,city.countrycode,country.name 
from city join country on city.countrycode=country.code 
where city.population<100;

推奨事項:結合文、かつての小さなテーブル、ポストに大きなテーブルを使用します。

1.4外コネクタ

select city.name,city.countrycode,country.name 
from city left join country 
on city.countrycode=country.code 
and city.population<100;

1.5 UNION(合併問い合わせ)

#范围查询OR语句
mysql> select * from city where countrycode='CHN' or countrycode='USA';
#范围查询IN语句
mysql> select * from city where countrycode in ('CHN','USA');
替换为:
mysql> select * from city where countrycode='CHN' 
union  all
select * from city where countrycode='USA' limit 10
union:去重复合并
union all :不去重复
使用情况:union<union all

おすすめ

転載: www.cnblogs.com/Forever-x/p/10992551.html