数据库

第二周作业

前提是你 提交于 2020-03-11 19:22:59
一、使用数据库系统有什么好处? 1数据结构化 2数据的共享性高,冗余度低易扩充 3数据独立性高 4数据由数据库管理系统统一管理和控制 二、数据库管理系统的主要功能有哪些? 1数据定义功能 2数据组织、存储和管理 3数据操纵功能 4数据库的事务管理和运行管理 5数据库的建立和维护功能 6其他功能 三、1模式定义: 也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。 2内模式定义: 也称存储模式,一个数据库只有一个内模式。是数据物理结构和存储方式的描述,是数据在数据库内部组织方式。 3外模式: 也称子模式或用户模式。它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征描述,它是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。 4数据定义语言 用于改变数据库结构,包括创建、更改和删除数据库对象。 5数据操纵语言 用于检索、插入和修改数据。 来源: CSDN 作者: 豪情万丈灬 链接: https://blog.csdn.net/weixin_46432951/article/details/104798610

oracle分析函数Rank, Dense_rank, row_number

强颜欢笑 提交于 2020-03-11 18:02:37
一、使用 rownum 为记录排名: 在前面一篇《 Oracle 开发专题之:分析函数》,我们认识了分析函数的基本应用,现在我们再来考虑下面几个问题: ① 对所有客户按订单总额进行排名 ② 按区域和客户订单总额进行排名 ③ 找出订单总额排名前 13 位的客户 ④ 找出订单总额最高、最低的客户 ⑤ 找出订单总额排名前 25% 的客户 按照前面第一篇文章的思路,我们只能做到对各个分组的数据进行统计,如果需要排名的话那么只需要简单地加上 rownum 不就行了吗?事实情况是否如此想象般简单,我们来实践一下。 【 1 】测试环境: SQL > desc user_order; Name Null ? Type ----------------------------------------- -------- ---------------------------- REGION_ID NUMBER ( 2 ) CUSTOMER_ID NUMBER ( 2 ) CUSTOMER_SALES NUMBER 【 2 】测试数据: SQL > select * from user_order order by customer_sales; REGION_ID CUSTOMER_ID CUSTOMER_SALES ---------- ----------- -------------- 5 1

删除sqlserver日志 [2005未经验证]

谁说我不能喝 提交于 2020-03-11 17:58:50
1: 删除LOG 1:分离 数据库 企业 管理器-> 服务 器-> 数据库 ->右键->分离 数据库 2:删除LOG文件 3:附加 数据库 企业 管理器-> 服务 器-> 数据库 ->右键->附加 数据库 此法生成新的LOG,大小只有520多K 再将此 数据库 设置自动收缩 或用 代码 : 下面的示例分离 77169database,然后将 77169database 中的一个文件附加到当前 服务 器。 EXEC sp _ detach _ db @dbname = '77169database' EXEC sp _ attach _ single _ file _ db @dbname = '77169database', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\77169database.mdf' 2:清空日志 DUMP TRANSACTION 库名 WITH NO _ LOG 再: 企业 管理器--右键你要压缩的 数据库 --所有任务--收缩 数据库 --收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 3: 如果想以后不让它增长 企业 管理器-> 服务 器-> 数据库 ->属性->事务日志->将文件增长限制为2M

缓存之穿透,击穿,雪崩

十年热恋 提交于 2020-03-11 17:37:40
1、缓存穿透 概念: 正常情况下,需要查询的数据都存在,当查询一个缓存和数据库都不存在的数据时,每次请求都会落在数据库里,这种情况成称为缓存穿透。 问题: 缓存穿透一般会导致数据库压力增大。恶意攻击会击垮数据库。会绕过缓存。 解决: 1、在接口增加参数校验,不合法的直接返回。 2、缓存空值,将对应key的value设置为空值,避免暴力攻击。同时将key失效时间设置短一些,避免影响正常使用。 3、在网关阈值,限制同ip访问量。 4、高级用户布隆过滤器。bloom filter,可以对key进行判断是否在数据库存在,不存在就直接返回,存在就查询出来,并刷新缓存。 2、缓存击穿 概念: 高并发系统中,大量请求一般会落在缓存中,但在某一时刻这个热点key过期了,此刻大量请求就会落在数据库。 问题: 会导致数据库压力增大,严重者击垮数据库。 解决: 1、设置热点key不过期。 2、加上分布式锁,每次只有拿到锁的线程可以去访问数据库。第一个线程查询到后就会缓存起来,后面线程从缓存中拿。 3、缓存雪崩 概念: 某一时刻发生大规模缓存不可用问题,比如宕机,过期。 问题: 轻则查询变慢,重则大面积服务不可用。 解决: 1、采用分布式集群,减少宕机风险。 2、将key的失效时间设置为随机数,避免大量缓存同时失效。 3、采用本地缓存加限流逻辑。 来源: oschina 链接: https://my

SQL注入详解

↘锁芯ラ 提交于 2020-03-11 17:02:08
今天跟大家分享SQL注入的知识。 前言 先来看一副很有意思的漫画: 相信大家对于学校们糟糕的网络环境和运维手段都早有体会,在此就不多做吐槽了。今天我们来聊一聊SQL注入相关的内容。 1 何谓SQL注入? SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。大家也许都听过某某学长通过攻击学校数据库修改自己成绩的事情,这些学长们一般用的就是SQL注入方法。 SQL注入其实就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。简单来说,就是数据「越俎代庖」做了代码才能干的事情。 这个问题的来源是,SQL数据库的操作是通过SQL语句来执行的,而无论是执行代码还是数据项都必须写在SQL语句之中,这就导致如果我们在数据项中加入了某些SQL语句关键字(比如说SELECT、DROP等等),这些关键字就很可能在数据库写入或读取数据时得到执行。 多言无益,我们拿真实的案例来说话。下面我们先使用SQLite建立一个学生档案表。 SQL数据库操作示例: import sqlite3 连接数据库: conn = sqlite3 . connect ( 'test.db' ) 建立新的数据表: conn . executescript ( '' 'DROP TABLE IF EXISTS students ; CREATE TABLE

如何单独启动wamp 中自带的MySQL

∥☆過路亽.° 提交于 2020-03-11 16:51:03
一、软件环境   python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块。本篇文章我是记录了python操作mysql数据库, mysql数据库下载   由于我之前安装的是wampserver,默认安装了php、mysql和apache这3个环境,因此我没有在单独安装mysql数据库,只是下载了一个mysql管理工具Navicat for MySQL。在使用Navicat for MySQL连接本地mysql数据库时,发生连接失败问题,经过网上查询得知是mysql服务没有启动,如何启动mysql服务请看 如何单独启动wamp 中自带的MySQL 。其实很简单,就是打开命令行,选择目录到mysql数据库的bin目录下,执行mysqld命令即可。   mysql 和mysqld 的区别:   mysqld 是服务端程序   mysql是命令行客户端程序 二、数据库操作   python操作mysql数据库,新增、修改和删除比较简单,都是执行一个简单的sql语句。查询除了执行sql语句外还需要使用 fetchone和 fetchall 来获取数据条目 1 # -*- coding: UTF-8 -*- 2 3 __author__ = 'Administrator' 4 5 import

SQLite3 of python

戏子无情 提交于 2020-03-11 13:45:12
SQLite3 of python 一、 SQLite3 数据库   SQLite3 可使用 sqlite3 模块与 Python 进行集成,一般 python 2.5 以上版本默认自带了sqlite3模块,因此不需要用户另外下载。 在 学习基本语法之前先来了解一下数据库是使用流程吧 ↓↓↓ 所以,首先要创建一个数据库的连接对象,即connection对象,语法如下: sqlite3.connect(database [,timeout,其他可选参数]) function: 此API打开与SQLite数据库文件的连接。如果成功打开数据库,则返回一个连接对象。 database: 数据库文件的路径,或 “:memory:” ,后者表示在RAM中创建临时数据库。 timeout: 指定连接在引发异常之前等待锁定消失的时间,默认为5.0(秒) 有了connection对象,就能创建游标对象了,即cursor对象,如下: connection.cursor([cursorClass]) function: 创建一个游标,返回游标对象,该游标将在Python的整个数据库编程中使用。 接下来,看看connection对象 和 cursor对象的 “技能” 吧 ↓↓↓ connection对象的方法 方法 说明 connect.cursor() 上述,返回游标对象 connect.execute

MySQL 导入数据

柔情痞子 提交于 2020-03-11 13:37:58
1、mysql 命令导入 使用 mysql 命令导入语法格式为: mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql) 实例: # mysql -uroot -p123456 < runoob.sql 以上命令将将备份的整个数据库 runoob.sql 导入。 2、source 命令导入 source 命令导入数据库需要先登录到数库终端: mysql> create database abc; # 创建数据库 mysql> use abc; # 使用已创建的数据库 mysql> set names utf8; # 设置编码 mysql> source /home/abc/abc.sql # 导入备份数据库 3、使用 LOAD DATA 导入数据 MySQL 中提供了LOAD DATA INFILE语句来插入数据。 以下实例中将从当前目录中读取文件 dump.txt ,将该文件中的数据插入到当前数据库的 mytbl 表中。 mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;  如果指定LOCAL关键词,则表明从客户主机上按路径读取文件。如果没有指定,则文件在服务器上按路径读取文件。 你能明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符。 两个命令的

MySQL操作笔记(持续更新)

泪湿孤枕 提交于 2020-03-11 13:13:51
参数了解 参数 描述 -u 用户名 -h 地址 -p 密码 MySQL基本命令 通过mysql -u root -p 来启动mysql show databases ; #查看当前实例下包含多少个数据库 create database [IF NOT EXISTS] 数据库名 ; # 创建新的数据库 drop database 数据库名 ; #删除指定数据库 use 数据库名 ; #进入指定数据库 show tables ; #进入数据库后查询该数据库下包含多少个数据表 desc 表名 ;# 查看指定数据表的表结构 show create table 表名;#观看建表语言 创建和使用数据库 数据库大小写敏感,而SQL语句不敏感 create database menagerie; use menagerie # 进入数据库 mysql -h host -u user -p menagerie # 连接到指定数据库,不然每次都要使用use来进入 创建表 show tables; # 查看所有表 create table pet (name varchar(20), sex char(1), birth date, death date); # 创建表 describe pet; # 查看表 导入数据 load data local infile ‘/path/pet.txt’

SQL-高级开发

非 Y 不嫁゛ 提交于 2020-03-11 13:13:33
SQL-高级开发 添加登录账户(重点) EXEC SP_addlogin 'sa' , '123' 创建数据库用户 EXEC sp_grantdbaccess 'sa' , 'sauser' 给数据库用户授权 授权的语法 grant select , insert , update on scorelist to sauser 收回授权的语法 REVOKE SELECT ON scorelist to sauser 固定角色 角色名称 角色描述 db_owner 在数据库中有全部权限。 db_accessadmin 可以添加或删除用户ID。 db_ddladmin 可以发出ALL DDL操作的所有权。 db_securityadmin 可以管理全部权限、对象所有权、角色和角色成员资格。 db_backupoperator 可以发出DBCC、CHECKPOINT和BACKUP语句。 db_datareader 可以选择数据库内任何用户表中的所有数据。 db_datawriter 可以更改数据库内任何用户表中的所有数据。 db_denydatareader 不能选择数据库内任何用户表中的任何数据。 db_denydatawriter 不能更改数据库内任何用户表中的任何数据。 赋予数据库用户固定角色 EXEC sp_addrolemember 'db_datareader' ,