データベースの基盤。データベースのクエリと制約[ジョブ]


I.はじめに

このトピックでは、データベースの基本的な操作に習熟しているかどうかを引き続き確認します


2.トピック:情報に基づいて対応するフォームを作成します

既知:商品情報テーブル

テーブル名はGoodsで、ID(インクリメンタルプライマリキー)、NAME(名前、一意性制約)、価格(価格)、商標(ブランド)、タイプ(タイプ、デフォルト値は「携帯電話」)のフィールドが含まれています。

フォーム情報

(1)表を作成するためのステートメントを書き出します。
(2)価格が2000未満の商品の名前と残りの数量を照会します。

(3)各カテゴリーの商品数を数える

(4)すべての商品を価格順に出力する

(5)各カテゴリーの最低商品価格の統計

(6)Samsungブランドのすべての製品を照会する

(7)価格が最も高い上位3つの商品情報を照会する

(8)Appleブランドの製品カテゴリの総数を照会します

(9)SQLステートメントを書き出し、テーブルにレコードを挿入します

(10)SQLステートメントを書き出し、510093という番号の商品の数を5に変更します。

(11)sqlステートメントを書き出し、数量0の製品を削除します。

3.発生したバグ:

1.自己インクリメントステートメントは使用できません

IDに対して自動インクリメント文を記述し、自動インクリメント操作を実行するために必要なタイトルを確認したので、インターネットを検索したところ、identity(1,1)を自動インクリメント文として使用できることがわかりました。

Create table Goods (
	ID int primary key identity(1,1), 
	NAME char(30),
	Price int,
	trademark char(30),
	Type char(30) default '手机' );

ID primary key identity(1,1);

データベースで上記のプログラムを操作した後、次の状況が発生します。
プログラムのバグ

ここでidentity(1,1)を使用できないのはなぜですか?

MySQLでIDを使用できない理由:

  • その理由は、MySQLにはID機能がなく、MySQLで自動番号付けを設定するにはauto_incrementが必要なためです。
create table student(
	id int primary key auto_increment,
	name varchar(20)
)

#设置自增的初值
AUTO_INCREMENT=<你期望的起始id值>
ALTER TABLE <表名> AUTO_INCREMENT=<你期望的起始id值>
#eg:
alter table student auto_increment = 100;

第四に、答えは参照用です

1.テーブルを作成します

//建表
create table Goods (
ID int auto_increment primary key not null, 
NAME char(30),
Price int ,
CNT int ,
trademark char(30),
Type char(30) default '手机' );

//设置自增初值
alter table goods auto_increment = 51091;

insert into goods (NAME,Price,CNT,trademark,Type) value('MacBook Air MD224',8799,30,'Apple','笔记本');
insert into goods (NAME,Price,CNT,trademark,Type) value('Galaxy Note II N7100',5199,100,'Samsung','手机');
insert into goods (NAME,Price,CNT,trademark,Type) value('MV800',1499,200,'Samsung','相机');
insert into goods (NAME,Price,CNT,trademark,Type) value('K860 四核 3G',2188,300,'Lenovo','手机');
insert into goods (NAME,Price,CNT,trademark,Type) value('S7562 3G',1798,200,'Samsung','手机');
insert into goods (NAME,Price,CNT,trademark,Type) value('Y470P-IFI',4299,200,'Lenovo','笔记本');
insert into goods (NAME,Price,CNT,trademark,Type) value('NP-E3415-J01CN',3300,150,'Samsung','笔记本');
insert into goods (NAME,Price,CNT,trademark,Type) value('iPhone 4S 64G',4799,220,'Apple','手机');

この時点で、テーブルが作成されています。

でる

2.残りの質問

#第二题(2). 查询价格在2000以下的商品名称和剩余数量
select NAME,CNT,Price from goods where price < 2000;

#第三题(3). 统计各个类别下的商品数量
select type,sum(cnt) SumType from goods group by type;

#(4). 按价格排序输出全部商品
select ID, name,price, trademark from goods order by price asc;

#(5). 统计各个类别下的最低商品价格
select type, min(price) minPriceofType from goods group by type;

#(6). 查询Samsung品牌下的所有商品
select ID,name from goods where trademark = 'Samsung';

#(7). 查询价格最高的前3个商品信息
select id, name, price, cnt, type from goods
order by price desc limit 0,3;

#(8). 查询Apple品牌下的商品类别总数
select type, count(ID) from goods where trademark = 'Apple' group by type;

#(9). 写出SQL语句,向表中插入一条记录
insert into goods value(5555,'Legin_Y7000',6999,1,'lenove','笔记本');

#(10). 写出SQL语句,修改编号为51093的商品数量为5
update goods set cnt = 5 where id = 51093;

#(11).写出sql语句,删除数量为0的商品
delete from goods where cnt = 0;

すべての手順を実行した後:

テーブルが作成されました!

おすすめ

転載: blog.csdn.net/weixin_43801418/article/details/110848103