sql語句實現復原表中資料

2021-09-25 15:21:29 字數 2802 閱讀 8590

任務描述

會員表中資料統計注意點:

表結構說明

使用者表user

欄位名型別

說明約束

name

varchar

使用者名稱主鍵

ageint

年齡非空

***varchar

性別非空

ismember

int是否為會員(0表示不是,1表示是)

預設為0

card_id

int卡號

非空會員表member

欄位名型別

說明約束

card_id

int卡號

主鍵creadits

int積分

非空銷售表sales

欄位名型別

說明約束

name

varchar

使用者名稱非空

expense_money

int消費金額

非空退貨表back

欄位名型別

說明約束

card_id

int卡號

主鍵return_money

int退款金額非空

第一次用sql來做這種題目,還是學到了很多。對sql 的認識也加深了很多,還是需要多聯絡。

自己在測試過程中,將表的結構簡化了,但是需要在不影響表的行為的情況下簡化,注釋以下的為答案,注釋以上的為測試資料

create table user (

name varchar(64),

age int,

*** varchar(8),

ismember int,

card_id int

);create table member(

card_id int,

creadits int

);create table sales (

name varchar(64),

expense_money int

);create table back(

card_id int,

return_money int

);insert into user values ("yrk",18,"men",1,1);

insert into user values ("lhq",18,"men",0,2);

insert into user values ("lm",18,"men",1,3);

insert into user values ("tbr",18,"men",1,4);

insert into sales values("yrk",50);

insert into sales values("yrk",20);

insert into back values(1,25);

insert into sales values("lhq",90);

insert into back values(2,45);

insert into sales values("lm",80);

insert into back values(3,72);

insert into back values(3,5);

insert into sales values("tbr",100);

insert into member values(1,20);

#insert into member (card_id) select card_id from user where ismember = 1;

delete from member; #將member表清空

create table tmp(

card_id int,

creadits int

);delete from tmp;

#向tmp表中插入資料,將是會員的並且有消費記錄的加到tmp表中,並對card_id進行分組,避免出現會員有多次購物的情況

insert into tmp (card_id,creadits)

select a.card_id, sum(b.expense_money)

from user a, sales b

where a.ismember = 1 && b.name = a.name

group by a.card_id;

#向tmp表中插入資料,將是會員但是沒有消費記錄的加到tmp表中,實現方法是身份是會員但是不在tmp表裡的人,並將它們的creadits設定為0

insert into tmp(card_id,creadits)

select card_id,0

from user

where user.ismember = 1 and not exists(select * from tmp

where user.card_id = tmp.card_id);

#向tmp表更新資料,將會員的退款減掉

update tmp

inner join back

on tmp.card_id = back.card_id

set tmp.creadits = tmp.creadits - back.return_money

where tmp.card_id = back.card_id;

insert into member

select * from tmp;

表資料匯出sql語句

go object storedprocedure dbo outputdata script date 08 04 2010 17 50 53 set ansi nulls on go set quoted identifier on go create procedure dbo outputd...

使用SQL語句操作表和表中的資料

一 分類 1 drop table 表名稱 drop 刪除表 刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增資料是不可能的,除非新增乙個表。drop語句將刪除表的結構被依賴的約束 constrain 觸發器 trigger 索引 index 依賴於該錶的儲存過程 函式將被保留,但其狀...

資料庫SQL語句實現

1 建立資料庫 create database if not exists cs2013 2 建立資料庫 create table if not exists comp id int not null primary key auto increment pid varchar 30 not nul...