个人金融管理系统

一、表结构

CREATE DATABASE finance -- 创建储存数据库
ON(
	NAME=finance,
	FILENAME='D:\finance.mdf',
	SIZE=20mb,
	MAXSIZE=40MB,
	FILEGROWTH=10%
)LOG ON(
	NAME=finance_log1,
	FILENAME='D:\finance_log.ldf',
	SIZE=10mb,
	MAXSIZE=20MB,
	FILEGROWTH=10%
	);
go
USE finance;
GO
CREATE TABLE cost_type( -- 花费类型表
	id INT PRIMARY KEY IDENTITY, -- 只是用来排序
	cost_type varchar(50) NOT NULL UNIQUE -- 花费类型
	)
go
CREATE TABLE const_detail( -- 花费详情表
	id INT PRIMARY KEY IDENTITY,	-- 只是用来排序
	detail varchar(100) NOT NULL, -- 花费详情
	price FLOAT NOT NULL, -- 花费价格
	goods_img IMAGE,
	cost_type varchar(50) FOREIGN KEY REFERENCES cost_type(cost_type),
	add_time DATETIME DEFAULT getdate(),
	cost_time char(20)
	)
go
CREATE TABLE finance.dbo.finance_type -- 金融类型表,描述了我金融的存储区
(	id tinyint PRIMARY KEY IDENTITY, -- id 的类型为tinyint,大小介于0~255
	finance_name VARCHAR(50) NOT NULL
)

忘记自增数据

​ 刚开始忘了对两个表的id字段进行自增,本来想使用ALTER修改id字段,后来发现**T-SQL只能在创建表时添加IDENTITY属性。**

​ 自增列不能直接修改,必须将原有ID列删除,然后重新添加一列具有identity属性的ID字段。

插入外键数据:

use finance;
go
INSERT INTO cost_type(cost_type)
VALUES	('正餐'),
		('零食'),
		('网购'),
		('生活用品')

插入数据

use finance;
go
INSERT INTO dbo.const_detail
(detail,price,goods_img,cost_type,cost_time)
VALUES
('四个包子+一碗粥',5,'C:\Users\Godest\Desktop\四个包子5块钱.jpg','正餐','上午'),
('民餐:拌面',5,'C:\Users\Godest\Desktop\IMG_20190514_141303.jpg','正餐','中午'),
('一卷卫生纸+牙膏',8,'C:\Users\Godest\Desktop\1557815748121.jpg','生活用品','中午')

对象名无效

​ 在第二次插入数据时,提示:“对象名无效”,该问题当填写VALUES值时SSMS出现提示,经排查,发现时因为字段名加了引号,将引号去掉就行了。

添加外键时提示“引用的表无效”

​ 添加外键的字段要求为主键或不是候选码,应该添加UNIQUE约束:

添加UNIQUE约束

ALTER TABLE finance.dbo.finance_type
ADD CONSTRAINT  UQ_fin_name UNIQUE(finance_name)
-- UQ_fin_name为约束名
-- finance_name为添加约束的字段列表

创建资金转移表

CREATE TABLE finance.dbo.finance_switch
(	id INT PRIMARY KEY IDENTITY , -- id 的类型为INT,可以为负数,此次应约束
	finance_source VARCHAR(50) NOT NULL, -- 转移方
	finance_end VARCHAR(50) NOT NULL, --接受方
	CHECK(id>=0),
	FOREIGN KEY(finance_source) REFERENCES finance.dbo.finance_type(finance_name),
	FOREIGN KEY(finance_end) REFERENCES finance.dbo.finance_type(finance_name)
)
GO
INSERT INTO finance.dbo.finance_type
(finance_name)
VALUES
('农行卡'),
('老爸'),
('一卡通'),
('澡堂卡'),
('洗衣机'),
('饮水机'),
('其他人')
-- 但是洗衣机不是充钱的,删除
DELETE FROM  finance.dbo.finance_type
WHERE finance_name='洗衣机'

添加字段

ALTER TABLE finance.dbo.finance_switch
ADD  num INT NOT NULL CHECK(num>=0)

查看表结构

sp_help查询:

EXEC sp_help 'finance.dbo.const_detail'

查询结果如下:

1557817145157

1557817197840