SQL Server

【数据库视频】总结

我是研究僧i 提交于 2021-01-27 12:19:55
数据库视频已经看完半个月了吧,现在才做总结,也是怪不好意思的。哈哈哈哈 好了,说正事叭~! 看数据库视频给我的感觉就是枯燥,但是内容很丰富,讲解的也很详细。从SQL Sever的安装到里面的具体功能讲解的都非常到位。通过对视频的学习,我对数据库的理解就是将数据库分为三部分:1、数据库对象,2、数据库功能操作。3、数据库安全。看看我对数据库画的导图吧: SQL和T-SQL的区别 SQL结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。主要包括:数据定义语言(DLL)、数据操作语言(DML)、数据控制语言(DCL)三种类型。其中数据定义语言(DLL)用于定义数据结构,数据操纵语言(DML)用于检索和修改数据结构,数据控制语言(DCL)用于规定数据库用户的各种权限。 T-SQL是SQL程序设计语言的增强版,是用来让应用程序与SQL Server沟通的主要语言。T-SQL 提供标准 SQL的DDL 和 DML功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。就是说,T-SQL包含了很多SQL所不具备的东东.比如;流程控制语句,批处理,游标,函数等。 总结 我认为数据库的增、删、改、查是一切数据库操作的基础。数据库主要是对表、视图、索引

ABP框架(4)ABP框架中使用MySQL数据库

允我心安 提交于 2021-01-25 17:32:14
1.移除SQL Server的Nuget包 打开程序包管理器控制台,并选中.EntityFrameworkCore 然后依次执行: uninstall-package microsoft.entityframeworkcore.design uninstall-package microsoft.entityframeworkcore.sqlserver 2.安装MySQL的Nuget包 依次执行: install-package pomelo.entityframeworkcore.mysql.design install-package pomelo.entityframeworkcore.mysql 3.更改配置文件 在解决方案的EntityFrameCore层找到DbContextConfigurer文件,并做如下修改: 4.修改数据库连接字符串 在appsetting.json文件中修改数据库连接字符串: "Default" : "Server=localhost;Port=3306;Database=你的数据库名;Uid=数据库用户名;Pwd=密码;" 5.添加数据迁移 删除EntityFrameCore层中Migrations文件夹里的所有文件,别删除Migrations文件夹,然后重新生成解决方案,接着打开程序包管理器控制台,选中

Docker最全教程——数据库容器化之持久保存数据(十一)

﹥>﹥吖頭↗ 提交于 2021-01-23 05:22:59
上一节我们讲述了SQL Server容器化实践( 注意,SQL Server现在也支持跨平台 ),本节将讲述如何持久保存数据,并且接下来将逐步讲解其他数据库(MySql、Redis、Mongodb等等)的容器化实践,中间再穿插一些知识点和实践细节。由于实践需要花费大量的时间,而目目前业务繁忙,只能加班来进行一些实践并编写,如果编写比较慢,请多多海涵。 目录 如何持久保存数据? 默认情况下,在容器内创建的所有文件都存储在可写容器层中。这意味着: · 当该容器不再存在时,数据不会持久存在,并且如果另一个进程需要,则可能很难从容器中获取数据。 · 容器的可写层紧密耦合到运行容器的主机。数据迁移很麻烦。 · 写入容器的可写层需要存储驱动程序来管理文件系统。存储驱动程序使用Linux内核提供统一的文件系统。与直接写入主机文件系统相比,这种额外的抽象降低了性能 。 因此,如果我们使用容器命令docker rm删除了容器,那么容器中的所有内容均将丢失,包括 SQL Server 和数据库文件。 对于数据库(不仅仅是SQL Server)来说,了解 Docker 中的数据持久性至关重要 ! 那么我们如何在docker中持久保存我们的数据呢,即使关联的容器已经删除的情况下? 使用数据卷持久保存数据库文件 卷是保存Docker容器中的数据的首选机制。虽然绑定挂载依赖于主机的目录结构

Docker最全教程——数据库容器化(十)

时间秒杀一切 提交于 2021-01-23 05:00:58
终于按时完成第二篇。本来准备着手讲一些实践,但是数据库部分没有讲到,部分实践会存在一些问题,于是就有了此篇以及后续——数据库容器化。本篇将从SQL Server容器化实践开始,并逐步讲解其他数据库的容器化实践,中间再穿插一些知识点和实践细节。在编写的过程中,我一直处于一种矛盾的心理,是一笔带过呢?还是尽可能的将实践细节全部讲到位呢?最后,我选择了后者,虽然要花费更多的精力,但是既然开始了本次教程,就尽量写到位吧。 目录 数据库容器化 什么是数据库? 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。因此,所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。 目前主流的数据库分为关系型数据库和非关系型数据库(NoSQL)。 关系型数据库和非关系型数据库对比 主流的数据库 关系型数据库: · Microsoft SQL Server(Microsoft) · MySQL(开源) · Oracle(甲骨文) · MariaDB(MySQL的代替品) · PostgreSQL(开源) · DB2(IBM) 非关系型数据库: · MongoDB(面向文档) · CouchDB(面向文档,Apache基金会) · Redis(键值对数据库) · MemcacheDB

SQL Server解惑——查询条件IN中能否使用变量

雨燕双飞 提交于 2021-01-19 12:57:37
在SQL Server的查询条件中,能否在IN里面使用变量呢? 如果可以的话,有没有需要注意的地方或一些限制呢?在回答这个问题前,我们先来看看这个例子: IF EXISTS ( SELECT 1 FROM sys.objects WHERE name= 'TEST' AND type= 'U' ) BEGIN DROP TABLE TEST; END GO CREATE TABLE TEST ( ID INT , NAME VARCHAR (16) ); GO INSERT INTO dbo.TEST SELECT 1, 'a' UNION ALL SELECT 2, 'b' UNION ALL SELECT 3, 'c' UNION ALL SELECT 4, 'a,b' UNION ALL SELECT 5, '' 'b' ',' 'c' '' UNION ALL SELECT 6, '' 'b' ; GO 如下所示,如果查询条件里面,变量只有一个值,此时SQL是正常的。 DECLARE @name VARCHAR (16); SET @name= 'a' ; SELECT * FROM TEST WHERE name IN (@name); GO DECLARE @name VARCHAR (16); SET @name= 'a,b' ; SELECT * FROM TEST

为什么我们不用数据库生成 ID?

生来就可爱ヽ(ⅴ<●) 提交于 2021-01-19 09:27:36
先介绍一下背景 ???? 团队正在一个为 SQL Server 构建数据目录项目的历程中,我们 优化系统以实现解耦 。这对我们来说非常重要,从根本上来说,我归结为两个核心原则,希望每个软件专业人员都能认同: 我们不希望系统复杂度随功能的增加而线性增长,这样会大大拖慢我们在业务发展速度以及对于价值的信心。 我们希望能够优先 从客户需求、访问性能、查询模式、业务变化等方面考虑 ,能够适应不断发展的需求和需要。换句话说,我们希望能够将系统内的任何组件换成更合适的组件,以满足当前而不是过去的需求。 下面是 protoactor-go 开源项目里的一句话 “software should be composed, not built”,与我要在本文陈述的观点非常相似: 对持久化有何影响????? 考虑到前面总体原则,我们不想把自己的状态持久化耦合到一个特定的数据库引擎上。从实际情况来看,就是说不将持久化的具体关注点传递到领域层。之所以要实现这一点,因为我们今天对规则的认知可能会让我们依赖某种具体数据库技术,比如 SQL Server,但并不能确保它能满足未来的能力需求。 有了这个具体的要求,持久化就需要出现在域事件而不是存储系统中,这也导致不同的存储需求。 幸运的是,有一些广为人知的、经过实战检验的模式可以解决这个问题,如结合 CQRS 领域驱动设计中的聚合设计等。因此这里的假设是

运行ABP(asp.net core 3.X+Vue)提示'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。

a 夏天 提交于 2021-01-18 09:09:33
创建 ASP.NET Boilerplate ,还原数据库和启动客户端 这里就略过,具体参考 ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) ASP.NET Boilerplate VueJS Template 选择 Target Version:v3.x Target Framework: .NET Core (Cross Platform) Single Page Web Application:vue.js Choose your project's name: MyCompany.MyProject 用户名:admin 密码:123qwe 点击登录后成功进入系统,点击租户页面,提示错误: 对不起,在处理您的请求期间,产生了一个服务器内部错误! 请求信息: 查看日志信息,路径5.0.0\aspnet-core\src\MyCompany.MyProject.Web.Host\App_Data\Logs: ERROR 2019 - 12 - 13 12 : 47 : 27 , 121 [ 21 ] Mvc.ExceptionHandling.AbpExceptionFilter - ' OFFSET ' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。 Microsoft.Data.SqlClient.SqlException

扫描探测-Nmap

对着背影说爱祢 提交于 2021-01-18 06:54:05
目录 检测相关脆弱性漏洞 检测主机情况、端口状态、查看操作系统 破解数据库信息,获得相应权限 了解脚本使用 环境 靶机---->>>域名:mirror.dlut.edu.cn ---->>>IP:202.118.65.164 Nmap信息探测 1. 扫描特定网站 >>> nmap -sT 202.118.65.164,-sT为采用tcp扫描,但是一般都默认为tcp扫描可以不写,用nmap 202.118.65.164也是一样效果。 特点 :这是一种最为普通的扫描方法,扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现 原理 :通过建立TCP的三次握手连接来进行信息的传递 >>> 探测结果 :扫描的总时间为54.12秒,开放的80端口,使用http协议,其中有999个端口被屏蔽,可能开启了相关的防火墙策略。 2. 特定端口扫描 >>> nmap -sT 202.118.65.164 -p 21,23,3389 -p是指定的端口 >>> 探测结果:可查看三个端口的服务,三个端口都被过滤 3. 进行快速查找 >>> nmap -F -sT -v 202.118.65.164 正常情况下我们默认会最多查看1000个开发端口,这时候可以利用快速查看的命令进行扫描 -F:快速扫描100个最有可能开放端口 -v 获取扫描的信息 同样查看相关端口状态及服务

sql server 2017数据库复习:第七章-数据库保护(事务、排他锁共享锁、并发控制、可串行化调度、几种故障)+练习题

纵饮孤独 提交于 2021-01-17 17:01:05
在数据库运行过程中,数据库管理系统需要对数据库进行保护管理,以保证数据的正确性与一致性,避免数据丢失、泄露或遭到破坏。数据库保护主要是通过 并发控制、数据恢复、安全性控制和完整性控制 4个方面实现的。 本章主要讨论事务的基本概念与特性,并围绕如何保证事务的ACID(即原子性、一致性、隔离性、持久性)特性详细阐述并发控制技术,同时简单介绍数据恢复基本原理和技术。 事务 事务是一系列的数据库操作,是数据库应用程序的最小逻辑工作单位。事务处理技术主要包括数据库恢复技术和并发控制技术,它是恢复和并发控制的基本单位。 事务 是用户定义的一个数据操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单元。 事务的开始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由DBMS 按默认规定自动划分事务。在SQL中,定义事务的语句有三条: BEGIN TRANSACTION、COMMIT、ROLLBACK。 事务通常以 BEGIN TRANSACTION 开始,以 COMMIT 或 ROLLBACK结束 ,具体见以下两种方式。 (是以 ROLLBACK结束!而不是ROLLBACK TRANSACTION!) 方式一: BEGIN TRANSACTION SQL语句1 SQL语句2 COMMIT commit语句用于 提交事务 方式二: BEGIN TRANSACTION

Linux下操作SQLServer

风格不统一 提交于 2021-01-16 06:40:41
1. 说明  SQL Server是由Microsoft开发和推广的关系数据库管理系统。本文介绍在linux系统下,SQL Server的基本命令。 2. SQLServer基本命令 > sqlcmd - S localhost - U SA - P 密码 # 用命令行连接 (1) 建库 > create database testme > go (2) 看当前数据库列表 > select * from SysDatabases > go (3) 看当前数据表 > use 库名 > select * from sysobjects where xtype = ' u ' > go (4) 看表的内容 > select * from 表名; > go 3. Python程序访问SQLServer数据库 import pymssql server = ' localhost ' user = ' sa ' password = 密码 database = ' ecology ' conn = pymssql.connect(server, user, password, database) cursor = conn.cursor() cursor.execute( """ IF OBJECT_ID('persons', 'U') IS NOT NULL DROP TABLE