sql sever 基础 建表
---恢复内容开始---
SQL Sever 基础以创建银行数据库bankDB为案例
1、创建数据库
1-1 创建文件夹用以存放数据库
1-2 创建建库bankDB
2、创建数据库
2-1、创建用户信息表 userInfo
字段名称 |
数据类型 |
说明 |
customerID |
int |
客户编号,主键 |
customerName |
CHAR(8) |
客户姓名 |
PID |
CHAR(18) |
身份证号 |
telephone |
CHAR(13) |
电话 |
address |
VARCHAR(50) |
地址 |
- use bankDB
- create table userinfo --建表
- (
- customerID int identity(1,1), --客户id列 数据类型整型,标识列从1开始每次加1
- customerName char(8) NOT NULL,
- PID char(18) NOT NULL,
- telephone char(13) NOT NULL,
- address varchar(50)
- )
2-2、创建银行卡信息表 cardInfo
字段名称 |
数据类型 |
说明 |
cardID |
CHAR(19) |
卡号 |
curType |
CHAR(5) |
类型 |
savingType |
CHAR(18) |
存款类型(存或取) |
openDate |
DATETIME |
开户时间 |
openMoney |
MONEY |
开户金额 |
balance |
MONEY |
帐户余额 |
pass |
CHAR(6) |
密码 |
IsReportLoss |
BIT |
是否挂失 |
customerID |
Int |
客户帐号 |
- create table cardinfo
- (
- cardID char(19) NOT NULL,
- curType char(5) NOT NULL,
- savingType char(8) NOT NULL,
- openDate datetime NOT NULL, --开户时间 数据类型datetime
- openMoney money NOT NULL, --开户金额 数据类型 money
- balance money not null,
- pass char(6) NOT NULL,
- IsReportLoss bit,
- customerID int NOT NULL
- )
2-3、创建交易信息表 transInfo
字段名称 |
数据类型 |
说明 |
transDate |
DATETIME |
交易日期 |
transType |
CHAR(4) |
交易类型 |
cardID |
CHAR(19) |
卡号 |
transMoney |
MONEY |
交易金额 |
remark |
TEXT |
备注 |
- create table transinfo
- (
- transDate datetime NOT NULL,
- transType char(4) NOT NULL,
- cardID char(19) NOT NULL,
- transMoney money NOT NULL,
- remark text --备注长文本
- )
3、加约束
加约束,对于你创建的表添加一些限制,我的建议约束和创建表分开,我是学前端的我认为html、css、js除了活动页都要写在一起便于维护。约束也是这个意思,如果你非想写在表内,出门右拐谢谢。还有有些约束前端也会写,但是你还是要写,你做的不是大前端啊部门又不一样,前端要是没想到某个约束怎么办,保险啊老哥,严谨。我是这样认为的,学理都要严谨。还有大小写都一样,刚学完JavaScript在学这个很不习惯。。
3-1 userInfo表的约束
customerID 顾客编号 自动编号(标识列),从开始,主键
customerName 开户名 必填
PID 身份证号 必填,只能是位或位,身份证号唯一约束
telephone 联系电话 必填,格式为xxxx-xxxxxxxx或手机号位
address 居住地址 可选输入
- --建立用户表约束--
- --urseinfo表的约束--
- alter table userInfo
- add constraint PK_customerID --设为主键
- primary key (customerID)
- alter table userInfo
- add constraint ck_pid --检查身份证号是不是正确
- check (pid like'[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'or pid
- like'[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][X]')
- alter table userInfo
- add constraint CK_telephone --检查电话号是否正确
- check (telephone like '[0-9][1-9][1-9][1-9]-[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'or telephone
- like'[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
3-2 cardInfo表的约束
cardID 卡号 必填,主健, 银行的卡号规则和电话号码一样,一般前位代表特殊含义,
如某总行某支行等。假定该行要求其营业厅的卡号格式为:3576 xxxx xxx开始
curType 货币 必填,默认为RMB
savingType 存款种类 活期/定活两便/定期
openDate 开户日期 必填,默认为系统当前日期
openMoney 开户金额 必填,不低于元
balance 余额 必填,不低于元,否则将销户
pass 密码 必填,位数字,默认为个
IsReportLoss 是否挂失 必填,是/否值,默认为”否”
customerID 顾客编号 必填,表示该卡对应的顾客编号,一位顾客可以办理多张卡
- alter table cardinfo
- add constraint ck_cardid ---检查卡号正经银行每种卡每种号都不一样
- check(cardid like '1010 3576 [0-9][0-9][0-9][0-9] [0-9][0-9][0-9]')
- alter table cardinfo
- add constraint dk_curType --检查存款类型,虽然大部分都是人民币但是来个老哥要存美元不能按 default('RMB') for curType --照人民币的价值来存了
- alter table cardinfo
- add constraint ck_savingType --检查老哥要存什么样的有买理财的有存活期有存定期的
- check(savingType='定期' or savingType='活期')
- alter table cardinfo
- add constraint dk_openDate
- default(getdate()) for openDate --设置开户日默认就是当前日期
- alter table cardinfo
- add constraint ck_balance --查看余额 银行龟定
- check(balance>=1)
- alter table cardinfo
- add constraint dk_pass --设置默认密码
- default('') for pass
- alter table cardinfo
- add constraint dk_IsReportLoss--默认不挂失
- default(0) for IsReportLoss
- --这个约束写的绝对有毛病是我刚学写的现在不想改了凑活看吧
--找出自学刚开始找出错误要改正
3-3 transInfo表的约束
transType 必填,只能是存入/支取
cardID 卡号 必填,外健,可重复索引
transMoney 交易金额 必填,大于
transDate 交易日期 必填,默认为系统当前日期
remark 备注 可选输入,其他说明
- alter table transinfo
- add constraint CK_transType --现在交易方式真苛刻转账都不让
- check (transType in ('存入','支取'))
- alter table transinfo
- add constraint ck_transMoney --交易金额这个必须有啊你给我时候我取0元我都得给你跑一趟?
- check(transMoney>0)
- alter table transinfo
- add constraint dk_transDate --默认日期,不能交易玩不知道哪天吧
- default(getdate()) for transDate
4、 插入测试数据
- --录入数据--
- insert into userinfo
- select '张三','','0134-67898978','北京海淀'union
- select '李四','','0478-44443333','湖北武汉'union
- select '张清','','0743-46575797','浙江宁波'union
- select '陶庆','','0678-12457656','江西南昌'union
- select '王莉','','0235-68743236','云南丽江'
- select *from userinfo
- insert into cardinfo
- select '1010 3576 1234 567','RNB','活期',getdate(),30000,'','','',''union
- select '1010 3576 1235 567','RNB','定期',getdate(),5600,'','','',''union
- select '1010 3576 1236 567','RNB','活期',getdate(),6200,'','','',''union
- select '1010 3576 1237 567','RNB','定期',getdate(),53000,'','','',''union
- select '1010 3576 1238 567','RNB','活期',getdate(),4500,'','','',''
- select *from cardinfo
- --运行试试吧。 关于数据类型之类 善用搜索工具,
---恢复内容结束---
sql sever 基础 建表的更多相关文章
- SQL基础-建表
一.建表 1.创建表的两种方式 *客户端工具 *SQL语句 2.使用SQL语句创建表 表名和字段名不能使用中文:(一般为字母开头,字母.数字.下划线组成的字符串): CREATE TABLE关键字后跟 ...
- sql sever 基础知识及详细笔记
第六章:程序数据集散地:数据库 6.1:当今最常用的数据库 sql server:是微软公司的产品 oracle:是甲骨文公司的产品 DB2:数据核心又称DB2通用服务器 Mysql:是一种开发源代 ...
- SQL SERVER 生成建表脚本
/****** Object: StoredProcedure [dbo].[GET_TableScript_MSSQL] Script Date: 06/15/2012 11:59:00 ***** ...
- (转)SQL SERVER 生成建表脚本
https://www.cnblogs.com/champaign/p/3492510.html /****** Object: StoredProcedure [dbo].[GET_TableScr ...
- SQL Server基础之表级触发器
触发器分为两种,一种与数据表绑定,响应数据表指定动作(insert.delete或update),此处称为表级:一种与数据库本身绑定,响应数据定义语句(主要是CREATE.ALTER 和 DROP 开 ...
- 我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令
一.如果数据重要,请先备份数据 二.删除表中数据 SQL: Delete From ('表名') 如:Delete From abcd 三.执行新语句 SQL: dbcc checkident('表 ...
- sql server数据建表
use edudbgoif exists(select * from sysobjects where name='department')drop table departmentcreate ta ...
- SQL学习基础 => 创建表
--创建表 CREATE TABLE userinfo3 ( ID INT PRIMARY KEY NOT NULL, --ID 整数类型,设置为主键,并且不能为空 name ) NOT NULL, ...
- hbase基础建表语句
在Hadoop目录下的HBASE下执行命令 ./hbase shell 进入hbase环境 创建hbase 数据库表 create "表名", "字段A",&q ...
随机推荐
- Csharp: TreeView 初始化设置默认选择节点
/// <summary> /// 设置查找的节点为选定节点 /// 涂聚文 /// 2013-07-15 /// </summary> /// <param name= ...
- XUtils3 的 环境搭建与简单使用
XUtils3 的 环境搭建 环境搭建三部曲 ----------------------- 说明 : author 修雨轩陈 使用andorid Studio 已经创建了一个项目 并且自己需要使用 ...
- c++类模板成员函数报错
类模板成员函数要不就在类模板中实现,要不就和类模板写在同一个文件中. 否则然会出现下面错误: >main.obj : error LNK2019: 无法解析的外部符号 "public: ...
- Android应用开发基础之八:广播与服务(二)
服务两种启动方式 startService:服务被启动之后,跟启动它的组件没有一毛钱关系 bindService:跟启动它的组件同生共死 绑定服务和解绑服务的生命周期方法:onCreate->o ...
- win10安装mxnet cuda9.0-gpu版
类似于上一篇文章 Anaconda3.6 python3.6.5 cuda9.0+ cudnn7.0 安装MXNet 1.设置清华源 conda config --prepend cha ...
- python常用模块(二)
1.ConfigParser模块 用于生成和修改配置文档,在python3.x中变更为configparser 1 [DEFAULT] 2 ServerAliveInterval = 45 3 Com ...
- 4.Zabbix 3.0 案例
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=2807c0910cd63d309e1462128a31ae0e&sub=241A94E5717 ...
- JS支持可变参数(任意多个)
<script type="text/javascript"> function abc(){ //js中有个变量arguments,可以访问所有传入的值 for(va ...
- 对枚举数据类型使用switch
- 2018.10.5 hibernate导入约束,在Eclipse的xml文件实现自动提示
打开Java Resources/Libraries/hibernate-core-5.3.1.Final.jar/org.hibernate/hibernate-mapping-3.0.dtd(hi ...