新しいMySQL演習

データベースDSを作成します。

DSを使用します。



-建表导数--------------------------------------- 
- UserInfoテーブル
表を作成しますuserinfo(
	ユーザID VARCHAR(6)NOT NULLデフォルト' - '、
    ユーザ名VARCHAR(20)NOT NULLデフォルト' - '、
    userPassword属性のVARCHAR(100)NOT NULLデフォルト' - '、     
    セックスはデフォルト0は、NULLでないint型
    usermoneyがnullで、デフォルトではなくint型0、
    frozenmoneyがnullデフォルトは0ではなく、int型
    ' - '、あるAddressIdのVARCHAR(20)NOT NULLデフォルト
    regtimeのVARCHAR(20)NOT NULLデフォルト' - '、
    lastlogin VARCHAR(20)NOT NULLデフォルト' - '、
    lasttime日付nullではないが
) ; 

#导入数据
負荷データのローカルINFILE「E:/データ/ RAWDATA /のUserInfo。 
	無視行1; 

10のUserInfo制限からSELECT *; -チェックデータ
からのuserinfo SELECT COUNT(*)は、 - 行の合計数千チェック
DESCをのUserInfo; -データ構造を確認してください

-新しい日付と時刻のフィールドを作成します。割り当てが
nullでないregtime_日時を追加するユーザー情報テーブルを変更する ;#は、 日時フィールドが作成し

たデータベース開くこと#更新権限; SQL_SAFE_UPDATES = 0を設定

regtime_ = FROM_UNIXTIME(regtimeを設定するユーザー情報の更新を ); ## 24時制の登録時間を変換します

-割り当てられた新しい日付と時刻のフィールドの作成

lastlogin_日時を追加nullではないのUserInfo表ALTERを、
更新のUserInfo SETはlastlogin_ = FROM_UNIXTIME(lastlogin); 

-オリジナル間違った日付形式のフィールドを削除
ALTERのUserInfoは、表の列regtimeをドロップ; 
ALTERのUserInfoは、表の列lastloginをドロップします。

DESCのUserInfo; 

のUserInfoテーブルをドロップします。

- -------------- regioninfo ------- 
テーブルregioninfo(作成
	regionid VARCHAR(4)NOT NULLデフォルト' - '、
    のParentIDのVARCHAR(4)NOT NULLデフォルト「 - 」、
    regionnameのVARCHAR(20)NOT NULLデフォルト' - '、     
    regiontypeのINT NOT NULLデフォルト0、
    agencyid int型NOT NULLデフォルト0、
    PTのVARCHAR(11)NOT NULLデフォルト' - ' 
)。

#导入数据
負荷データローカルINFILE「E:/data/rawdata/regioninfo.csv」
	regioninfoテーブルに
    することによって終了フィールド「」
	1行を無視します。

regioninfoから*を選択します。


-提取文本型字段的中间八位字符
アップデートセットPT =ストリング(PT、1,8)regioninfo。

セットpt_ = DATE_FORMAT regioninfo更新(PT、 '%Y-%M-%D')。##转换日期格式
##変換日付形式
-間違った日付形式は元のフィールドを削除するには
列PTをドロップregioninfoテーブルを変更します。

降順regioninfo。

-ドロップテーブルregioninfo。

- -------------- UserAddress -------#创建用户地址表
テーブルuseraddress(作成
	' - '、あるAddressIdのVARCHAR(5)NOT NULL、デフォルト
    のユーザーIDのVARCHAR(6) NOT NULLデフォルト' - '、    
    荷受人VARCHAR(50)NOT NULLデフォルト' - '、
    国のVARCHAR(1)NOT NULLデフォルト' - '、
    州のVARCHAR(2)NOT NULLデフォルト' - '、
    都市はvarchar(4)NOT NULLデフォルトの' - '、
    (4)NOT NULLデフォルト地区のvarchar型' - '、   
    アドレスVARCHAR(200)NOT NULLデフォルト' - '、

負荷データのローカルINFILE「E:
	テーブルuseraddressのに
    によって終了分野「」
	1行を無視。
    
useraddressから*を選択します。
    
更新useraddressセットPT =ストリング(PT、1,8)。

テーブルを変更useraddress nullではないpt_日付を追加します。
更新useraddressセットpt_ = DATE_FORMAT(PT、 '%Y-%M-%D')。


useraddressから長さ(pt_)を選択します。##计算该字段的长度

テーブルuseraddressドロップ列PTを変えます。

SELECT COUNT(*)useraddressから。

useraddressリミット10から*を選択します。

-ドロップテーブルuseraddress。






- ---- ---- GoodsInfo#商品主表
テーブルgoodsinfo(作成
	goodsidのVARCHAR(6)NOT NULLデフォルト' - '、 
	型IDのVARCHAR(3)NOT NULLデフォルト' - '
	markidのVARCHAR(4)NOT NULLデフォルト' - '、
	goodstagのVARCHAR(100)NOT NULLをデフォルト '-'、
	brandtagのVARCHAR(100)NOT NULLデフォルト' - '、
	customtagのVARCHAR(100)NOT NULLデフォルト' - '、
	goodsnameのVARCHAR(100)NOT NULLデフォルト' - '、
	clickCountはint型ではないnullのデフォルト0、
	clickcr int型ではないnullのデフォルト0、
	デフォルト0、goodsnumber int型nullではない
	ヌルデフォルト0ではないint型goodsweight、
	市場価格ダブルNOT NULLデフォルト0、
	shoppriceダブルNOT NULLデフォルト0、
	でaddTimeのVARCHAR(20)NOT NULLデフォルト0、
	isonsaleがnullデフォルトは0ではないint型、
	売上高がヌル、デフォルトではなくint型0、
	realsalesがnullデフォルト0、int型ではない
	extrapriceダブルNOT NULLデフォルト0、
	' - ' goodsno VARCHAR(10)NOT NULLデフォルト
)。

#导入数据
負荷データ局所INFILE「E:/data/rawdata/GoodsInfo.csv」
	goodsinfoテーブルに
    することによって終了フィールドが「」
	1行を無視します。

goodsinfo上限10から選択*; 

addtime_日時NOT NULLを追加goodsinfoテーブルを変更します。
goodsinfoセットaddtime_ = FROM_UNIXTIME(でaddTime)を更新します。

列でaddTimeドロップgoodsinfoテーブルを変更します。


-ドロップテーブルgoodsinfo。

- ---- ---- GoodsBrand#商品品牌表
テーブルgoodsbrandを作成する(
	仕入先のVARCHAR(4)NOT NULLデフォルト' - '、
	BrandTypeのVARCHAR(100)NOT NULLデフォルト' - '、
	nullでないPTのVARCHAR(11)デフォルトの' - ' 
); 

#导入数据
負荷データのローカルINFILE 'E:/data/rawdata/GoodsBrand.csv' 
	テーブルgoodsbrandの中
    で終端さフィールド「」

goodsbrandリミット10から*を選択します。

更新は、Pt =ストリング(PT、1,8)を設定goodsbrand。

テーブルを変更goodsbrand nullでないpt_日を追加します。
更新は、設定pt_ = DATE_FORMAT(PT、 '%Y-%M-%D')goodsbrand。

テーブルを変更goodsbrand列PTをドロップ。

-ドロップテーブルgoodsbrand。

- ---- ---- GoodsColor ###商品颜色表
作成テーブルgoodscolor(
	ColorIDのVARCHAR(4)NOT NULLデフォルト' - '、
	ColorNoteカラーのVARCHAR(20)NOT NULLデフォルト' - '、
	ColorSortはNULLデフォルトないint型0、     
	PTのVARCHAR(11)NOT NULLデフォルト' - ' 
); 

#导入数据
負荷データのローカルINFILE 'E:/data/rawdata/goodscolor.csv'
    「」で終わるフィールド
	1行を無視。

goodscolorリミット10から*を選択します。

更新goodscolorセットPT =ストリング(PT、1,8)。

テーブルを変更goodscolor nullでないpt_日を追加します。
更新goodscolor pt_ = DATE_FORMAT(PT、 '%Y-%M-%D')を設定します。

テーブルを変更goodscolor列PTをドロップ。

-ドロップテーブルgoodscolor。

- ---- ---- GoodsSize ##商品尺码表
作成テーブルgoodssize(
	SizeIDのVARCHAR(4)NOT NULLデフォルト' - '、
	サイズ注のVARCHAR(100)NOT NULLデフォルト' - '、
	SizeSortはint型ではないヌルデフォルト0 、     
	PTのVARCHAR(11)NOT NULLデフォルト' - ' 
); 

#导入数据
負荷データのローカルINFILE 'E:/data/rawdata/goodssize.csv' 
	テーブルにgoodssizeの
    で終端さフィールド''

goodssize上限10から選択*; 

goodssizeセットPT =ストリング(PT、1,8)を更新します。

nullではないpt_日付を追加goodssizeテーブルを変更します。
goodssizeセットpt_ = DATE_FORMAT更新(PTを、 '%Y-%M-%D')。

カラムPTをドロップgoodssizeテーブルを変更します。

-ドロップテーブルgoodssize。

- ---- ---- ORDERINFO ###订单主表
テーブルを作成ORDERINFO(
	受注コードVARCHAR(6)NOT NULLデフォルト' - '、
	ユーザーID VARCHAR(10)NULLでないデフォルト' - '、
	OrderStateのINT NOT NULLデフォルト0、
	PayState INT NOT NULLデフォルト0、
    AllotStatusがnullデフォルトは0ではないint型、
	荷受人のVARCHAR(100)NOT NULLデフォルト' - '、
    国がnullデフォルトは0ではないint型、
    省がnullデフォルトは0ではなく、int型
    シティint型ではないnullのデフォルト0、
    地区int型ではないnullのデフォルト0、
    アドレスVARCHAR(100)NOT NULLデフォルト' - '、
    GoodsAmountダブルNOT NULLデフォルト0、
    OrderAmountダブルNOT NULLデフォルト0、
    ShippingFeeがnullのデフォルトは0ではなく、int型
    、RealShippingFee int型ではないnullのデフォルト0 
    PayTool int型ではないnullのデフォルト0、
    IsBalancePay int型ではありませんヌルデフォルト0、
    BalancePay二NOT NULLデフォルト0、
    デフォルト0、OtherPay二重ヌルでない
    PayTimeのVARCHAR(20)NOT NULLデフォルト' - ' 
    でaddTimeのVARCHAR(20)NOT NULLデフォルト' - ' 
)。

#导入数据
負荷データ局所INFILE「E:/data/rawdata/OrderInfo.csv」
	テーブルORDERINFOさに
    することによって終了フィールドが「」
	1行を無視します。

ORDERINFOリミット10から*を選択します。
テーブルを変更ORDERINFO nullでないPayTime_日時を追加します。
更新ORDERINFOセットPayTime_ = FROM_UNIXTIME(PayTime)。



テーブルを変更ORDERINFO nullでないAddTime_日時を追加します。
更新ORDERINFOセットAddTime_ = FROM_UNIXTIME(でaddTime)。


カラムPayTimeドロップORDERINFOテーブルを変更します。
カラムでaddTimeドロップORDERINFOテーブルを変更します。

-ドロップテーブルORDERINFO。

- ---- ---- OrderDetail ###订单详情表
作成テーブルOrderDetail(
	のRecIDのVARCHAR(7)NOT NULLデフォルト' - '、
	(6)NOT NULLデフォルト受注のVARCHAR ' - '、
	ユーザーID VARCHAR(6) NOT NULLデフォルト' - '、
	スペシャルID特殊身分のVARCHAR(6)NOT NULLデフォルト' - '、 
	GoodsIDのVARCHAR(6)NOT NULLデフォルト' - '、
    GoodsPriceダブルNOT NULLデフォルト0、 
goodsinfoからSELECT COUNT(*);  -  10000
    ColorIDのVARCHAR(4)NOT NULLデフォルト' - '、
    SizeIDのVARCHAR(4)NOT NULLデフォルト' - '、
    金額はint NOT NULLデフォルト0 
); 

#导入数据
負荷データ局所INFILE「E:/data/rawdata/OrderDetail.csv」
	テーブルOrderDetailのに
    によって終了フィールドが「」
	1行を無視します。
    
OrderDetailリミット10から*を選択します。

SELECT COUNT(*)OrderDetailから。

-ドロップテーブルorderdetail。


-查询导入表的行数
のuserinfoからSELECT COUNT(*); - 1000年
SELECT COUNT(*)RegionInfoから。- 3415 
useraddressからSELECT COUNT(*); - 10000 
goodsbrandからSELECT COUNT(*); - 64 
goodscolorからSELECT COUNT(*); - 2641 
goodssizeからSELECT COUNT(*); 
SELECT COUNT(*)ORDERINFOから; - 3711 
SELECT COUNT(*)OrderDetailから; - 10000 

- 1.ご注文の合計金額と受注数の合計をチェック
選択合計(orderamountを) 、COUNT(受注)
ORDERINFOから; 

- 2、クエリ注文量3000以上の元の注文情報:注文ID、ユーザID、量
SELECT受注コード、ユーザID、orderamount 
ORDERINFOから
WHERE orderamount> 3000; 


- 3、消費問い合わせの平均量10,000以上のお客様
SELECT AVG(OrderAmount)、のUserInfo *。
ORDERINFOはorderinfo.UserID = userinfo.userid ON参加のUserInfoを左から
userinfo.useridによってグループ
HAVING AVG(orderamount)> 10000; 

- 4.クエリを予約注文の消費量に10人の顧客の最終ログイン時刻
を選択orderinfo.userid、lastlogin_、合計(orderamountは ) 消費量を注文します 
	ORDERINFOからorderinfo.UserID = userinfo.userid ONのUserInfoに参加し、左
	orderinfo.useridにより、グループ
	の消費者の注文で注文量の降順
    限界10;
     
5、都市がトップ10の最大の顧客の消費のご注文合計金額チェック- 

    
都市を置き換えるために##をそのようなクエリとして国の都市や地域を変更することができます
o.userid選択し、合計(orderamount)が消費量を注文し、regionname街
	ORDERINFO Oからは参加RegionInfo R ON o.city = r.regionid左
	o.useridによってグループ
	の消費の注文DESC量順
    10の限界; 
        
- 。6、10都市の前に最強のクエリの強さ
を選択合計(orderamount)強度、regionname市
参加RegionInfoからはb.regionid a.city ON ORDERINFOのA = Bを残した
都市によってグループ
強度降順順
上限10。


--7、それらが単一の手数料の下で州で#の購買力を取得する場所にランク#,,,トップ10の市道の最強の購買力を照会
最初のトップ10都市の最強の購買力をチェック
テーブル内のテーブルregioninfo内のすべての##の都市と地方ため,,ので、自己結合クエリ


消費のs.regionname地方を選択し、r.regionname都市、合計(orderamount)ご注文合計金額 
g.typeid c.supplierid ON =参加goodsbrand Cを左 
	ORDERINFO Oからに
    regioninfoがの研究参加を残しましたo.city = r.regionid
    S ONは、RegionInfoがo.province =を左に参加s.regionid 
	o.cityにより、グループ
	の消費者降順の受注の合計金額によりご注文を
    、制限10 


8、総売上高および製品お問い合わせの総売上高- 
総売上高、和の選択合計(金額)総売上高のgoodsprice *量)
OrderDetailから; 



- 9、10ベストセラー商品問い合わせ


goodsid選択合計(金額)の販売、
OrderDetailから
goodsidにより、グループ
売上降順で注文
上限10; 



- 10、10ベストセラーを問い合わせますブランド


選択の合計(額)の売上高、brandtype 
OrderDetail Oからは
o.goodsid g.goodsidのON = goodsinfo Gに参加し、左 
#属する10のベストセラーのブランドの商品を問い合わせます
タイプIDのグループによって
销量降順による順序
制限10。


DSを使用します。
- 11、查询最畅销的十种商品所属品牌中所有商品的销售额

(から別個e.typeid選択
a.goodsid、型ID、和(量)を選択
a.goodsid = B上にB goodsinfo参加左orderdetailからの.goodsid 
a.goodsidによってグループ
和(量)DESCの順
限界10)E。



c.goodsid、和(量* goodsprice)を選択
orderdetail Cからの
c.goodsid = d.goodsidにgoodsinfo Dに参加左
にd.typeid場合
(が別個e.typeidを選択
(a.GoodsIDを選択し、型ID、合計(金額)から
orderdetailから
左a.GoodsID = b.goodsidにgoodsinfo Bに参加
a.GoodsIDすることによって、グループ
和(量)DESC順
10リミット)E)
c.goodsidによって、グループ、

 
- 12は、商品の種類が後、ほとんどの顧客によって使用されるトップ10を照会受信しました都市は、##商品が一列に、都市の複数に対応するので、どのような商品であるため、GROUP_CONCAT()関数レシート組み合わせ都市ラインを使用します
異なる種類を見つけるために種類#商品のグループ化は、トップ10の顧客のほとんどが買っ




SELECT * 
OrderDetailからはa.orderid BにORDERINFOに参加左= b.orderidは参加RegionInfoを残しましたb.city = c.regionidにC、###単一製品注文情報に対応する

、b.userid選択(別個goodsid)商品の種類カウント
	GROUP_CONCAT(DISTINCT RegionName)レシート都市
OrderDetailからの
	参加ORDERINFO B左b.orderid a.orderid = ON 
	b.cityのc.regionidのON RegionInfo C =参加左
	b.useridでグループを
    商品降順の種類によって受注
    ;リミット10

  

おすすめ

転載: www.cnblogs.com/manjianlei/p/11291297.html