个人金融管理系统
一、表结构
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'
查询结果如下:

