注意が必要なデータベース操作の問題

このレコードのデータベース操作でいくつかの問題が発生します。

中国のゴミ問題の最初に、挿入

あなたが挿入されたデータは、中国の場合は、エラーメッセージが表示され、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(フィールド名)を選択し、テーブルから、ミニ(フィールド名);

最後の注意:クエリをグループ化する過程で制約を追加するために、我々は持つ、同じ構文と場所を使用する必要がありますので、グループ化機能は、使用することはできません。

おすすめ

転載: www.cnblogs.com/blizzawang/p/11411705.html