CREATE TABLE等で出てくる'PRIMARY KEY'と'UNIQUE()'の違いが分かりません。
どちらも他の行と同じ値を登録させないためのものと認識しています。
どのように使い分けるのでしょうか。

あとINDEX()について教えてください。
これは挿入や更新のたびに、INDEXにした列の値の順に整列され、探索が高速になるものと認識しています。
これは'PRIMARY KEY'や'UNIQUE()'の列に対してもやらないといけないのですか。
テーブルは'PRIMARY KEY'や'UNIQUE()'に設定した列の値を基に随時整列されていると思っていたのですが・・・。

あと複数の列へINDEX()を設定することはできるのでしょうか。
その場合、どの列の値が優先的に整列されるのでしょうか。
複数列へINDEX()を設定するCREATE TABLEの書き方を、よろしければ教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

>自分で調べるのと、人に聞くのと、どっちが早いかは、人によって違うと思います。

それは私が判断します。

ここは、「自分なりに調べて、分からない部分を具体的に示して質問する」ことがルールになっています。
他人に調べてもらいたいなら、「はてな」の人力検索などを利用してみては?

>しかしINDEXについては色んな列に個別に設定できるのでまだ意味不明です
>CREATE TABLE test4(a INT, b INT, c INT, INDEX(a), INDEX(b, c));
>例えばこのようなテーブルを作成した場合、テーブル全体がどのように整列されるのか

テーブル自体は、整列なんてされませんよ?インデクス上で、キー値が整列されるだけです。
RDBMSによっては、primary keyにクラスタリングといった機能を持たせたりして、なるべくその近傍にデータを格納するといった機能を実装しているものもありますけど。

例えば、学生なり、社員などを管理するテーブルを考えてみましょう。
学生idや社員idは、一人に1個、その人を識別するためのものだから、primary keyにするでしょう。
また、それ以外に各人で一意にしたい情報があれば、uniqueを定義することになります。
また、氏名などは同姓同名がいる可能性があるので、もしそういったインデクスを定義する場合は、create table文のindex句、あるいはcreate index文で定義することになります。

なお、インデクスは、検索条件によるデータの絞込み、order by、group by、distinctなどで必要になるソートで「作業メモリやファイルを使用したソート抑止」などで活用できると、大きな性能向上ができます。その一方で、追加、削除、キー値の更新などでは、性能劣化になるため、無闇にインデクスを作成することは避ける必要があります。

次のリンクは、インデクスの構造、どういう操作で有効かについて、Oracleを例にした記事です。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …

次のリンクは、MySQLでのインデクスの有効利用方法などについて、マニュアル記載箇所です。
http://dev.mysql.com/doc/refman/5.1/ja/query-spe …

参考URL:http://dev.mysql.com/doc/refman/5.1/ja/optimizat …
    • good
    • 0
この回答へのお礼

サイトのルールをざっと見直したけどそんなルールは見あたりませんでしたよ。
多分そんな面倒臭いルールにはなってないと思いますよ・・・。
だって、日常の、ふと気になったこととかでも質問できますもん。
ちなみに、質問者の過ちをいろいろ指摘して傷つけることは禁止されてました
\(^o^)/

まあ文句を言うのはここまでにして、
chukenkenkouさん、再返信ありがとうございます。
テーブル自体は、整列なんてされないとのことですが、これについては
No.2のchukenkenkouさんの回答文を読んだ時点でなんとなく話がかみ合わない気はしておりました。。。
とにかくINDEXを設定した列をWHEREやORDER BYで使えば早くなるということは理解できました。
逆に追加、削除などを行うと性能劣化につながることもなんとなく理解できました。
あとはテストを重ねて、どっちを取るかですね!

ご紹介いただいたリンクについては・・・
ごめんなさい・・・また集中力が上がったときに・・・

お礼日時:2009/05/17 02:19

追記です。



>CREATE TABLE test4(a INT, b INT, c INT, INDEX(a), INDEX(b, c));
>例えばこのようなテーブルを作成した場合、テーブル全体がどのように整列されるのか

テーブルの行データ自体は、どのような格納位置になるかは、RDBMSにより保証されません。検索時に、order by指定がなければ、検索時の並びも保証されません。
一方、a列単独と、(b,c)列には、それぞれ重複可のインデクスが定義されているので、それぞれのインデクス上では、キー値が整列された形で管理されています。

a単独のインデクスは、例えば次のような検索で、利用されます。
select * from test4 where a=100
select * from test4 where a between 101 and 200
select * from test4 where a between 101 and 200 order by a

(b,c)のインデクスは、例えば次のような検索で、利用されます。
select * from test4 where b=100
select * from test4 where b=100 and c between 1 and 10
select * from test4 where b=100 order by b,c

なお、母体データ件数が少ない場合や、重複値が多量に発生している場合は、RDBMS側が行データから探した方が早いと判断され、インデクスを使わない場合もあります。
この辺は、EXPLAINなどで確認しながら、チューニングすることになります。
    • good
    • 0
この回答へのお礼

ORDER BYがないときは主キーの順に整列されると思っていました!!!
これからはORDER BYを使う癖をつけないとダメですね!
それぞれのインデクスがどのような場面で利用されるかも理解できました!
最後の興味深い話題については、時と場合によっては、インデクスを使用せずに検索されるということですね!
しかし、まあ、そんな事は気にせず、検索条件でよく使う列についてはINDEXを設定するのが吉だと思いました!

お礼日時:2009/05/17 02:36

すぐに自分でも、調べられる内容だと思うのですが?



>CREATE TABLE等で出てくる'PRIMARY KEY'と'UNIQUE()'の違い

primary keyは、表に0~1個しか定義できず、null値は許されません。
uniqueは、表に0個以上で複数定義でき、nullを許すかどうかはnot null指定をするかどうかにより異なります。

どちらも重複チェックを効率的に行うため、主要なRDBMSでは内部的にインデクスが作成されます。

unique指定時、「null値は、重複値とは扱われない」というのが主流なのですが、SQL Serverでは、重複値と扱うといった例もあります。

また、参照制約(外部キー制約)を定義する場合、被参照表(親)にはprimary keyを定義し、参照表(子)にはforeign keyを定義します。しかし、primary keyがなくても、uniqueでnot nullの定義があれば、それで代用してくれるといった形でRDBMSで実装されていたります。

>あとINDEX()について教えてください。

重複可能なインデクスであり、create index文と意味合いとしては同じであり、create table文内で行うか、create index文内で行うかといった違いがあります。

>これは挿入や更新のたびに、INDEXにした列の値の順に整列され、探索が高速になるものと認識

何を意味しているのか分かりませんが、インデクス定義時にインデクス情報が主にB-TREE構造で作成されます。追加、更新、削除などはB-TREE構造を維持した状態で行われます。そのため、インデクスを有効利用した検索での性能は一定に保たれます。一方で、キーの追加に備えた空き領域があるため、中間キー値や同じキー値の削除&追加といった操作が殆どないような場合では、その領域はずっと使用されないことになります。また、キー値が頻繁に更新されるような場合も、無駄な領域が多くなります。
そのため、定期的にインデクスを再作成する必要があります。
    • good
    • 0
この回答へのお礼

chukenkenkouさん、ご回答ありがとうございます。
お2人のご回答を参考にしつつ自分なりに調査し、色々知ることができました。
今の私の認識はNo.1のtest001さんのお礼欄へ記載したとおりです。
INDEXについてはもうちょっと情報を収集していく必要があります。

しかしそんなことよりも、あなたに特別に言いたいのは、

>すぐに自分でも、調べられる内容だと思うのですが?

このような発言はちょっと馬鹿にされた感じがして、傷つくのでやめてほしいということです。
自分で調べるのと、人に聞くのと、どっちが早いかは、人によって違うと思います。
それは私が判断します。

お礼日時:2009/05/16 13:20

マニュアルが日本語訳されているので参照してください。



CREATE TABLE 構文
http://dev.mysql.com/doc/refman/5.1/ja/create-ta …

以下、引用
************************************************************
PRIMARY KEY は、全てのキー カラムが NOT NULL として定義されなければいけないユニーク インデックスです。もしそれらが NOT NULL として明示的に宣言されなければ、MySQL はそれらを暗示的に(そして静かに)宣言します。1つのテーブルは1つの PRIMARY KEY しか持つ事ができません。もし PRIMARY KEY が無いのにアプリケーションがテーブル内で PRIMARY KEY を要求したら、MySQL は PRIMARY KEY として NULL カラムを持たない最初の UNIQUE インデックスを返します。
************************************************************

INDEX の作成は CREATE INDEX 文です。

CREATE INDEX 構文
http://dev.mysql.com/doc/refman/5.1/ja/create-in …

複数列への INDEX も作成可能です。
複合INDEXについて調べてみてください。
カラム指定の順番がキモです。
http://dev.mysql.com/doc/refman/5.1/ja/mysql-ind …

参考URL:http://dev.mysql.com/doc/refman/5.1/ja/create-table.html,http://dev.mysql.com/doc/refman/5.1/ja/mysql-ind …
    • good
    • 0
この回答へのお礼

test001さん、ご回答ありがとうございます。
PRIMARY KEYにすればNOT NULLとしなくても自動的にNOT NULLになるのですね!

あと実験よりPRIMARY KEYやUNIQUEは自動的にインデックスになることを知りました。
ですので次の3つのCREATE文はどれもインデックスがつきます。

CREATE TABLE test1(a INT, b INT, c INT, PRIMARY KEY(a, b, c));
CREATE TABLE test2(a INT, b INT, c INT, UNIQUE(a, b, c));
CREATE TABLE test3(a INT, b INT, c INT, INDEX(a, b, c));

この例ではtest1、2、3の順で制御が厳しく、test3については特に制御はなく、どんな値でも入る
test1とtest2の違いはNULLがOKかどうか
さらにUNIQUEは1テーブルでいくつも定義できる
といったところでしょうか

しかしINDEXについては色んな列に個別に設定できるのでまだ意味不明です

CREATE TABLE test4(a INT, b INT, c INT, INDEX(a), INDEX(b, c));
例えばこのようなテーブルを作成した場合、テーブル全体がどのように整列されるのか、ちんぷんかんです・・・

お礼日時:2009/05/16 13:02

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qあったら欲しいこんな化粧品

こんにちわ。
とある化粧品会社に勤務するものです。
最近はどこの会社も似たような商品ばかりで面白くありません。
私自身も業界の常識(定説?)でアタマが固くなってしまい
なかなかユニークなアイデアが出てきません。
そこでご相談ですが、
「こんな化粧品欲しかったんでけど、どこにも無いの(怒)!」
「(化粧品のカバー範囲で)こんなことに困ってるの。。」
など率直なご意見を聞かせてください。
ぜひお返事おまちしております。

Aベストアンサー

私が欲しいなぁと思うモノをいくつか書きますね。
化粧品の範疇になるのかわからないですが・・・。

1自分の肌色に合わせられるファンデーション。
 小学校の絵の具パレットみたいなのに、色の濃さが違うファンデと、
 マットな質感とパールな質感の出せる透明ファンデと、下地があって、
 色味をその日の顔色によってお疲れの時とかに併せて調合する。
 ピンク系・イエロー系・オークル系と種類があればあとは悩まなくても
 大丈夫だし、同じ人でもかお色って違ったりするのでこういうんは欲しいです。

2緩くても絶対途中で折れないリップクリーム
 途中で折れるのがイヤで、今はジェリータイプを使っていますが、
 本当は、スティックタイプを携帯したい!口紅も同じ。

3マットになるandパールになる口紅
 マットな口紅をパールっぽく、パールの口紅をマットにできちゃう口紅。
 グロスのいかにも塗りましたではなくて、口紅に混ぜたり出来ちゃうものが
 良いです。

4ペーパータイプじゃないメイク落とし。
 外出先でのメイク直しに使えるメイク落としは、ペーパーが多いですよね。
 結構私みたいに敏感肌だとすれちゃったりで使えないので、繰り出しジェル
 タイプとか、ペンシルタイプとか、綿棒にしみこませて携帯できちゃうものが
 欲しいです。

5詰め替え商品
 ヘアウォーター何かにあるような、化粧水・保湿・そして何よりデオドラントの
 詰替用が欲しいんです。容器をほかすのがなんだか心苦しいし、デオドラントは 特に、好きなメーカーのミニタイプでも、携帯するにはサイズが大きいから困っ ちゃう。

6リキッドファンデ用ケース
 リキッドのファンデやジェルファンデを使っています。でも、一回分がちょっと 多く出ちゃったりすると捨てないとダメ?と思ったりして、イヤなんです。
 なので、粉ファンデの空きケースに出すようにしていますが、それだとケースを 閉じても漏れちゃうし、漏れないように置いて置いても固まっちゃうし。
 チューブ型を出して、余ってもそのままを保管できちゃうケースをリキッドファ ンデを売るときに付けて欲しい。

7お安いけど、保湿力のしっとりする下地
 お高いんです。下地。保湿力がしっとりしちゃう感じの下地欲しいな。1200円くらいで。

8汚れの落ちやすいスポンジ。
 ファンデを買うときに二・三個ついてくると嬉しいくらい、一個ではすぐ
 換えが必要になります。でも、すぐ洗えないこともあると汚れ落ちが悪くなって 廃棄になっちゃうのが多いです。

9まつげの長さが揃うマスカラ
 私はまつげが眉じりに向けてもの凄く極端に長さが足りなくなります。
 繊維入りを付けるんですが、長いところには多くついちゃうし、どうしても
 バランスが悪くなるので、短いところにはしっかりついて元々長いところに
 は薄付きになってくれるような長さが合う感じでつけられたらなぁって
 いつも思いながら四苦八苦します。

10マスカラやライナーが失敗したとき、修正しても瞼の周りは、どうも黒ずん
 じゃう。そんな風にならないマスカラやライナーが欲しいな。

いっぱい書きましたが、お役に立ったかどうか・・・。
既存だったらゴメンナサイ。

私が欲しいなぁと思うモノをいくつか書きますね。
化粧品の範疇になるのかわからないですが・・・。

1自分の肌色に合わせられるファンデーション。
 小学校の絵の具パレットみたいなのに、色の濃さが違うファンデと、
 マットな質感とパールな質感の出せる透明ファンデと、下地があって、
 色味をその日の顔色によってお疲れの時とかに併せて調合する。
 ピンク系・イエロー系・オークル系と種類があればあとは悩まなくても
 大丈夫だし、同じ人でもかお色って違ったりするのでこういうんは欲しい...続きを読む

Q#1062 - Duplicate entry '1' for key 'PRIMARY'

利用していた幾つかのテーブルの中身だけを消去してしまいました。

ダンプデータを取ってあったので、復元させようとしたら、
下記エラーとなりました。何回か試している内、最終的にはうまくいったのですが、下記エラーは、どういう意味だったのでしょうか。
#1062 - Duplicate entry '1' for key 'PRIMARY'

<補足>
・テーブル自体は消失していなかったので、データが消失したテーブル部分のみ、phpMyAdminのSQL欄にSQL文を書いて、テーブルごとにINSERT 文を実行した。

<知りたいこと>
・エラーの意味

Aベストアンサー

プライマリーキーに対して"1"というデータがすでに存在していて
競合してますってことですね

プライマリーキーはユニークを確保するための検索キーなので
同一値はもてません

Q今まで、ニキビなんて他人ごとだったので、適当に化粧品を選んでた私。

今まで、ニキビなんて他人ごとだったので、適当に化粧品を選んでた私。
20代後半の頃から、肌荒れに始まり、シミが目立ち始め、ついにニキビになってしまった。
皮膚科の先生は、今までの化粧品でいいと言うけど、肌の老化を防ぎたい。
ノンアルコールや無添加化粧品・自然派化粧品など、肌に優しい化粧品があるみたいですが、ニキビや肌荒れにはどんな化粧品がいいですか?
出来るなら手頃な値段の化粧品がいいのですが…。

Aベストアンサー

ニキビとえば、エテュセが有名ですね。
だいたいどこの化粧品屋さんにも入ってますね。
http://www.ettusais.co.jp/ja/main

私はけっこうファンケルを使ってます。
粉の洗顔なんですが、ネットで泡立てて優しく洗うとけっこういいですよ~

自然派化粧品はあまりおすすめしません。
高いし、自然派な分、効果も優しい。
肌の丈夫な人か、ホントに敏感で普通の化粧品は一切ダメってゆう人向きかと。
(あとエコな人)

大人のニキビはどっちかっていうと、肌そのものより、体の中の問題のような気が(経験上)するので、
食べ物に気をつけて(ジャンクフードとお菓子は卒業!)、ビタミン剤取るのがいいと思います。

私はポツポツニキビが出ますが、愛用品はビフナイトE、びふナイトパッチ(ビフナイト程効果はないけど楽)、アクネローション(近江兄弟社)→イオウ成分が角質を柔らかくしてくれますが、乾燥するので患部のみにして下さい。
あと、つぶしちゃった時は、普通に傷とかに塗る薬(薬局の目立たないところに置いてある、目立たない箱の塗り薬です)をつけると治りが早いです。
それは完全オリジナルなので、保障はできませんので、薬剤師さんに相談して下さい。

ニキビとえば、エテュセが有名ですね。
だいたいどこの化粧品屋さんにも入ってますね。
http://www.ettusais.co.jp/ja/main

私はけっこうファンケルを使ってます。
粉の洗顔なんですが、ネットで泡立てて優しく洗うとけっこういいですよ~

自然派化粧品はあまりおすすめしません。
高いし、自然派な分、効果も優しい。
肌の丈夫な人か、ホントに敏感で普通の化粧品は一切ダメってゆう人向きかと。
(あとエコな人)

大人のニキビはどっちかっていうと、肌そのものより、体の中の問題のような気が(経験上)する...続きを読む

Qmysqlのindexとprimary keyについて

indexキーとprimary keyについてですが、違いというのは、NULLが許可されるか、されないかの違いでしょうか?

データベースから検索する際に、indexキーがある方が検索スピードが速いということですが、あるHPに《PRIMARY KEY が宣言されたカラムは自動で Index Key と Unique Key が適応されます》とありました。
ですので、検索スピードを上げるには、PRIMARY KEYを設定すれば、indexキーが設定されたのと同じ事になるのでしょうか?

Aベストアンサー

単純な違いはというと、Primaryキーは一意性があり重複が許されないものです。よってそのテーブルの検索キーワードになりますから通常Indexが張られます。

Uniqueは一意性を意味します。
なので Primaryキー = Uniqueキー + Indexキー ですね。

検索スピードを上げるためには条件となる項目がPrimaryかIndexであれば早くはなりますが、Primaryはむしろテーブル設計に拠るところが大きくて、一般的に用いられるのはIndexです。
また、条件全ての項目にIndexを張る必要はありません。
条件となる項目にIndexがあり、条件文の書き方(条件文の並び順とか)によっては少ないIndexで済みます。
たくさんIndexを張るとDBが大きくなってしまいますので。

Qアン化粧品?

今勧められてる化粧品がアン化粧品です。
化粧品は沢山メーカーがありすぎて迷います。
この化粧品は成分が温泉系と聞いてます。
この化粧品を使った方に教えていただきたいのですが、ズバリ、これは肌にどんな効果があるでしょうか?

Aベストアンサー

 はじめまして、こんにちわ

 私も 嫁が使っておりますので ミネラルや、ローヤルゼリーを愛用しております
 ミネラルは 普段の生活では不足になりがちですが、何滴か水、牛乳に混ぜて飲むと補ってくれるようです 確かに、元気にさせてくれて、疲れやだるさなど皆無ですね(^-^ ) ニコッ
 
 化粧品の方は、使った事がある方に尋ねてみるのが一番かもです、 アン化粧品のサイトに体験談がありますし、掲示板もありますので、そこで尋ねてみるのはいかがでしょう?
http://anlave.com/

参考URL:http://anlave.com/

Qmysqlで、テーブルにあるunique keyを削る方法を教えてください。

mysqlで下記のAAAというテーブルからuniqueキー設定されている
BBBという列名をuniqueキーから解除することを考えています。
CCCもuniqueキーですが、CCCはuniqueのまま残します。

テーブル構造は下記の通りです。

CREATE TABLE `AAA` (
`id` char(5) NOT NULL COMMENT 'ID',
`BBB` char(3) NOT NULL COMMENT 'コード',
`CCC` varchar(50) NOT NULL COMMENT '名前',
PRIMARY KEY (`id`),
UNIQUE KEY `UK_AAA` (`BBB`,`CCC`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='AAA用'


まずは、下記sqlでindexを削除しました。
alter table `AAA` drop index UK_AAA ;
その後のテーブル構造は下記のようにUNIQUE KEY `UK_AAA`が消えました。

CREATE TABLE `AAA` (
`id` char(5) NOT NULL COMMENT 'ID',
`BBB` char(3) NOT NULL COMMENT 'コード',
`CCC` varchar(50) NOT NULL COMMENT '名前',
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='AAA用'


そして次のsqlでBBBをuniqueに再び設定しようと試みました。
alter table `AAA` add unique (BBB);
しかし、ここで警告メッセージが出現しうまく反映されません。

[Err] 1062 - Duplicate entry '0' for key 'BBB'

自分でこの警告を調べてもわかりませんでした。

結果的にBBBがunique解除されればいいので、私が実施したsql手順
でなくても他に効率のいいやり方があればその方法をご教授ください。

よろしくお願いします。

mysqlで下記のAAAというテーブルからuniqueキー設定されている
BBBという列名をuniqueキーから解除することを考えています。
CCCもuniqueキーですが、CCCはuniqueのまま残します。

テーブル構造は下記の通りです。

CREATE TABLE `AAA` (
`id` char(5) NOT NULL COMMENT 'ID',
`BBB` char(3) NOT NULL COMMENT 'コード',
`CCC` varchar(50) NOT NULL COMMENT '名前',
PRIMARY KEY (`id`),
UNIQUE KEY `UK_AAA` (`BBB`,`CCC`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='AAA用'


...続きを読む

Aベストアンサー

>本題のuniqueをCCCだけに変更するやり方を教えていただけますか?

具体的には
CREATE TABLE `AAA` (
`id` char(5) NOT NULL PRIMARY KEY
,`BBB` char(3) NOT NULL
,`CCC` varchar(50) NOT NULL
,UNIQUE KEY `UK_AAA` (`BBB`,`CCC`)
);

INSERT IGNORE INTO `AAA`
VALUES('id001','xxx','test1'),('id002','xxx','test2'),('id003','yyy','test1'),('id004','xxx','test2')

とすると、BBBとCCCの組み合わせによって、id004のINSERTが拒否されます
その際BBBはxxx、CCCはtest1という同じ値を持っていてもINSERTできていることを理解してください

ここで、インデックスUK_AAAを外したとして、
ALTER TABLE `AAA` DROP INDEX `UK_AAA`;

あらたにBBBやCCCだけのユニークを作ろうとしても
すでにユニークでないデータがあるため処理できません。
ALTER TABLE `AAA` ADD UNIQUE`UK_AAA2`(`BBB`);
エラー:Duplicate entry 'xxx' for key 'UK_AAA2'
ALTER TABLE `AAA` ADD UNIQUE`UK_AAA3`(`CCC`);
エラー:Duplicate entry 'test1' for key 'UK_AAA3'

それぞれxxx、test1がダブってるから無理というエラー

データ投入後にあとからユニーク属性をつけるのであれば
ダブリデータを手動で削除したのち、ALTER TABLE してください

ちなみにCCCにダブリデータがあるかどうかのチェックはこんな感じ
SELECT `CCC` FROM `AAA` GROUP BY `CCC` HAVING COUNT(*)>1

>本題のuniqueをCCCだけに変更するやり方を教えていただけますか?

具体的には
CREATE TABLE `AAA` (
`id` char(5) NOT NULL PRIMARY KEY
,`BBB` char(3) NOT NULL
,`CCC` varchar(50) NOT NULL
,UNIQUE KEY `UK_AAA` (`BBB`,`CCC`)
);

INSERT IGNORE INTO `AAA`
VALUES('id001','xxx','test1'),('id002','xxx','test2'),('id003','yyy','test1'),('id004','xxx','test2')

とすると、BBBとCCCの組み合わせによって、id004のINSERTが拒否されます
その際BBBはxxx、CCCはtest1という同じ値を持っ...続きを読む

Q化粧品の値段と品質について

私は大学生です。
おしゃれはしたいのですが、お金がないので高いメーカーの化粧品は買えません。
そこでカネボウなどの安い化粧品を買っていますが、私が買っているような安い化粧品と
高いブランドの化粧品にどのような差があるのかが気になっています。

よく薬局やスーパーなどで「CAN MAKE」や「ちふれ」といった
メーカーの化粧品が安くで売ってありますが、そういう類のファンデーションや口紅はデパートのコスメコーナーで売っているものなどに比べて品質が悪いのでしょうか?

また、AVONなど通販の化粧品は,スーパー売っている安い化粧品と
RMKやテスティモなど、高価な化粧品の中間くらいの値段ですが
そういう商品の品質はどうなのでしょうか?

Aベストアンサー

私は20年前(?)には、1ヶ月に数万円分の化粧品を買い、40分~1時間も
かけて化粧をしていました。

現在は経済的な理由もありますが、「ちふれ」や「ハイム」などの1品数百円の
ものを使い、化粧時間も10分程度です。なんの支障もありません。
高い価格には膨大な宣伝費や包装材の費用が反映されていると思います。
原料として使われている成分には大差ないと思いますが、化学物質など有害なものも多数含まれているはずです。
自然成分と表示されていてもわかりません。

買うときは成分表示が明記されているメーカーを選んでいます。
若い頃のしっぺ返しで、目の周りや唇が黒ずんだり、頬にシミができたりしました。今はもとの健康な皮膚に戻っています。
できるだけ安全な化粧品を使ってください。

具体的に書名をあげられず申し訳ないのですが、化粧品の怖さが書かれた本はたくさんあります。参考にすると良いでしょう。
できるだけ多くの情報をもつことです。
---40代のおばさんより

Qphpmyadminでprimary keyの設定方法は?

phpmyadminでprimary keyの設定方法がわかりませんどうしたらよいのでしょうか?

Aベストアンサー

http://www.yamada-lab.org/doc/win/mysql5/3/0304.html
のテーブルの作成部分を見てください。
ここで書いてある「主キー」がprimary key の事です。

Q【化粧品の動物実験】化粧品の発売前に兎の目に化粧品を垂らしてウサギの目に異常が起こらないか動物実験を

【化粧品の動物実験】化粧品の発売前に兎の目に化粧品を垂らしてウサギの目に異常が起こらないか動物実験をしてから販売していた化粧品メーカーってどこですか?

Aベストアンサー

そのような時代もあったという認識です。ある意味その事は各社タブーになっています。今は動物愛護の観点から、そのようなことはないと信じたいですが、もしまだそのようなメーカーが存在するとしたら、そのメーカーの化粧品は買いたくありません。

QUNIQUE KEY user_name_inde

サンプルのCREATE TABLE文 の中に、
UNIQUE KEY user_name_index(user_name)

とあったのですが、意味を教えてください。

 自分で調べた限りは、UNIQUEというのはあったのですが、
 UNIQUE KEY が見つかりませんでした。
 UNIQUE KEY は、UNIQUEと同義なのでしょうか?
 あるいは、こういう書き方があるのでしょうか?

 また、CREATE TABLEの中で、user_nameカラムを作成しているのですが、
 user_name_index(user_name)では、何をしているのでしょうか?
 user_name_indexと別の名前でUNIQUE KEYに設定しているのでしょうか?

 それとも、_indexとついてるので、
 この書き方だけで、ユニークインデックスなるものにしているのでしょうか?

Aベストアンサー

>UNIQUE KEY user_name_index(user_name)

user_name_indexという名前で、user_nameにユニークインデックスを設定しています

「user_name_index」は特に命名ルールがあるわけではなく
hogeでもfugaでもなんでもかまいませんが、本人が後から見てわかるようなものに
しておくのが賢明です

たとえば
(1)CREATE TABLE X (A INT,B INT,C INT,UNIQUE KEY D(A));
(2)CREATE TABLE Y (A INT UNIQUE,B INT,C INT);
(3)CREATE TABLE Z (A INT,B INT,C INT,UNIQUE KEY E(B,C));

(1)であればAフィールドをつかったDという名前のユニークキーを作りますし
(2)のような書き方でもユニークインデックスは設定できます
(この場合、インデックス名はAになります)
(3)のように複合インデックスを貼ることもできます
(この場合BとCの組み合わせがユニークであるという意味になります)

>UNIQUE KEY user_name_index(user_name)

user_name_indexという名前で、user_nameにユニークインデックスを設定しています

「user_name_index」は特に命名ルールがあるわけではなく
hogeでもfugaでもなんでもかまいませんが、本人が後から見てわかるようなものに
しておくのが賢明です

たとえば
(1)CREATE TABLE X (A INT,B INT,C INT,UNIQUE KEY D(A));
(2)CREATE TABLE Y (A INT UNIQUE,B INT,C INT);
(3)CREATE TABLE Z (A INT,B INT,C INT,UNIQUE KEY E(B,C));

(1)であればAフィールドをつかったDという...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング