このレコードのデータベース操作でいくつかの問題が発生します。
中国のゴミ問題の最初に、挿入
あなたが挿入されたデータは、中国の場合は、エラーメッセージが表示され、CMDウィンドウでテーブルにデータを挿入する場合は、ソフトウェアの操作を無視してください。。。
あなたはCMDウィンドウにデータを入力できるように、エラー発生は、CMDウィンドウは、GBKのエンコーディングを使用されているGBK符号化、およびコード化されたデフォルトのデータベースはUTF8ですので、コーディングの問題があります。
私たちは、データベース関連のコードセットを表示する命令を入力することができます。
show variables like 'character%';
あなたは、関連するすべてのコード・セット・データベースがUTF8であることがわかります。
それでは、どのようにそれを挿入するゴミ問題を解決するには?
私たちが考える最初の事は、コーディング挿入データを変更することですが、CMDウィンドウをコードする改変することはできませんので、我々はクライアントコード、すなわち接続、クライアントは、これら3つのコードの結果を変更する必要があります。
私たちは、クライアントのコードセットを変更するための指示を入力してください。
set names gbk;
命令はまた、上記の3つの符号化を変更します。
編集後、我々はコードセットでルックを再。
正常に変更。私たちは再び改訂中国のデータは、問題を挿入しません。我々は、CMDウィンドウを再オープンするときしかし、挿入、中国の問題が浮上しています。この方法は、ただ単に現在のCMDウィンドウのエンコードを変更説明するので、一時的にのみ、現在のコード・セット・ウィンドウを設定します。
今、私は一度、すべての方法を紹介します。
データベースの設定ファイルであるMySQLインストールディレクトリのmy.iniファイル、で見つかった、我々はそれを開きます。
だから[mysqlの]、第55行の印である
ことは、次のクライアント構成のために、
そして最初の67行を[mysqldを]は
構成されたサーバーの構成です。
私達はちょうど[mysqlの]の下にする必要がdefault-character-set=utf8
変更default-character-set=gbk
することができます。
その後、我々は、MySQLサービスを再起動します。
まず、入力
net stop mysql;
次に入力します
net start mysql
次に、我々は、MySQLへのログオンコードセットを表示し、あなたは成功コードセットが変更されて見つけるので、文字化けの問題が解決されて挿入されます。
第二に、問題のいくつかの更新文の更新
表を作成し、データを初期化してみましょう。
create table demo(
name varchar(20),
money varchar(20)
);
insert into demo values('zs','1000');
今、私たちは、データを変更します。
update demo set money = '2000' where name = 'zs';
この操作は、私たちは何の問題もないと信じて、私はそれは、更新文を書くでしょうか?
update demo set money = '3000' where name = 'ZS';
それともこれもそれを書くのですか?
update demo set money = '4000' where name = 'zs ';
これは、我々は2つのSQL文を実行するものです。
あなたは力にこれらの2つのSQL文を見つけるだろうが、多くの人々は、これらの2つのSQL文は問題があると思いますが、それは正常に実行することができます。
実際には、これはバグmysqlのある、そして、問題のこのSQL文から、どのように我々は、mysqlはそれを検出することができますか?
私たちは、SQL文を書くことができます。
update demo set money = '2000' where binary name = 'zs';
唯一のバイナリを追加する必要が比較する前に、我々はそれをテストしました。
修正失敗した上でこのような大文字の名前。
第三に、問題のいくつかは、文の削除を削除します
データがテーブルの上に削除されると、我々は2つの方法があります。
まず、
delete from 表名
第二、
truncate 表名
これら二つの文のと同じ効果が、彼らは、どのようなそれとの違い異なっていますか?
データを削除するには、TRUNCATE TABLE文を使用して、削除されたレコードは、トランザクション管理から回復可能ではありません。仕組み:テーブル全体を削除し、再作成。
トランザクション内のテーブルのデータを削除するには、delete文を使用して、彼らはトランザクション管理すること、および削除することができ、データはロールバックすることができます。原則:データレコードを削除するには、行ずつ。
だから、以上のパフォーマンスのすべてのレコードを削除切り捨て、削除することが優れています。
第四に、select文の問題のいくつかを照会します
のは、そのデータを初期化し、テーブルを作成してみましょう。
create table stu(
name varchar(20),
math varchar(20),
english varchar(20)
);
insert into stu values('张三','80','65');
insert into stu values('李四','85','75');
insert into stu values('王五','70','95');
そして、テーブルのデータを照会します。
select * from stu;
この文は、すべてのそれとあまりにも精通しています。
そして、次のいくつかのニーズがあります。
1、すべての英語の生徒の得点の10点のポイントやお問い合わせの専門知識
我々はこれを行うことができます。
select name,english + 10 from stu;
各学生のスコアのための2、統計
select name,math + english from stu;
3、エイリアスを使用すると、学生の等級を表す
だけの時間を照会生徒のスコアでは、列名は、常に非常に良い感じを与えるので、私たちはニックネームから列名を与えることができます。
select name,math + english as 总分 from stu;
ニックネームから、このような列名を省略することができる場合には、例えば:
select name 姓名 from stu;
そこでここでは、注意を払う必要があります。
select name math from stu;
select name,math from stu;
上記の2つのSQLステートメントを守って、あなただけのコンマ差がありますが、二つの文の効果は完全に異なっています。
学生の名前と列の名前数学の名前を照会する:最初の文は、実際にその役割として省略されています。
第二文の役割:クエリ名とカラム数学。
注意:クエリので、とても上記の文のすべては、元のデータへの影響はありません。
挙げるべきいくつかの場所があります:
データベース、ヌル代わっ1/2、ので、任意の発現とヌル論理演算結果に偽であり、
論理演算は、AND、OR ------人優先度の高いですか?
select * from stu where 2 >1 or 2 >3 and 3 > 4;
その記事のSQL文の探索データの実装を照会することができ、かつ命令が最初に実行され、高い優先順位よりか。
機能をグループ化するクエリの導入をグループ化を選択:
COUNTは、クエリ結果のレコード数を返す
構文:SELECT COUNT(*)テーブル名から。
データ集計の合計
構文:テーブルからの選択日(フィールド名);
ヌル和総和は、コンピューティングに関与していません
データ平均化平均
構文を:テーブルからAVG(フィールド名)を選択します。
データの最大値と最小値を求める最大/最小
構文は:MAX(フィールド名)を選択し、テーブルから、ミニ(フィールド名);
最後の注意:クエリをグループ化する過程で制約を追加するために、我々は持つ、同じ構文と場所を使用する必要がありますので、グループ化機能は、使用することはできません。