Maison base de données tutoriel mysql SQL Server数据库操作

SQL Server数据库操作

Jun 07, 2016 pm 02:49 PM
server sql 操作 数据库 passer

通过SQL Server建库语句等,采用纯代码方式创建数据库,创建数据表,以及进行相应数据库操作,包括检索,插入,删除,修改。 以下通过一个例题说明数据库操作。 某仓储超市采用POS(PointofSale)收银机负责前台的销售收款,为及时掌握销售信息,并依此指导

 通过SQL Server建库语句等,采用纯代码方式创建数据库,创建数据表,以及进行相应数据库操作,包括检索,插入,删除,修改。


以下通过一个例题说明数据库操作。

某仓储超市采用POS(Point of Sale)收银机负责前台的销售收款,为及时掌握销售信息,并依此指导进货,拟建立商品进、销、存数据库信息管理系统。经过系统需求分析、概念结构设计和逻辑结构设计,可以简化得到如下一组关系模式(其中     表示主键,    表示外键):

积分卡(用户编号,用户名,累积消费金额,积分点)

销售详单(销售流水号,商品编码,数量,金额,用户编号,收银员,时间)

销售日汇总(日期,商品编码,数量)

存货表(商品编码,数量)

进货表(送货号码,商品编码,数量,日期)

商品(商品编码,商品名称,单价)

请在SQL Server的查询分析器中按要求完成如下各题:

1、 创建名为Supermarket的数据库,数据文件名取为:Supermarket_data.mdf,日志文件名取为:Supermarket_log.ldf。

 

2、 按表1-6要求创建6张数据表,并为每张表设置主键码和外键码(若有的话)。

表1 Integralcard积分卡信息表

列名

数据类型

可否为空

说明

User_id

char(10)

Not null

用户编号

User_name

varchar(20)

Not null

用户名

Cumulative_consumption

numeric(8,2)

Not null

累计消费金额

Integral_point

numeric(5,0)

Not null

积分点

表2 Salesdetails 销售详单信息表

列名

数据类型

可否为空

说明

sales_id

char(10)

Not null

销售流水号

commodity_code

char(10)

Not null

商品编码

number

numeric(4,0)

null

数量

amount

numeric(9,2)

null

金额

User_id

char(10)

Not null

用户编号

cashier

varchar(20)

null

收银员

sd_time

datetime

null

时间

表3 Salesdatesummary 销售日汇总信息表

列名

数据类型

可否为空

说明

sds_date

datetime

Not null

日期

commodity_code

char(10)

Not null

商品编码

number

numeric(4,0)

null

数量

表4 Inventorylist存货信息表

列名

数据类型

可否为空

说明

commodity_code

char(10)

Not null

商品编码

number

numeric(4,0)

null

数量

表5 Purchasetable进货信息表

列名

数据类型

可否为空

说明

delivery_number

char(10)

Not null

送货号码

commodity_code

char(10)

Not null

商品编码

number

numeric(4,0)

null

数量

pt_date

datetime

Not null

日期

表6 Commodity商品信息表

列名

数据类型

可否为空

说明

commodity_code

char(10)

Not null

商品编码

commodity_name

varchar(10)

Not null

商品名称

commodity_price

numeric(7,2)

Not null

商品单价

 

3、在建好的6张表中,利用对象资源管理器分别输入和更新若干条记录,要求主键码不能为空和重复,外键码只能取另一张表的主键码之一。

 

4、针对该数据库的6张表,完成如下10个查询请求:

1)查询用户编号为’yh23001011’的用户的用户名、累积消费金额和积分点;

 

2)查询’张三’用户所购的全部商品的商品编码、商品名称、单价、数量和金额;

 

(3)查询2016年4月各类商品销售数量的排行榜,要求显示商品编号、商品名称和数量(按降序排列);

 

(4)根据销售详单中的销售流水号’xs80020001’和商品编码’sp03004561’,对存货表中的数量进行更新;

 

5根据进货表中的送货号码’sh00012288’和商品编码’sp03006677’, 对存货表中的数量进行更新;

 

(6)统计2016年4月中每一天的销售金额,要求显示日期、销售金额(按降序排列)。

 

5、针对该数据库的6张表,定义如下2个视图:

(1)定义一个商品存货的视图Commodity_Inventorylist,属性包括商品编码、商品名称、单价和数量;

 

(2)定义一个用户购买商品的详细清单User_Purchase_Details, 属性包括用户编号、用户名、商品编码、商品名称、单价和数量。


SQL Server 2008 R2上实现过程如下:


--创建数据库
--创建名为Supermarket的数据库,数据文件名取为:Supermarket_data.mdf,日志文件名取为:Supermarket_log.ldf。
USE master--使用系统
GO
CREATE DATABASE Supermarket --创建数据库

ON PRIMARY	--主文件
(
	NAME='Supermarket_data', --文件名
	FILENAME='D:\SQLProject\Supermarket_data.mdf',--路径
	SIZE=5MB,--初始大小
	MAXSIZE=100MB,--最大容量
	FILEGROWTH=10%--增长速度
)

LOG ON--日志文件
(
	NAME='Supermarket_log',
	FILENAME='D:\SQLProject\Supermarket_log.ldf',
	SIZE=5MB,
	FILEGROWTH=0
)
GO

--创建你数据库表
--模式(其中     表示主键,    表示外键):
--积分卡(用户编号,用户名,累积消费金额,积分点)
--销售详单(销售流水号,商品编码,数量,金额,用户编号,收银员,时间)
--销售日汇总(日期,商品编码,数量)
--存货表(商品编码,数量)
--进货表(送货号码,商品编码,数量,日期)
--商品(商品编码,商品名称,单价)
use Supermarket
go

--积分卡(用户编号,用户名,累积消费金额,积分点)
create table Integralcard
(
	User_id char(10) primary key not null,
	User_name varchar(20) not null,
	Cumulative_consumption numeric(8,2) not null,
	Integral_point numeric(5,0) not null
)
go

--销售详单(销售流水号,商品编码,数量,金额,用户编号,收银员,时间)
use Supermarket
go

create table Salesdetails
(
	sales_id char(10) not null,
	commodity_code char(10) not null foreign key(commodity_code) references Commodity(commodity_code)
	on delete cascade,
	number numeric(4,0) null,
	amount numeric(9,2) null,
	User_id char(10) not null foreign key(User_id) references Integralcard(User_id)
	on delete cascade,
	cashier varchar(20) null,
	sd_time datetime null
)
go
--外键
ALTER TABLE Salesdetails
ADD CONSTRAINT Salesdetails_KEY PRIMARY KEY(sales_id,commodity_code,User_id)
Go
--销售日汇总(日期,商品编码,数量)
use Supermarket
go

create table Salesdatesummary
(
	sds_date datetime not null,
	commodity_code char(10) not null  foreign key(commodity_code) references Commodity(commodity_code)
	on delete cascade,
	number numeric(4,0) null
)
go

ALTER TABLE Salesdatesummary
ADD CONSTRAINT Salesdatesummary_KEY PRIMARY KEY(commodity_code)
Go
--存货表(商品编码,数量)
use Supermarket
go

create table Inventorylist
(
	commodity_code char(10) not null foreign key(commodity_code) references Commodity(commodity_code)
	on delete cascade,
	number numeric(4,0) null
)
go
ALTER TABLE Inventorylist
ADD CONSTRAINT Inventorylist_KEY PRIMARY KEY(commodity_code)
Go

--进货表(送货号码,商品编码,数量,日期)
use Supermarket
go

create table Purchasetable
(
	delivery_number char(10) not null,
	commodity_code char(10) not null foreign key(commodity_code) references Commodity(commodity_code)
	on delete cascade,
	number numeric(4,0) null,
	pt_date datetime not null
)
go
--外键
ALTER TABLE Purchasetable
ADD CONSTRAINT Purchasetable_KEY PRIMARY KEY(delivery_number,commodity_code)
Go


--商品(商品编码,商品名称,单价)
use Supermarket
go

create table Commodity
(
	commodity_code char(10) primary key not null,
	commodity_name varchar(10) not null,
	commodity_price numeric(7,2) not null
)
go

-----------------------------------------------
--查询用户编号为’yh23001011’的用户的用户名、累积消费金额和积分点
use Supermarket
select User_name as 姓名,Cumulative_consumption as 累计消费金额,Integral_point as 积分点 from Integralcard
where User_id='yh23001011'
go


--查询’张三’用户所购的全部商品的商品编码、商品名称、单价、数量和金额;
use Supermarket
select com.commodity_code,com.commodity_name,com.commodity_price,sal.number,sal.amount
 from Commodity com,Salesdetails sal,Integralcard ca
where com.commodity_code=sal.commodity_code and sal.User_id=ca.User_id and ca.User_name='张三'
go

--查询2016年4月各类商品销售数量的排行榜,要求显示商品编号、商品名称和数量(按降序排列)
use Supermarket
select com.commodity_code,com.commodity_name,sal.number,sal.sd_time
from Commodity com,Salesdetails sal
where com.commodity_code=sal.commodity_code and sal.sd_time between '2016-04-01' and '2016-04-30' 
order by sal.number desc
go


--查看结果
use Supermarket
select number from Inventorylist
where Inventorylist.commodity_code='sp03004561'
go
--根据销售详单中的销售流水号’xs80020001’和商品编码’sp03004561’,对存货表中的数量进行更新
use Supermarket
update Inventorylist
set number= number - (select sal.number from Salesdetails sal
where sal.sales_id='xs80020001' and sal.commodity_code='sp03004561')
go
--查看更新结果
use Supermarket
select number from Inventorylist
where Inventorylist.commodity_code='sp03004561'
go


--查看结果
use Supermarket
select number from Inventorylist
where Inventorylist.commodity_code='sp03006677'
go
--根据进货表中的送货号码’sh00012288’和商品编码’sp03006677’, 对存货表中的数量进行更新
use Supermarket
update Inventorylist
set Inventorylist.number=Inventorylist.number +(select pur.number from Purchasetable pur
where pur.delivery_number='sh00012288' and pur.commodity_code='sp03006677')
go
--查看更新结果
use Supermarket
select number from Inventorylist
where commodity_code='sp03006677'
go

--统计2016年4月中每一天的销售金额,要求显示日期、销售金额(按降序排列)
use Supermarket
select sal.sds_date,salemoney=com.commodity_price*sal.number
from Commodity com,Salesdatesummary sal
where com.commodity_code=sal.commodity_code and sal.sds_date>='2016-04-01' and sal.sds_date
<p><span style="font-size:18px"><br>
</span></p>
<p><span style="font-size:18px"><span style="color:#ff6600">数据库实现截图:</span></span></p>
<br>
<img src="/static/imghw/default1.png" data-src="http://img.blog.csdn.net/20160519185100347?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" class="lazy" alt=""><br>
<p><span style="font-size:18px"><br>
</span></p>
   








Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est la différence entre HQL et SQL dans le framework Hibernate ? Quelle est la différence entre HQL et SQL dans le framework Hibernate ? Apr 17, 2024 pm 02:57 PM

HQL et SQL sont comparés dans le framework Hibernate : HQL (1. Syntaxe orientée objet, 2. Requêtes indépendantes de la base de données, 3. Sécurité des types), tandis que SQL exploite directement la base de données (1. Normes indépendantes de la base de données, 2. Exécutable complexe requêtes et manipulation de données).

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées Jul 18, 2024 am 05:48 AM

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Jun 04, 2024 pm 01:42 PM

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Comment gérer les erreurs de connexion à la base de données en PHP Comment gérer les erreurs de connexion à la base de données en PHP Jun 05, 2024 pm 02:16 PM

Pour gérer les erreurs de connexion à la base de données en PHP, vous pouvez utiliser les étapes suivantes : Utilisez mysqli_connect_errno() pour obtenir le code d'erreur. Utilisez mysqli_connect_error() pour obtenir le message d'erreur. En capturant et en enregistrant ces messages d'erreur, les problèmes de connexion à la base de données peuvent être facilement identifiés et résolus, garantissant ainsi le bon fonctionnement de votre application.

Principe de jalonnement Astar, démantèlement des revenus, projets et stratégies de largage aérien et stratégie opérationnelle au niveau de la nounou Principe de jalonnement Astar, démantèlement des revenus, projets et stratégies de largage aérien et stratégie opérationnelle au niveau de la nounou Jun 25, 2024 pm 07:09 PM

Table des matières Principe de jalonnement d'Astar Dapp Revenus de jalonnement Démantèlement des projets potentiels de largage aérien : AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap Stratégie et fonctionnement du jalonnement "AstarDapp Staking" a été mis à niveau vers la version V3 au début de cette année, et de nombreux ajustements ont été apportés aux revenus de jalonnement règles. À l'heure actuelle, le premier cycle de jalonnement est terminé et le sous-cycle de « vote » du deuxième cycle de jalonnement vient de commencer. Pour bénéficier des avantages « récompense supplémentaire », vous devez franchir cette étape critique (qui devrait durer jusqu'au 26 juin, soit moins de 5 jours). Je vais détailler les revenus du staking Astar,

Comment se connecter à une base de données distante à l'aide de Golang ? Comment se connecter à une base de données distante à l'aide de Golang ? Jun 01, 2024 pm 08:31 PM

Grâce au package base de données/sql de la bibliothèque standard Go, vous pouvez vous connecter à des bases de données distantes telles que MySQL, PostgreSQL ou SQLite : créez une chaîne de connexion contenant les informations de connexion à la base de données. Utilisez la fonction sql.Open() pour ouvrir une connexion à la base de données. Effectuez des opérations de base de données telles que des requêtes SQL et des opérations d'insertion. Utilisez defer pour fermer la connexion à la base de données afin de libérer des ressources.

Comment utiliser les fonctions de rappel de base de données dans Golang ? Comment utiliser les fonctions de rappel de base de données dans Golang ? Jun 03, 2024 pm 02:20 PM

L'utilisation de la fonction de rappel de base de données dans Golang peut permettre : d'exécuter du code personnalisé une fois l'opération de base de données spécifiée terminée. Ajoutez un comportement personnalisé via des fonctions distinctes sans écrire de code supplémentaire. Des fonctions de rappel sont disponibles pour les opérations d'insertion, de mise à jour, de suppression et de requête. Vous devez utiliser la fonction sql.Exec, sql.QueryRow ou sql.Query pour utiliser la fonction de rappel.

Comment gérer les connexions et les opérations de base de données en utilisant C++ ? Comment gérer les connexions et les opérations de base de données en utilisant C++ ? Jun 01, 2024 pm 07:24 PM

Utilisez la bibliothèque DataAccessObjects (DAO) en C++ pour connecter et exploiter la base de données, notamment en établissant des connexions à la base de données, en exécutant des requêtes SQL, en insérant de nouveaux enregistrements et en mettant à jour les enregistrements existants. Les étapes spécifiques sont : 1. Inclure les instructions de bibliothèque nécessaires ; 2. Ouvrir le fichier de base de données ; 3. Créer un objet Recordset pour exécuter des requêtes SQL ou manipuler des données ; 4. Parcourez les résultats ou mettez à jour les enregistrements en fonction de besoins spécifiques.

See all articles