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 ...
随机推荐
- Java程序员应该知道的linux命令
1.查看Java进程:ps -ef|grep java,ps auxf|grep jva; 2.杀死所有Java进程: pkill java, kill -9 进程ID: 3.进入目录:cd /usr ...
- vue.js练习经验总结
1.最好JSON数据与(模板里 v-bind里绑定的自定义属性不要重名),根据console控制台的提示来看,应该是重名所引起的编译错误 2.还有个很奇怪的问题,局部注册vue的过滤器,到了模板之后不 ...
- Drupal Module Hooks
Drupal is a Content Management System. Drupal is also deeply, deeply weird. While systems like Magen ...
- Java NIO(三) Buffer
Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...
- QTableview 只显示横向线
#include <QApplication> #include <QTableWidget> #include <QPainter> #include <Q ...
- 使用mysql5.7新特性解决前通配符查询性能问题
众所周知,在mysql里的后通配符可以使用索引查找,前通配查询却无法使用到索引,即使是使用到了索引,也是使用了索引全扫描,效率依然不高,再MySQL5.7之前,一直都没有好的办法解决,但是到了MySQ ...
- SONA Topology
N多年以前就有有人设计传了一种类似“房子”状结构的拓扑图,在Cisco的文档中可以查到这种叫SONA.这是个非常神奇的设计,适合用于中小型网络,之所以这么讲,是因为在这个结构下,但凡任何一台接入层或者 ...
- 如何在SAP CRM WebClient UI里创建HANA Live Report
1. 使用业务角色ANALYTICSPRO登录WebClient UI: 2. 点击新建按钮: 为新建的报表分配一个HANA Live Query: 指定Query的参数: 上图WebClient U ...
- 2019.03.19 ZJOI2019模拟赛 解题报告
得分: \(100+10+45=155\)(\(T1\)又是水题,\(T2\)写暴力,\(T3\)大力\(STL\)乱搞) \(T1\):哈夫曼树 首先,根据题目中给出的式子,可以发现,我们要求的其实 ...
- POJ 2942 圆桌骑士
之前做过这个题目,现在回想起来,又有新的柑橘. 求必须出去的骑士人数. 每一个双连通分量,如果是一个奇圈,那么一定是二分图染色失败. 依次遍历每个双连通分量,但是,对于邻接表中,有一些点不是双连通分量 ...