实验1 数据库及表的管理和数据操纵

2024-01-25 23:50

本文主要是介绍实验1 数据库及表的管理和数据操纵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、实验项目:

数据库及表的管理和数据操纵。

二、实验目的

1、能够使用SQL语句创建、修改和删除数据库。

2、能够使用SQL语句创建、修改和删除数据表。

3、能够使用SQL语句插入、修改和删除表数据。

三、实验内容

(一):2学时

使用SQL语句完成下列题目:

1、创建一个名为agristore的数据库,采用字符集latin1和校对规则latin1_swedish_ci。

2、修改数据库agristore的默认字符集gb2312,校对规则为gb2312_chinese_ci。

3、在数据库agristore中创建如下表,表结构如下:

用户表account

属性名称

含义

数据类型

为空性

备注

userid

用户编号

Char(5)

NOT NULL

主键

fullname

用户名

Varchar(10)

NOT NULL

password

密码

Varchar(20)

NOT NULL

sex

性别

Char(2)

NOT NULL

address

住址

Varchar(40)

NULL

email

邮箱

Varchar(20)

NULL

phone

电话

Char(11)

NOT NULL

商品分类表category

属性名称

含义

数据类型

为空性

备注

catid

类别编号

Char(3)

NOT NULL

主键

catname

分类名称

Varchar(20)

NOT NULL

cades

类别描述

text

NULL

商品表product

属性名称

含义

数据类型

为空性

备注

productid

商品编号

Char(7)

NOT NULL

主键

catid

类别编号

Char(3)

NOT NULL

name

商品名

Varchar(30)

NOT NULL

descn

商品介绍

text

NULL

listprice

市场价格

Decimal(10,2)

NULL

unitcost

成本价格

Decimal(10,2)

NULL

qty

数量

Int

NOT NULL

订单表orders

属性名称

含义

数据类型

为空性

备注

orderid

订单号

Int

NOT NULL

主键,按订单生成顺序自动编号

userid

用户编号

Char(5)

NOT NULL

orderdate

订单日期

datetime

NOT NULL

当前日期

totalprice

订单总价

Decimal(10,2)

NULL

status

订单状态

Tinyint

NULL

订单明细表lineitem

属性名称

含义

数据类型

为空性

备注

orderid

订单号

Int

NOT NULL

主键

productid

商品编号

Char(7)

NOT NULL

主键

quantity

数量

Int

NOT NULL

unitprice

单价

Decimal(10,2)

NOT NULL

4、修改用户表account,向表中增加 新列“喜好”,数据类型为varchar(50),允许为空。

5、将account表中的列address的数据类型修改为varchar(50)。

6、删除account表中的“喜好”列。

(二):2学时

1、对orders表中userid(客户编号)列引用了account表中的userid(客户编号)。要求为orders表中userid(客户编号)列创建外键,以保证当要删除和更新account表中的数据时,只要orders表中还有该客户的订单,就拒绝对account表进行的删除和更新操作。

2、对lineitem表中productid(商品编号)列引用了product表中的productid(商品编号)。要求为lineitem表中productid(商品编号)列创建外键,以保证当要删除和更新product表中的商品编号时,自动删除或更新lineitem匹配的行。

3、在agristore数据库的下列表中插入如下数据:

用户表account数据

userid

fullname

password

sex

address

email

phone

u0001

刘晓和

123456

广东深圳市

liuxh@163.com

13512345678

商品表product数据

productid

catid

name

descn

listprice

unitcost

qty

0010001

001

金龙鱼一级大豆油5L

品质好

50.99

40.00

100

订单表orders数据

orderid

userid

orderdate

totalprice

status

20230411

u0001

2023-04-11 15:07:34

800

0

4、新进一批金龙鱼一级大豆油5L,数量为50桶,进价为45元,按库存与新进商品的平均值调整商品的成本价格。该商品将以高出成本价格20%的市场价格卖出,调整商品的市场价格和数量。

5、订单号为20230411的订单已经发货,在订单表中将该订单的状态修改为1。

6、删除商品表中名称为“金龙鱼一级大豆油5L”的商品信息。

四、实验参考代码

1、create database agristore

character set latin1

collate latin1_swedish_ci;

show create database agristore;

2、alter database agristore

default character set gb2312

default collate gb2312_chinese_ci;

show create database agristore;

3、(1)use agristore;

CREATE TABLE  account  (

   userid  char(5) NOT NULL,

   fullname  varchar(10) NOT NULL,

   password  varchar(20) NOT NULL,

   sex  char(2) NOT NULL,

   address  varchar(40) NULL,

   email  varchar(20) NULL,

   phone  char(11) NOT NULL,

  PRIMARY KEY  ( userid )

) ;

desc account;

(2)

CREATE TABLE  category  (

   catid  char(3) NOT NULL,

   catname  varchar(20) Not NULL,

   cades  text NULL,

  PRIMARY KEY  ( catid )

);

desc category;

(3)

CREATE TABLE  product  (

   productid  char(7) NOT NULL,

   catid  char(3) NOT NULL,

   name  varchar(30) Not NULL,

   descn  text NULL,

   listprice  decimal(10,2)  NULL,

   unitcost  decimal(10,2)  NULL,

   qty  int NOT NULL,

  PRIMARY KEY  ( productid )

) ;

desc product;

(4)

CREATE TABLE  orders  (

   orderid  int  NOT NULL auto_increment,

   userid  char(5) NOT NULL,

   orderdate  datetime NOT NULL DEFAULT NOW(),/*由于MySQL5.6以下的版本不支持datetime类型default now()的写法,故此处的也可以写成orderdate timestamp NOT NULL default now()*/

   totalprice  decimal(10,2)  NULL,

   status  tinyint  NULL,

  PRIMARY KEY( orderid )

) ;

desc orders;

(5)

CREATE TABLE  lineitem  (

   orderid  int NOT NULL,

   productid  char(7) NOT NULL,

   quantity  int NOT NULL,

   unitprice  decimal(10,2) NOT NULL,

  PRIMARY KEY  ( orderid , productid )

) ;

desc lineitem;

4、Alter table account add column 喜好 varchar(50) null;

Desc account;

5、Alter table account modify column address varchar(50);

Desc account;

6、Alter table account drop column 喜好;

Desc account;

(二)1、alter table orders

add constraint foreign key(userid)

references account(userid)

on update restrict

on delete restrict;

show create table orders\G

2、alter table lineitem

add constraint foreign key(productid)

references product(productid)

on update cascade

on delete cascade;

show create table lineitem\G

3、(1)

INSERT INTO  account  VALUES ('u0001', '刘晓和', '123456', '男', '广东深圳市', 'liuxh@163.com', '13512345678');

select * from account;

(2)INSERT INTO  product  VALUES ('0010001', '001', '金龙鱼一级大豆油5L', '品质好', 50.99, 40.00, 100);

select * from product;

(3)INSERT INTO  orders  VALUES (20230411, 'u0001', '2023-04-11 15:07:34', 800.00, 0);

select * from orders;

4、update  product

Set unitcost=(qty*unitcost+45*50)/(qty+50),listprice=unitcost*1.2,qty=qty+50

where name='金龙鱼一级大豆油5L';

修改前:select * from product;

修改后:select * from product;

5、update orders set status=1 where orderid=20230411;

修改前:select * from orders;

修改后:select * from orders;

6、delete from product where name='金龙鱼一级大豆油5L';

删除前:select * from product;

删除后:select * from product;

这篇关于实验1 数据库及表的管理和数据操纵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/645021

相关文章

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad