【基础1】SQL 数据库分类 代码建库、代码修改属性 代码建表 代码修改数据表属性 代码为数据表插入信息 数据的修改与删除

news2024/9/21 4:25:17

目录

数据库基础

代码建库

数据完整性

代码建表


数据库基础

  1. 系统数据库:master、model、tempdb、madb
  2. 数据库文件的组成:【数据文件可以放在不同的文件组里】
  • 主数据文件:*.mdf 主数据文件只能有一个
  • 次要数据文件:*.ndf
  • 日志文件:*.ldf 日志文件不属于任何文件组

数据库的拷贝

  1. 数据库分离和附加:右击——>任务——>分离【分离后数据库是与服务器分离,SQL界面的数据库就会消失,此时就可以剪切文件到U盘】 下次要用:又剪切到原文件夹,然后右击数据库——>附加——>选主数据文件所在文件夹。单机确定就会显示出来。

  2. 数据库的脱机与联机

    右击此数据库——>任务——>脱机。脱机后数据库还显示在SQL界面。

    【脱机后可完成数据库文件的剪切和复制】

    下次要用:重新剪切到原文件夹——>右击该脱机数据库——>任务——>联机。即可

    【不建议收缩数据库】

代码建库

create database XK--数据库名称
on primary--主文件组
(
name=XK_data,--主数据文件
filename='D:\project\XK_data.mdf',--主数据文件路径
size=10mb,--文件初始大小
maxsize=500mb,--文件增长最大容量限制
filegrowth=10mb--文件的增量
),
(
name=XK_data1,--辅数据文件
filename='D:\project\XK_data1.ndf',--辅数据文件路径
size=5mb,
maxsize=100mb,
filegrowth=1mb
),
filegroup client--新建的文件组
(
name=XK_data2,
filename='C:\project\XK_data2.ndf',
size=4mb,
maxsize=10mb,
filegrowth=1mb
)
log on--日志文件
(
name=XK_log,
filename='D:\project\XK_log.ldf',
size=5mb,
maxsize=unlimited,
filegrowth=1mb
),
(
name=XK_log1,
filename='D:\project\XK_log1.ldf',
size=5mb,
maxsize=unlimited,
filegrowth=10%
)
go



exec sp_detach_db 'XK'--分离XK数据库
exec sp_attach_db 'XK' , 'D:\project\XK_data.mdf'--附加XK数据库

exec sp_dboption  'XK' , 'read only' , 'false'--设置数据库只读为关闭
exec sp_dboption  'XK' , 'single user' , 'false'--设置数据库单用户访问(限制访问)为关闭
exec sp_dboption  'XK' , 'autoshrink' , 'false'--设置自动收缩为关闭
exec sp_dboption  'XK' , 'autoclose' , 'false'--设置自动关闭为关闭
exec sp_dboption  'XK' , 'auto create statistics' , 'true'--自动创建统计信息为开启
exec sp_dboption  'XK' , 'auto update statistics' , 'true'--自更新统计信息为开启

exec sp_renamedb 'XK' , 'XK1'--数据库重命名

alter database XK1 --修改数据库
modify name=XK  --修改数据库名称   modify是修改

drop database XK  --删除XK数据库


--------------------------------------------------------------------------------
alter database XK
add file   
(
name=XK_data3,
filename='C:\project\XK_data3.ndf',
size=5mb,
maxsize=unlimited,
filegrowth=1mb
) to filegroup client
----添加数据文件到client文件组

----------------------------------------------------------------------------------
alter database XK
add log file
(
name=XK_log2,
filename='c:\project\XK_log2.ldf',
size=10mb,
maxsize=20mb,
filegrowth=1mb
)
--添加日志文件


-------------------------------------------------------------------------------
alter database XK
remove file XK_log2
--删除文件  后+文件名

---------------------------------------------------
alter database XK
modify file
(
name=XK_data1,
size=6
)
------------修改辅数据文件初始大小

alter database XK
add filegroup mygroup
-----------添加文件组

alter database XK
remove filegroup mygroup
--------------删除文件组

alter database XK
modify filegroup client default
----------------修改client文件组为默认

alter database XK
modify filegroup client readonly
------------修改client文件组为只读

alter database XK
modify filegroup client readwrite
--------------修改client文件组为可写

alter database XK
modify filegroup [primary] default
--------------修改主文件组为默认时,要把主文件组文件名用中括号括起来

数据完整性

  1. 一致性+准确性=数据完整性

  2. 完整性包括:域完整性、实体完整性、引用完整性、自定义完整性

  3. 实体完整性 约束方法:唯一约束、主键约束、标识列 保证数据不重复、唯一

  4. 域完整性 约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束

  5. 引用完整性 外键用的值必须是主键里出现过的值 约束方法:外键约束

    ​ 建表先主后从 删除信息先从后主

  6. 自定义完整性 触发器:检查信用值 约束方法:规则、存储过程、触发器

  7. 约束的目的:确保表中数据的完整性

    常用的约束类型:

    主键约束 要求主键列数据唯一,并且不允许为空

    唯一约束 要求该列唯一,允许为空,但只能出现一个空值

    检查约束 某列取值范围限制、格式限制、如有关年龄的约束

    默认约束 某列的默认值,如班级男生较多,默认性别为男

    外键约束 用于两表间建立关系时指定引用主表的那一刻

    非空约束

  8. 选择主键的原则:

    量少性:尽量选择单个键作为主键

    稳定性:尽量选择数值更新少的作为主键

  9. 删除信息时需要注意的地方:

    • 当主表中没有对应的纪录时,不能将记录添加到子表——成绩表中不能出现在学员信息表中不存在的学号
    • 不能更改主表中的值导致子表中的记录孤立——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变。
    • 子表存在与主表对应的记录,不能从主表中删除该行——不能把有成绩的学员删除了。
    • 删除主表前,先删子表——先删除学员成绩表,后删除学员信息表。

在这里插入图片描述

代码建表

  1. 代码建表,修改属性

    use XK		--打开数据库
    
    create table Employees			--创建数据表
    (
    编号 char(6) not null constraint pk_编号 primary key,			--not null 不为空     primary key 主键
    姓名 char(8) not null ,
    性别 bit not null constraint df_性别 default 1 constraint ck_性别 check(性别=0 or 性别=1),	--default 1 默认约束为1  check检查约束
    部门 varchar(16) null,
    电话 varchar(20) null,
    地址 varchar(50) null
    )
    go
    
    --也可以把约束写在最后面,比如上面三个约束还可以这样写:
    use XK
    create table Employees--创建数据表
    (
    编号 char(6) not null ,	--not null 不为空     primary key 主键
    姓名 char(8) not null ,
    性别 bit not null  ,	    --default 1 默认约束为1  check检查约束
    部门 varchar(16) null,
    电话 varchar(20) null,
    地址 varchar(50) null,
    constraint pk_编号 primary key(编号),
    constraint ck_性别 check(性别=0 or 性别=1)
    )--如果是两个键联合做主键只能用这种表名约束      默认约束不能通过这个方式建立
    go
    
    alter table Empolyees--修改表的默认约束
    add constraint df_性别 default 1 for 性别
    go
    
    
    
    create table Goods
    (
    商品编号 int not null identity(1,1),		--identity(1,1)标识列(1,1)
    进货员工编号 char(6) not null,
    constraint pk_商品号 primary key(商品编号),
    constraint fk_进货员工编号 foreign key(进货员工编号) references Empolyees(编号)
    --				              外键				   引用     其他表(列名) 
    )
    go
    
    
    drop table Employees--删除数据表
    drop table Goods
    
    --修改数据表代码
    alter table  Employees
    drop column 进货时间--删除列
    
    alter table   Employees
    add 部门 int not null--添加列
    
    alter table  Employees
    alter column 部门 varchar(16)--修改列的数据属性
    
    alter table  Employees
    add constraint df_进货时间 default getdate() for 进货时间--添加约束
    --					getdate() 是一个系统函数,系统时间
    
    alter table  Employees
    drop constraint df_进货时间--删除约束
    
    exec sp_help Employees--查看数据表结构
    
    exec sp_rename  Employees, Employees				--重命名数据表
    
    select * from  Employees--数据表数据信息查询
    
    
  2. 两列联合做主键:复合键

    --当一个字段无法确定唯一性的时候,抄需要其他字段来一起形成唯一性。就是说用来组成唯百一性的字段如果有多个就是联合主键
    --如
    --学生成绩(学号,课程号度,成绩)
    --那学号和课程号就可以做为联合主键.
    --因为学号和课程号决定了成绩.也就是说.你要知知道成绩..你就要知道学号道,知道学号,但还不能知-道某一科的成绩.还要知道课程号.
    --所以函数依赖关系是{学号,课程号}->{成绩}
    alter table tb
    add constraint PK_ID primary key(学号,课程号)
    go
    

    为所建的表添加信息

    1. 单行信息插入

      --单行记录添加
      insert into 表名(列名,列名,列名,····) values(列值,列值,列值,······)
      --
      insert into Employees(编号,姓名,性别,部门,电话,地址)
      values('1001','赵飞燕',0,'采购部','12343212343','北京市南京路')
      
      --字符和日期型数据都必须加引号,各个数据之间逗号分隔   不省略列名的话,数据要与列名一一对应
      
      insert into Employees values('1002','赵飞燕',default,'销售部','97653212343','运城市南京路')
      --省略列名时,数据录入要严格按列顺序输入   有几列就给几个值
      
      insert into Goods values ('1001','sdlfjasg')
      --当数据表有标识列时,标识列数据不需要输入,系统自动给
      
      delete from Goods where 商品编号=6--删除插入表的数据信息
      delete from Goods--清空Goods数据表的全部数据信息
      --删除已经插入的标识列信息时,例如删除商品编号为6的数据,再次插入信息此时商品编号为7
      --此时只能把表做删除,然后用代码重新建表
      
      

      注意事项:

      1. 每个数据的数据类型、精度和小数位数必须与相应的列匹配
      2. 不能为标识列指定值,因为它的数字是自动增长的
      3. 如果在设计表的时候就指定了某列不允许为空,则必须插入数据
      4. 插入的数据项,要求符合检查约束的要求
      5. 具有缺省值的列,可以使用default(默认/缺省)关键字类代替插入的数值,且不用加单引号
    2. 多行数据的插入

      --
      --多行记录添加
      -- insert into 表名(列名,列名,列名,······)
      --select 列值.列值,列值,···· union
      --select 列值.列值,列值,···· union
      --select 列值.列值,列值,···· union
      --select 列值.列值,列值,···· union
      --select 列值.列值,列值,···· 
      --go
      --列名可以省略,但是要按照数据表中列的顺序添加列值
      
      insert into Employees(编号,姓名,性别,部门,电话,地址)
      select '1001' , '赵飞燕' , 0 , '采购部' , '01032198454' , '北京市南京东路55号' union
      
      
    3. 数据表的复制,数据的修改与删除

      --一一一
      --数据表的复制    ——利用 现有表 中的 所需列 重新建一个表
      
      --select 列名,列名··· into 新表名 from 原表名
      select 姓名 , 电话 into 通讯录 from Employees
      
      --复制数据表中所有列,含有数据
      select * into Employees1 from Employees    --没有条件复制全部数据
      select * from Employees1
      
      --复制数据表中所有列,不包含数据,但包含约束和数据   一个空表  
      select * into Employees2 from Employees where 1=2    --1!=2,所以只复制结构,不复制数据 满足条件则复制数据 
      select * from Employees2
      
      --数据添加
      --insert into 目标表名 select 各列名(*代表所有列名) from 原表名
      insert into Employees2 select * from Employees where 性别=1    --性别为1的插入到employees2中,要求两个表中的结构相同
      
      
      --二二二二二二二二二二
      --数据的修改
      --update 表名 set  列名=表达式 where 条件表达式
      
      select * from Employees
      update Employees set 部门='采购部' where 部门='销售部'				--把”销售部“改为“采购部”
      
      select * from Goods
      update Goods set 零售价=零售价+200 where 零售价<2000			  --零售价小于2000的+200
      update Goods set 零售价=零售价+200, 进货价=进货价+100 where 零售价<2000			  --零售价小于2000的+200进货价+100
      
      --三三三三三三三三
      --数据的删除
      --delete from 表明 where 条件表达式
      --truncate table 表名
      
      delete from employees2						--不带条件全部删除   清空时有记录,在日志文件中记录了清空数据
      delete from employees1 where 性别=0				--符合条件的删除
       
      truncate table employees1		--	与delete from employees1 效果相同      清空没有记录,数据不能恢复
      
      --在插入有标识列的信息时,因失误而需要删除信息重新插入时的方法
      --1、  用delete from employees2	删除,重新插入信息标识号不连续,只能删除数据表重新插入
      --2、  用truncate table employees2 删除,重新插入信息标识号连续
       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DolphinScheduler 集群模式部署

文章目录 DolphinScheduler 集群模式部署一、集群规划1、前置准备工作2、解压DolphinScheduler 安装包3、创建元数据库及用户 二、配置一键部署脚本1、初始化数据库2、一键部署 DolphinScheduler3、DolphinScheduler 启停命令 DolphinScheduler 集群模式部署 一、集群规划 集…

01.数据结构和算法概述

前言 数据结构是一个古老的课题。他与程序开发息息相关&#xff0c;但是我们日常开发中&#xff0c;好像很少让我们自己设计一个数据结构。只求程序能跑&#xff0c;并不太关注性能。但是它是我们软件开发人员的基本功&#xff0c;也是拉开普通程序员和高级程序员的一个门槛&a…

Selenium浏览器交互原理与应用,玩转Web自动化测试

目录 前言: 浏览器交互&#xff1a; Selenium的实现方式&#xff1a; Selenium WebDriver&#xff1a; WebDriver的等待机制: 总结&#xff1a; Web自动化测试&#xff1a; 前言: Web自动化测试是现代软件开发中必不可少的一个环节&#xff0c;它可以帮助开发人员快速自动…

ChatGPT4通道开放接入基于OPEN AI 平台你的任何APP 可一键接入AI 智能

你一定很好奇什么是 OPEN AI快速开发平台 顾名思义&#xff0c;开放的OPEN AI平台。 基于这个平台你的上层应用&#xff0c;如何 APP,小程序,H5,WEB, 公众号,任何一切终端都可以轻松接入&#xff0c;AI智能应用。 开发初衷 爆肝一周&#xff0c;我开源了ChatGPT 中文版接口&a…

Win11右键菜单选项变成英文了怎么恢复回来?

Win11右键菜单选项变成英文了怎么恢复回来&#xff1f;有用户在使用Win11系统的时候&#xff0c;遇到了右键菜单选项的一些选项变成英文的情况&#xff0c;导致自己的使用受到了影响。那么这个情况怎么去进行解决呢&#xff1f;来看看以下的解决方法吧。 方法一&#xff1a;直接…

零基础学网络安全?一般人我还是劝你算了吧

一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…

mathtype公式符号显示不对

文章目录 问题解决方法结果 记录攥写论文遇到的问题及解决方法 问题 使用mathtype编辑公式过后&#xff0c;发现公式显示不对&#xff0c;出现两种问题&#xff1a; 1&#xff1a;部分符号变为方框 2&#xff1a;符号大小异常 例如&#xff1a; 解决方法 第一种&#xff1a…

KDZD5550系列电压击穿试验仪操作说明

一、产品概述 KDZD5550系列电压击穿试验仪根据国家GB1408.1-2006《绝缘材料电气强度试验方法》其作用可称为电气绝缘强度试验仪、介质强度测试仪等。其工作原理是&#xff1a;把一个高于正常工作的电压加在被测设备的绝缘体上&#xff0c;持续一段规定的时间&#xff0c;加在上…

优思学院|DOE试验设计在六西格玛项目的哪个阶段进行?

六西格玛DMAIC是一种用于现有流程改进的方法&#xff0c;其中包括五个阶段&#xff1a;定义阶段&#xff08;D&#xff09;&#xff0c;测量阶段&#xff08;M&#xff09;&#xff0c;分析阶段&#xff08;A&#xff09;&#xff0c;改进阶段&#xff08;I&#xff09;和控制阶…

【C++动态内存管理】

目录 一、C/C内存分布二、C中动态内存管理2.1new/delete操作内置类型2.2new/delete操作自定义类型 四、new和delete的实现原理4.1内置类型4.2自定义类型 五、 定位new表达式(placement-new)六、总结 一、C/C内存分布 一张图重温一下C/C内存分布。 二、C中动态内存管理 C中的…

计算物理专题:高维Romberg数值积分方法

有话无话&#xff0c;先上代码&#xff0c;正确与否&#xff0c;先给结论&#xff0c;可信有无&#xff0c;先出文献计算物理&#xff0c;傅哥最强 真计算还得看SCU物拔&#xff08;不是&#xff09;&#xff08;狗头&#xff09;&#xff08;骄傲&#xff09;这种方法的思想是…

Springboot +Flowable,会签、或签简单使用(三)

一.简介 **会签&#xff1a;**在一个流程中的某一个 Task 上&#xff0c;这个 Task 需要多个用户审批&#xff0c;当多个用户全部审批通过&#xff0c;或者多个用户中的某几个用户审批通过&#xff0c;就算通过。 例如&#xff1a;之前的请假流程&#xff0c;假设这个请假流程…

【笔试强训选择题】Day15.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01; 文章目录 前言 一、…

Linux Shell 实现一键部署二进制Python

python 前言 Python由荷兰数学和计算机科学研究学会的吉多范罗苏姆于1990年代初设计&#xff0c;作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python语法和动态类型&#xff0c;以及解释型语言的本质&#xff0c;使…

监控知识体系

从来没讲过运维&#xff0c;因为我觉得运维这种东西不需要太多的知识面&#xff0c;然后我一个做了运维朋友告诉我大错特错&#xff0c;他就是从3K的运维一步步到40K的&#xff0c;甚至笑着说&#xff1a;我现在感觉自己什么都能做。 既然讲&#xff0c;就讲最重要的吧。 监控…

接口自动化测试分层设计与实践总结

本文以笔者当前使用的自动化测试项目为例&#xff0c;浅谈分层设计的思路&#xff0c;不涉及到具体的代码细节和某个框架的实现原理&#xff0c;重点关注在分层前后的使用对比&#xff0c;可能会以一些伪代码为例来说明举例。 接口测试三要素&#xff1a; 参数构造 发起请求&a…

NA、商业和分销市场通盘布局,华为“四大角色”浮出水面

作者 | 曾响铃 文 | 响铃说 数字经济深化发展&#xff0c;谋求数字化转型的行业、企业客户&#xff0c;越来越渴望满足自身需求的产品或解决方案。 这给从事转型服务的ICT厂商们提出了新的挑战。 在客户面前&#xff0c;拥有核心技术与支持能力的企业&#xff0c;与进击数字…

yolov1

1、对precision&#xff08;精确度&#xff09;和recall&#xff08;召回度&#xff09;的理解 1、TP TN FP FN的概念 TP&#xff08;True Positives&#xff09;意思就是被分为了正样本&#xff0c;而且分对了。 TN&#xff08;True Negatives&#xff09;意思就是被分为了负…

原装美国Agilent安捷伦34970A数据采集仪

Agilent安捷伦34970A数据采集仪 3槽主机&#xff0c;内置GPIB和RS232接口 6 1/2 位&#xff08;22 位&#xff09;内部 DMM&#xff0c;每秒扫描多达 250 个通道&#xff08;选件 001 不可用&#xff09; 8个开关和控制插件模块可供选择 内置信号调理可测量热电偶、RTD 和热敏电…

linux基础(IO)中

目录&#xff1a; 1.回顾上一篇的文件系统调用接口 2.返回值文件描述符 3.文件描述符分配规则 ---------------------------------------------------------------------------------------------------------------------------- 1.回顾上一篇的文件系统调用接口 open &…