数据库的创建和操作

创建和操作数据库

1.创建数据库的基本要求

【1】主数据文件:一个数据库有,且只能有一个。扩展名是.mdf。

【2】次要数据文件:可以根据需要添加多个,并且可以分布在不同的磁盘上。扩展名.ndf。

【3】日志文件:有且至少有一个日志文件,也可以多个。扩展名是.ldf。

2.数据库创建要思考的问题

【1】数据容量:根据需要预估。

【2】文件分布:根据容量大小,创建不同次要数据文件。分布存储。

3.基于T-SQL脚本创建数据库实例

 1 use master--表示当前我们要在master数据库中操作
 2 go        --表示批处理结束,这个go非常重要,在必要的地方必须写,在不需要的地方,绝对不能写。
 3
 4
 5 --我们在开发阶段,通会使用这种判断,查看数据库是否存在。因为我们会经常改动.如果数据库创建完毕,千万注意!
 6 if exists(select * from sysdatabases where name=‘CourseManageDB‘)
 7 drop database CourseManageDB
 8 go
 9
10 --创建数据库
11 create database CourseManageDB
12 on primary
13 (
14     --数据库的逻辑文件名(系统使用的必须唯一,但是我们看不见)
15     name=‘CourseManageDB_data‘,
16     --数据库物理文件名(这个是给操作系统用的,用来读取数据文件的)
17     filename=‘D:\SQLServer\DB\CourseManageDB_data.mdf‘,  --主数据文件名
18     --数据库文件初始大小(要根据实际的生产需求来定)
19     size=20MB,
20     --数据文件增量(也要参考文件本身大小)
21     filegrowth=5MB
22
23 )
24 ,
25 (
26     name=‘CourseManageDB_data1‘,
27     filename=‘D:\SQLServer\DB\CourseManageDB_data1.ndf‘,
28     size=20MB,
29     filegrowth=5MB
30 )
31 ,
32 (
33     name=‘CourseManageDB_log1‘,
34     filename=‘D:\SQLServer\DB\CourseManageDB_log1.ldf‘,
35     size=20MB,
36     filegrowth=5MB
37 )
38 go

4.基于T-SQL脚本创建数据表

数据表创建的要求

第一,必须规范命名(按照C#的名称规范设计)

第二,数据表必须要有主键(不建议用联合主键),因为数据默认物理存储就是按照主键排列的。

第三,数据表字段,可以根据需求添加约束,防止不合理的数据加入。

【1】主键约束:要求这个表中这个字段,必须是非空,唯一的。

不建议:组合主键

【2】检查约束:Check(约束条件),非常具有灵活性,让用户可以根据自己的需求对当前字段添加要求。

通常会用到相关的SQL的函数。

【3】唯一约束:也就是要求当前字段的数据,必须是唯一的,不能重复。

提醒:数据库的约束,是对数据保障的一个方法,他不是万能的,我们不要在数据库创建阶段,把约束添加的过多。

【4】默认约束:default 也就是在用户添加数据的时候,如果没有给这个值,会默认提供。

标识列:是一种自动增长列,要求我们给定标识列的种子和增长量。数据库会自动的按照这个要求,生成数据。

Identity(标识种子,增量)标识种子:在数据库设计的时候,通常会有划分。

要求:统一规划,增量一般都是以1为单位。

特点:标识列仅仅是为了唯一的区分而生成的,没有什么特别的意义。但是我们可以让他有意义。比如我们做主键,就非常好用。

贴别注意:我们不能给标识列,显式的赋值。标识列通常回合主键列一起使用。

【5】外来约束:

概念:就是说某一个数据表的一个列,是引用了其他数据表的主键。这个键就是外键列。

使用原因:如果我们没有外键,你会发现,数据表中,某些列会出现重复,而一致性被破坏。比如,我们的课程信息表中额课程分类

如果没有单独的课程分类表。那么在课程信息表中,课程分类表会有重复。而且,会在课程信息表没有的时候,分类也不存在

删除的时候,也会出现课程分类对是的问题。

例如:

1000   .NET高级VIP  重要讲解高级开发   300 .NET编程

1001   .NET全栈VIP  主要从基础到高级   300 .NET编程

1002   .NET上位机VIP  讲解工控控制系统 300  工控系列

以上数据,我们发现在添加,删除,修改都会出现问题!所以我们必须把它独立出去。

主键(主键表-->课程分类表)

10  .NET编程

11  工控系列

12  java系列

外键(这一列数据,必须在主键表中存在)

1000  .NET高级VIP   主要讲解高级开发   300   10

1001  .NET全栈VIP   主要从基础到高级   300   10

1002  .NET上位机VIP  讲解工控控制系统  200   11

1003  .NET运动控制VIP  讲解设备运动控制  200  13(因为13不在主键表中,所以这条数据是添加不进去的)

外键约束的要求:

【1】外键名称建议和主键一样。

【2】外键数据类型和长度必须和主键一致。

其他建议:我们编写数据库脚本的时候,一定要先添加灭有外键约束的数据表,因为后面要用到。

 1 use CourseManageDB  --这个大家不要忘记,否则你就会把表创建到master数据中
 2 go
 3
 4 --建议:先创建简单的数据表(没有外键关系的表)
 5 if exists(select*from sysobjects where name=‘Teacher‘)
 6 drop table Teacher
 7 go
 8 create table Teacher
 9 (
10     --规范:字段名称 数据类型和长度 约束要求(逐渐约束,检查约束,默认约束,外键约束)
11     TeacherID int primary key,
12     LoginAccount varchar(50) not null,
13     LoginPWD varchar(18) check(len(LoginPWD)>=6 and len(LoginPWD)<=18) not null,
14     TeacherName varchar(20) not null,
15     PhoneNumber char(11) unique not null,
16     NowAddress nvarchar(100) default(‘地址不详‘)
17 )
18 go
19
20 --课程分类表
21 if exists(select * from sysobjects where name=‘CourseCategory‘)
22 drop table Teacher
23 go
24 create table CourseCategory
25 (
26    CategoryID int identity(10,1) primary key,
27    CategoryName varchar(20) not null
28 )
29 go
30
31 --课程表
32 if exists(select * from sysobjects where name=‘Course‘)
33 drop table Course
34 go
35 create table Course
36 (
37    CourseID int identity(1000,1) primary key,
38    CourseName varchar(50) not null,
39    CourseContent nvarchar(500) not null,
40    ClassHour int not null,
41    Cedit int not null,
42    CategoryID int references CourseCategory(CategoryID) not null,  --外键约束
43    TeacherID int references Teacher(TeacherID)
44 )
45 go
46
47 --可以根据自己的项目的要求,扩展其他数据表。

测试数据的使用及其重要性

1.关于测试数据的重要性

我们创建数据库,必须基于脚本。然后正确的添加一部分基础数据。因为测试数据的准确性,会关系到我们后面项目数据的真实性。

2.测试数据要求

第一,必须通过脚添加。

第二,数据量多少根据你的要求决定(如果数据量很大,可以通过自己写程序,生成数据)。

第三,首先添加主键表的数据,其次添加外键表的数据。

注意:标识列,在插入数据的时候,如果这列有错误,下次你再插入的时候,这个标识列就被使用了,不能继续用了。

同理,如果你删除了106,当你再次添加的时候,会从107开始,也不会吧106给你补上。

 1 use CourseManageDB
 2 go
 3
 4 --讲师数据表
 5 insert into Teacher(TeacherName,LoginAccount,LoginPWD,PhoneNumber,NowAddress)
 6 values(‘X老师‘,‘.NET课程001‘,‘123456‘,‘12345678900‘,‘天津X区‘),
 7 (‘Y老师‘,‘.NET课程002‘,‘123456‘,‘12345678901‘,‘天津Y区‘),
 8 (‘Z老师‘,‘.NET课程003‘,‘123456‘,‘12345678902‘,‘天津Z区‘),
 9 (‘A老师‘,‘.NET课程004‘,‘123456‘,‘12345678903‘,‘天津A区‘),
10 (‘B老师‘,‘.NET课程005‘,‘123456‘,‘12345678904‘,default)
11
12 select * from Teacher
13
14 --添加课程分类
15 insert into CourseCategory(CategoryID,CategoryName) values(10,‘.NET编程‘),(11,‘工控开发‘),(12,‘Java编程‘)
16
17 select * from CourseCategory
18
19 insert into Course(CourseName,CourseContent,ClassHour,Cedit,CategoryID,TeacherID)
20 values(‘.NET/C#上位机开发VIP课程09‘,‘C#基础/OOP/SQL/WinForm/ASP.NET/WPF/WCF‘,500,10,10,102),
21       (‘.NET/C#上位机开发VIP课程10‘,‘基于PLC+C#开发课程‘,500,10,11,103)
22
23 select * from Course

特别的:当我们删除数据的时候,如果主键表中的数据已经被外键表引用过,则逐渐表这个数据无法直接被删除。

原文地址:https://www.cnblogs.com/LiyuLi/p/12236979.html

时间: 2024-10-11 03:59:47

数据库的创建和操作的相关文章

MySQL创建及操作数据库建议命令汇总

SQL全称:结构化查询语言(Structured Query Language) 包含4种语言 1.数据定义语言 DDL Data Definition Language 2.数据操作语言 DML Data Manipulation Language 3.数据查询语言 DQL Data Query Language 4.数据控制语言 DCL Data Control Language DDL中的常用命令: 1.创建数据库 create database db_name character set

SQL语句汇总(一)——数据库与表的操作以及创建约束

首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易出错.博主希望通过此文来战胜自己的健忘,如果大家认可也可以保留起来. "SQL"是 "Structured Query Language" 即“结构化查询语言”的简称,它是用来管理关系型数据库的. 其包括: –数据定义语言(DDL) –数据查询语言(DQL) –数据操作

使用Navicat定时备份mysql数据库和创建报表并邮件自动发送

数据库备份在现代计算机高速发展的今日变得日益重要,程序员往往因为不重视而忽略备份数据,导致数据丢失,造成非常严重的后果.定时备份无疑是解决备份的最好的途径,本文主要使用Navicat来自动备份数据库和创建相关的计划任务. (一)使用Navicat自动备份数据库: 1,打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击"计划",再点击"新建批处理作业"具体如下图. 2,双击上面的可用任务,它就会到下面的列表里去,也代表你选择了这个任务 3,点

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, name varchar(20), age integer ); 添加: insert into person(name, age) values('lisi', 19); 删除: delete from person where _id = 1; 修改: update person set name =

Duplicate复制数据库并创建物理StandBy(spfile+不同实例名+不同路径)

过程和Duplicate复制数据库并创建物理StandBy类似,只是不需要重启数据库. 目的:创建standby,不重启源数据库 1设定环境如下: Primary数据库 IP 172.17.22.16 SID orcl Standby数据库 IP 172.17.22.17 SID orcl_standby 设置提示,以区分操作的位置 primary数据库 set SQLPROMPT Primary> standby数据库 set SQLPROMPT StandBy> 1.Primary端设置

1月11日 数据库及表的操作

一.数据类型 1.二进制类型:(有长度限制,可放800个0.1) 格式: binary[(n)]                 --固定长度的n个字节二进制数据 varbinary[(n)]             --n个字节变长的二进制数据 2.字符数据 格式: char[(n)]   --固定长度为n的字符型数据 varchar[(n)]   --最大长度为n的变长字符型数据 相同点:两者最多存8kb,相当于8000个英文字母或数字,也相当于4000个汉字,超过4000字的一般用text

SQL语言基础及数据库的创建

一.数据类型:1.二进制数据二进制数据以十六进制形式存储.二进制数据最多能存8000个英文字符,4000个汉字字符. 2.字符数据char:存100,不足100补足.varcha:存多少占多少. 3.日期时间数据datetime        范围为 1753.1.1-9999.12.31smalldatetime   范围为 1900.1.1-2079.6.6 4.数值型数据decimal[(p[,s])]   p为总位数,即精度,包含小数点,s为小数位数.float相当于double,rea

(转)SQLite数据库增删改查操作

原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n).char(n).d

数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据库服务 输入net pause MSSQLserver 暂停数据库服务 输入net continue MSSQLserver 继续数据库服务 数据库的创建与管理(增删改查): 打开SQL Server 2008 方法二: 1.打开控制面板→管理工具→服务 2.右键进行选择 数据库的创建与管理: 打开