ホームページ  >  記事  >  データベース  >  mysqlコマンドの概要

mysqlコマンドの概要

高洛峰
高洛峰オリジナル
2016-12-14 10:18:05888ブラウズ

1. MySQL に接続します
形式: mysql -h ホスト アドレス -u ユーザー名 -p ユーザー パスワード
1. このマシン上の MYSQL に接続します。
まず DOS ウィンドウを開き、mysqlbin ディレクトリに入り、Enter キーを押した後、パスワードの入力を求められます。MYSQL がインストールされたばかりの場合、スーパー ユーザー root は入力しません。パスワードがあるので、Enter キーを押して直接入力できます。MYSQL では、MYSQL プロンプトは mysql> です。
2. 例 2: リモートホスト上の MYSQL に接続します。リモート ホストの IP が 110.110.110.110、ユーザー名が root、パスワードが abcd123 であるとします。次に、次のコマンドを入力します:
mysql -h110.110.110.110 -uroot -pabcd123
(注: u と root にはスペースを追加する必要はありません。同じことが他の場合にも当てはまります)
3. MYSQL コマンドを終了します。 exit (Enter )。
2. パスワードを変更します
形式: mysqladmin -u ユーザー名 -p 古いパスワード パスワード 新しいパスワード

1. 例 1: パスワード ab12 を root に追加します。まず、DOS のディレクトリ mysqlbin に入り、次のコマンドを入力します:
mysqladmin -uroot -password ab12
注: root には最初にパスワードがないため、-p old passwd 項目は省略できます。
2. 例 2: root パスワードを djg345 に変更します。
mysqladmin -uroot -pab12 パスワード djg345
3. 新しいユーザーを追加します。 (注: 上記とは異なり、以下は MySQL 環境でのコマンドであるため、コマンド終了文字としてセミコロンが続きます)
形式: Grant select on database.* to username@login hostidentidented by "password"
例 1 : ユーザー test1 をパスワード abc で追加します。これにより、彼は任意のホストにログインし、すべてのデータベースに対するクエリ、挿入、変更、および削除の権限を得ることができます。まず root ユーザーとして MySQL に接続し、次のコマンドを入力します:
grant select,insert,update,
delete on *.* to [email=test2@localhost]test2@localhost[/email]identified by "abc" ;
test2 にパスワードを設定したくない場合は、別のコマンドを入力してパスワードを削除できます。
mydb の select,insert,update,delete を付与します
.* to [email=test2@localhost]test2@localhost[/email] は "" で識別されます;
上記では、ログイン、ユーザーの追加、パスワードの変更、その他の問題について説明しました。 MySQL でのデータベース操作を見てみましょう。注: まず MySQL にログインする必要があります。次の操作は MySQL プロンプトで実行され、各コマンドはセミコロンで終わります。
1. MySQL の一般的なコマンド
データベース名を作成する
データベース名を選択する
リマインダーなしでデータベースを直接削除する
テーブルを表示する
テーブル名の詳細を説明する
追加して削除する異なる重複フィールド
mysqladmin データベース名を削除 データベースを削除する前にプロンプ​​トが表示されます。
現在の mysql バージョンと現在の日付を表示します
select version(),current_date;
2. mysql で root パスワードを変更します。 where user='root';
mysql> フラッシュ権限 // データベースを更新します
mysql>use dbname; データベースを開きます:
mysql>show tables; データベース内のすべてのテーブルを表示します。最初に mysql を使用します。次に
mysql>describe user; mysql データベース内のユーザー テーブルの列情報を表示します)
3. どこからでもサーバーに接続できる完全なスーパー ユーザーを作成しますが、パスワードを使用する必要があります。これを行うには
mysql> ; *.* に対するすべての権限を [email=user@localhost]user@localhost[/email] に付与します。
新しいユーザーを追加します
形式: データベースの選択を username@ に付与します"パスワード" で識別されたログイン ホスト
GRANT ALL PRIVILEGES ON *.* TO [email=monty@localhost]monty@localhost[/email] IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO [email] =monty@% E2%80%9D%]monty@”%[/email]” IDENTIFIED BY 'something' WITH GRANT OPTION;
認可を削除:
mysql> *.* から [email=root@%] のすべての権限を取り消しますE2%80% 9D%]root@”%[/email]”;
mysql> user=”root” および host=”%” からユーザーを削除;
mysql> 特定のユーザー カスタムを作成client it363.com 特定のデータベース fangchandb にアクセスするにはログインします
mysql >fangchandb.* で select、insert、update、delete、create、drop を「passwd」で識別されるcustom@ it363.com に許可します
テーブルの名前を変更します:
mysql > ; テーブル t1 の名前変更 t2;
4, mysqldump
データベースのバックアップ
shell>mysqldump -u root -p dbname >dbname_backup.sql
データベースの復元
shell> mysqladmin -h myhost -u root -p create dbname shell> mysqldump -h host -u root -p dbname < dbname_backup.sql
テーブル作成コマンドのみをアンロードする場合、コマンドは次のようになります。 .sql
テーブル作成コマンドのみをアンロードしたい場合 テーブルコマンドを作成せずにデータを挿入する SQL コマンドは次のとおりです:
shell> mysqladmin -u root -p -t databasename > SQLコマンドではなくデータが必要ですが、どうすればよいですか?
Mysqldump -T./ phptest driver
このうち、プレーンテキストファイルをアンロードするために指定できるのは -T パラメータのみで、データをアンロードするディレクトリを示します。 ./ はカレントディレクトリを示し、mysqldump と同じディレクトリです。 。ドライバーが指定されていない場合 テーブルの場合、データベース全体のデータがアンロードされます。各テーブルは 2 つのファイルを生成します。1 つはテーブル作成の実行を含む .sql ファイルです。もう 1 つは、データのみを含み SQL 命令を含まない .txt ファイルです。
5. クエリをファイルに保存し、キーボード入力を待つ代わりにファイルからクエリを読み取るように mysql に指示できます。これを行うには、シェル タイプ リダイレクト ユーティリティを使用できます。たとえば、ファイル my_file.sql にクエリが保存されている場合、これらのクエリを次のように実行できます。 たとえば、テーブル作成ステートメントを事前に sql.txt に記述したい場合:
mysql > mysql -h myhost -u root -p database 1. インストール環境:
Windows このマシンは、mysql -h 172.5.1.183 -uroot を使用してログインできます。 2 行目で権限の変更が有効になります:
1)net stop mysql
2)c:mysqlbinmysqladmin flash-privileges
3) mysql の後に、flush 権限ステートメントを使用します
6. データベース スタッフを作成します
データベース スタッフを作成します。次のステートメントは mysql 環境で実行されます。
ユーザーが権限を持つデータベースを表示します。 show tables;
データベースの権限を持つ現在のテーブルを表示します。 table Staffer desc Staffer;
8. テスト環境を作成します
1) データベース Staffer を作成します
mysql> データベース Staffer を作成します
2) テーブル Staffer、部門、ポジション、部門_pos を作成します
テーブル s_position を作成します
テーブルキー
);テーブル部門テーブルを作成しますDepartmentpartment (id) #主キーを設定します
);
create tablederat_pos
(
Department_id int not null,
position_id int not null,
primary key PK_Depart_pos (Department_id,position_id) #複合主キーを設定します
Auto_increment 主キー, #メインキーを設定します
name varchar (20) Not null デフォルト 'unknown', #デフォルト値を設定します
Department_id int NULL,
possition_id int Null,
U nique (Department_id, posity_id) #一意の値を設定します
);
3) 削除
mysql>
drop tablederat_pos;
drop tableDepartment;
drop table s_position;
drop tablestafferdatabasestaffer;
9. 構造を変更します
mysql>
#Table Position を追加します列テスト
alter tableposition add(test char(10));
#テーブル位置変更 列テスト
alter tableposition edit test char(20) not null;
#テーブル位置変更 列テスト デフォルト値
alter tableposition alter test setdefault 'system';
#テーブルの位置はテストのデフォルト値を削除します
alter tableposition alter test dropdefault;
#テーブルの位置は列testを削除します

#TableDepart_pos プライマリキーを追加
alter tablederat_pos addプライマリキー PK_Depart_pos (Department_id,position_id);
10. 操作データ
#テーブルDepartmentを挿入
insert intoDepartment(name,description)values('システム部門','システム部門' ) ;
部門(名前,説明) 値('広報部','広報部');
部門(名前,説明) 値('顧客サービス部門','顧客サービス部門');
部門(名前,説明) 値('財務部門','財務部門');
部門(名前,説明) 値('テスト部門','テスト部門');
#テーブル s_position に挿入
s_position(name ,description) の値に挿入 ('director','director');
s_position(name,description) の値('manager','manager');
s_position(name,description) の値に挿入('一般従業員', '一般従業員');
#Department_pos にテーブルを挿入
部署 ID に挿入 (Department_id, Position_id)
a.id 部門 ID、B.id 職位 ID を選択
sition b; # # テーブル Staffer を挿入
スタッフに挿入(名前 ,部門ID,ポジションID) 値('陳達志',1,1);
スタッフに挿入(名前,部門ID,位置_ID) 値('李文斌',1,2);
スタッフに挿入(名前,部門_ID) ,position_id) 値 ('馬佳',1,3);
スタッファー(名前,部門ID,ポジションID) に挿入 値('康志強',5,1);
スタッファー(名前,部門ID,ポジションID) 値に挿入('Yang Yuru', 4,1);
11. クエリと削除操作
#システム部門の担当者と役職を表示します
スタッフ a,部門から a.name,b.name 部門名,c.name 役職名
を選択しますb,s_position c
ここで、a. 部門 ID=b.id および a.position_id=c.id および b.name='システム部門';
# システム部門の人数を表示します
select count(*) from Staffer a,Department b
where a.Department_id=b.id and b.name='システム部門'
#各部門の人数を表示
select count(*) cou,b.name
from スタッフ a,部門 b
ここで、 a.Department_id=b.id
b.name でグループ化します ;
#カスタマーサービス部門を削除します
name='カスタマーサービス部門'; バックアップとリカバリの部門から削除します
データベーススタッフをバックアップしますを使用する - ' s ' s ' s T 空のライブラリ Staffer を作成する必要があります
C: MySQLBINMYSQL -UROOT Staffer & LT; OT -Databases Staffer & GT; Staffer .sql
mysql -uroot -proot >e:staffer.sql
ただし、この場合、staffer ライブラリはシステムに存在できず、他の名前のデータベースはインポートできません。
もちろん、staffer を手動で変更することもできます。 SQL ファイル
13. 本文より データベースにデータをインポートします
1) c:mysqlbinmysqlimport ツールを使用します
このツールの機能は、
Staffer など、ファイル拡張子のない同じ名前のテーブルにファイルをインポートすることです。 txt にある、staffer が Staffer テーブルにインポートされます
共通オプション 機能は次のとおりです
-d または --delete は、新しいデータがデータテーブルにインポートされる前に、データテーブル内のすべての情報を削除します
-f または --force かどうかに関係なくエラーが発生した場合、mysqlimport はデータの挿入を強制的に続行します
-i または --ignore mysqlimport は同じ一意の
キーワードを持つ行をスキップまたは無視し、インポートされたファイル内のデータは無視されます。
-l または -lock-tables は、データが挿入される前にテーブルをロックします。これにより、
データベースを更新するときにユーザーのクエリや更新が影響を受けるのを防ぎます。
-r または -replace このオプションは、-i オプションの逆の効果があります。このオプションは
を置き換えます。テーブル内に同じ一意のキーを持つレコードがあります。
--fields-enclosed-by= char
テキスト ファイル内のデータ レコードを囲む方法を指定します。多くの場合、
data は二重引用符で囲まれます。 デフォルトでは、データは文字で囲まれていません。
--fields-terminated- by=char
ピリオドで区切られたファイルでは、各データの値間の区切り文字を指定します。
区切り文字はピリオドです。このオプションを使用して、データ間の区切り文字を指定できます。
デフォルトの区切り文字は Tab です
--lines-terminated-by=str
このオプションは、テキスト ファイル内の行間のデータを区切る文字列
または文字を指定します。 デフォルトでは、mysqlimport は行区切り文字として改行を使用します。
単一の文字を文字列で置き換えることを選択できます:
改行または復帰。
mysqlimport コマンドで一般的に使用されるオプションには、バージョン (バージョン) を表示する -v 、パスワード (パスワード) の入力を求める -p などがあります。
このツールには一部の列を無視できないため、データのインポートに多大な問題が発生します。
このフィールドを手動で設定することもできますが、説明のつかない結果が表示されます。次のように、eドライブに保存されている部門_no.txt、間隔はタブ文字t
1010
1111224
を除外します。 ,
Windows のせいなのかはわかりません
2) データ INFILE file_name を table_name(column1_name,column2_name) に読み込みます
このコマンドは、mysql> プロンプトで使用されます。利点は、インポートする列を指定できることです。この例は、インポートするために次のとおりです。インポートするには、Windowsの問題なのか、中国の問題であるかはわかりません。私たちが望むものではないので、これらのツールは注意して使用してください
MySQL を入力します: mysql -user -ppassword - -port=3307
1: SHOW ステートメントを使用して、サーバー上に現在存在するデータベースを確認します:
mysql> 2: 2. データベース MYSQLDATA を作成します
mysql> データベース MYSQLDATA を作成します
3: 作成したデータベース
mysql> を選択します (Enter キーを押すと、操作が成功したことを示します)。 : 現在のデータベースにどのようなテーブルが存在するかを確認します
mysql> SHOW TABLES;
5: データベース テーブルを作成します
mysql> Create TABLE MYTABLE (name VARCHAR(20), *** CHAR(1));
6: 構造を表示しますテーブルの:
mysql> DESCRIBE MYTABLE;
7: テーブルにレコードを追加します
mysql> MYTABLE 値に挿入します ("hyq" ,"M");
8: テキスト モードでデータベース テーブルにデータを読み込みます (例: D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;
9: .sql ファイルのインポート コマンド (例: D:/mysql.sql)
mysql> ;データベースを使用;
mysql>source d:/mysql.sql;
10: テーブルを削除
mysql>drop TABLE MYTABLE;
11: テーブルをクリア
mysql> ;MYTABLE から削除;
12: テーブル内のデータを更新
mysql> update MYTABLE set ***="f" where name='hyq';
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SETcol_name1=expr1 [,col_name2= expr2 ...]
[WHERE where_定義]
[ORDER BY . ..]
[LIMIT rows]
or
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name [, tbl_name ...]
SETcol_name1=expr1 [,col_name2= expr2 ...]
[WHERE where_定義]
UPDATE 列を更新します既存のテーブル行の新しい値。 SET 句は、どの列を変更するか、およびそれらの列に与える値を示します。 WHERE
句が指定されている場合、更新する行を指定します。それ以外の場合は、すべての行が更新されます。 ORDER BY 句を指定すると、指定した順序で行が更新されます。
キーワード LOW_PRIORITY を指定すると、他のクライアントがテーブルを読み取らなくなるまで UPDATE の実行が遅延されます。
キーワード IGNORE を指定すると、更新処理中に重複キーエラーが発生しても、更新ステートメントは異常終了しません。競合の原因となっている行は更新されません。
式内の tbl_name から列にアクセスする場合、UPDATE は列の現在の値を使用します。たとえば、次のステートメントは、age 列の値を現在の値に 1 を加えた値に設定します。
mysql> UPDATE persondata SET age=age+1;
UPDATE 割り当ては左から右に評価されます。たとえば、次のステートメントは、age カラムをその値の 2 倍に設定し、その後 1 を加算します。
mysql>UPDATE persondata SET age=age*2, age=age+1;これは更新されません。
UPDATE は、変更されたレコードの実際の行数を返します。 MySQL 3.22 以降では、C API 関数 mysql_info() は、更新された一致した行の数と、UPDATE 中に発生した警告の数を返します。
MySQL 3.23 では、LIMIT # を使用して、指定された数の行のみが変更されるようにすることができます。
ORDER BY 句が使用されている場合 (MySQL 4.0.0 以降でサポートされています)、行は指定された順序で更新されます。これは実際には LIMIT
と組み合わせた場合にのみ役立ちます。
MySQL 4.0.4 以降では、複数のテーブルを含む UPDATE 操作を実行することもできます:
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
注: 複数のテーブル UPDATE は使用できませんORDER BYまたはLIMIT。
キーワード: mysql
開始: net start mySql;
入力: mysql -u root -p/mysql -h localhost -u root -p データベース名;
データベースの一覧表示: データベースの表示;
データベースの選択: データベース名を使用;
列のうちテーブル: show tables;
テーブル列の属性を表示: show columns from tableName;
データベースを作成: ソース fileName.txt
一致する文字: 任意の文字を表すにはワイルドカード _ を使用でき、任意の文字列を表すには % を使用できます。 ;
フィールドを追加する:alter table tabelName add column fieldName dateType;
複数のフィールドを追加する: alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
複数行のコマンド入力: 単語を挿入または変更するときに改行しないように注意してください。フィールドの文字列は複数行に展開されます。そうでない場合は、ハードリターンがデータに保存されます。
管理者アカウントを追加します: *.* にすべてを [email=user@localhost]user@localhost[ /email] は「password」で識別されます。
各ステートメントを入力した後、最後にセミコロン「;」を追加するか、「g」を追加します。
現在のユーザーをクエリします。select user(); ;
データベースのバージョンを問い合わせる:select version();
現在使用しているデータベースを問い合わせる:selectdatabase();
1.student_courseデータベースのstudentsデータテーブルを削除します:
rm -fstudent_course/students.*
2.戻るデータベースをバックアップします: (データベース テストをバックアップします)
Mysqldump -u root -p test>c:test.txt
テーブルをバックアップします: (テスト データベースの下にある mytable テーブルをバックアップします)
Mysqldump -u root -p test mytable>c:test.txt
バックアップデータをデータベースにインポートします: (テストデータベースにインポートし直します)
mysql -u root -p test
3. 一時テーブルを作成します: (一時テーブル zengchao を作成します)
一時テーブル zengchao( name varchar(10));
4.作成 まずテーブルが存在するかどうかを判断します
存在しない場合はcreate table students(...);
5.既存のテーブルからテーブルの構造をコピーします
create table table2 select * from table1 where 1<>1;
6. テーブルをコピー
create table table2 select * from table1;
7. テーブルの名前を変更
alter table table1 rename as table2;
8. 列の型を変更
alter table table1 modify id int unsigned;//カラムidの型をint unsignedに変更します
alter table table1change id sid int unsigned;//カラムidの名前をsidに変更し、属性をint unsignedに変更します
9.インデックスの作成
alter table table1 addindex ind_id (id);
createindex ind_id on table1 (id);
create uniqueindex ind_id on table1 (id);//一意のインデックスを作成します
10. インデックスを削除します
dropindex idx_id on table1;
alter table table1dropindex ind_id;
11. ユニオン文字以上の列(列IDを「:」で列名を「=」で繋ぐ)
学生からconcat(id,':',name,'=')を選択;
12. 制限(10~20項目を選択)< ;最初のレコードセットの数は0です>
select * from students order by id limit 9,10;
13. MySQLでサポートされていない機能
トランザクション、ビュー、外部キーと参照整合性、ストアド プロシージャとトリガー
14. MySQL はインデックス操作記号を使用します
<,<=,>=,>,=,between,in、% や _ で始まる like なし
15.インデックスを使用するデメリット
1) データの追加、削除、変更の速度が低下します。インデックスが多すぎると、クエリ オプティマイザーの負荷が増加します。その結果、最適なクエリ プランを選択できなくなります。
16. インデックスの効率を分析します。方法: 一般的な SQL ステートメントの前に Explain を追加します。
分析結果の意味: 1) テーブル: テーブル名; 2) タイプ: 接続タイプ (ALL/Range/Ref)。このうち、ref が最も理想的です。
3) possible_keys: 使用できるインデックス名をクエリします。
4) key: 実際に使用されるインデックスの長さ (バイト) ;
6) ref : 列名または「const」を表示します (意味がわかりません);
7) rows: 正しい結果を見つける前に MySQL がスキャンする必要があると考える行数を表示します。 MySQL の提案;
17. 短い固定長カラムを使用する
1) できるだけ短いデータ型を使用する; 2) できる限り固定長のデータ型を使用する;
a) varchar の代わりに char を使用する。データ処理は可変長データ処理よりも高速です。
b) 頻繁に変更されるテーブルの場合、ディスクが断片化しやすく、データベース全体のパフォーマンスに影響します。
c) データ テーブルがクラッシュした場合、テーブルは固定長データ行を使用すると、再構築が容易になります。固定長データ行を使用すると、各レコードの開始位置は固定レコード長の倍数になるため、簡単に検出できますが、可変長データ行を使用すると必ずしもそうとは限りません
d) MyISAM タイプのデータ テーブルの場合、固定長データ列に変換するとパフォーマンスが向上しますが、多くのスペースも消費します
18. not null と enum を使用します
データをより速く出力できるように、列を not null として定義するようにしてください。必要なスペースが少なく、クエリを実行するときに、クエリを最適化するために、MySQL は特殊なケース、つまり null 値があるかどうかを確認する必要がありません。
カラムに次のような限られた数の特定の値のみが含まれる場合。性別、有効かどうか、登録年など。この場合、MySQL はすべての enum 値がシステム内の識別値で表されるため、enum 列の値に変換することを検討する必要があります。
19. テーブルの最適化を使用する
頻繁に変更されるテーブルの場合、断片化が発生しやすいため、データベースのクエリ時により多くのディスク ブロックを読み取る必要があり、クエリのパフォーマンスが低下します。可変長のテーブルにはすべて、ディスクの断片化の問題が発生します。この問題は、次の場合に非常に重要です。 BLOB データ型は、そのサイズが非常に多様であるため、際立っています。これは最適化を使用して行うことができます テーブルをデフラグし、データベースのパフォーマンスが低下しないようにし、断片化の影響を受けるデータ テーブルを最適化します。最適化する table は、MyISAM および BDB タイプのデータ テーブルに使用できます。実際、どのデフラグ方法でも、mysqldump を使用してデータ テーブルをダンプし、ダンプされたファイルを使用してデータを再構築します。 表;
20. プロシージャanalyse()を使用する
プロシージャanalyse()を使用すると、selectステートメントの後に次のように追加するだけです。 fromstudentsprocedureanalyze();
select*fromstudentsprocedureanalyze(16,256);
2番目のステートメントは、制限がない場合、プロシージャanalyze()が16を超える値または256バイトを超える列挙型を推奨しないことを要求します。 、出力 非常に長くなる可能性があります
21. クエリ キャッシュの使用
1) クエリ キャッシュの仕組み:
select ステートメントが初めて実行されると、サーバーはクエリのテキスト コンテンツとクエリ結果を記憶し、それらを保存します。次回このステートメントが検出されると、データ テーブルが更新されるときに結果がキャッシュから直接返され、データ テーブルのキャッシュされたクエリはすべて無効になり、破棄されます。
2) キャッシュパラメータを設定します:
変数: query_cache _type、クエリキャッシュ操作モード。 3 つのモードがあります。0: キャッシュなし、1: クエリをキャッシュします (選択で使用しない場合)。 sql_no_cache から開始; 2: 必要に応じて、select sql_cache で始まるクエリのみをキャッシュします。 query_cache_size: クエリ キャッシュの最大結果セット サイズを設定します。この値より大きいものはキャッシュされません。
22. ハードウェアを調整します
1) マシンにメモリを追加します。
2) より高速なハードドライブを追加して、I/O 待機時間を短縮します。最も重要な要素は遅いですが、ヘッドが配置されると、トラックからの読み取りは非常に高速になります。 3) ディスク アクティビティを別の物理ハードディスク デバイスに再分散します。同じ物理デバイスの異なるパーティションは、同じ物理リソース (ヘッド) をめぐって競合するため、使用とは異なります。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。