数据库
文章平均质量分 76
makerjack001
这个作者很懒,什么都没留下…
展开
-
SQLserver 数据完整性
学习概要数据完整性分类实体完整性域完整性参照完整性用户定义完整性约束机制主键约束 PRIMARY KEY唯一性约束 UNIQUE检查约束 CHECK默认值约束 DEFAULT外键约束 FOREIGN KEY非空约束 NOT NULL说实话,我也不甚理解这些概念,只能说先记下,待未来的某一天,能够恍然大悟数据完整性分类数据完整性是要求数据库中数据有正确性和一致性实体完整性含义:表的关键字不能为空,且取值唯一举例:在学生表中,学号能唯一确定以为学生手段:索引、UNIQUE约束、PRIMARY K原创 2021-04-24 18:55:45 · 535 阅读 · 0 评论 -
数据库连接池
在使用数据库时链接——执行操作——断开这个体系是十分浪费系统资源的频繁地链接断开必然是会占用系统宝贵的时间为此开发出了一套池化技术池化技术在预先准备好的连接口上执行操作,操作完也不要断开,继续“放回池子”等待下一个语句使用,待执行完全部的操作后,再集中断开连接最小连接数每次开启服务器后,设置的最小连接的数目,以满足基本需求最大连接数服务器能够承载的最大连接数目,不可以再多了,再多就需要排队等待这就带来另一个问题——等待超时超过某个时间限度,待执行的操作将会放弃该接口(该接口异常什么的原创 2020-11-22 00:15:32 · 68 阅读 · 0 评论 -
用IDEA连接数据库
一定要下载IDEA专业版之前我一直用的是社区版,有诸多内容限制,且无直连数据库功能通过学生认证(我是认证失败直接找某宝了)直接可以获得1年的免费试用时长具体操作然后输入用户、密码、数据库这里值得一说的是,如果connector包没装好,系统会自动给你下最新版的,最新版下载完会让你设置时区,确定即可连上去之后就是这个样子啦登录完还可以重新选择数据库点击这里这里可以看到所有现存在MySQL上的数据库如何查看具体的表双击你想要的表即可想要可视化修改数据?直接点击想要修改的字段,就像原创 2020-11-20 22:21:07 · 1279 阅读 · 0 评论 -
SQL的注入问题
今天我们来谈个数据库注入问题具体体现注入定义在上面的传送门里了,我就不多嘴了就以我上一篇最后的代码为例其实是及其不安全的,很容易被注入怎么实现呢?篡改输入数据正常的数据库交互肯定是要用户进行输入,数据库获得指令,并进行输出比如以下代码...原创 2020-11-17 20:35:50 · 113 阅读 · 0 评论 -
MySQL数据库的JDBC
数据库驱动数据库是无法直接在应用程序中调用的,其关系如下图就像我们的显卡声卡,这些在安装后都有响应的启动环境需要安装数据库对应的驱动是由数据库厂商提供,我们使用即可程序会通过数据库驱动,和数据库进行交互这就意味着有一种数据库就要一个驱动,太过繁琐JDBCsun公司为了简化开发人员的操作,提供了一个操作规范——JDBC其是在驱动与程序间建立一个接口,使得双方都做好分内事情即可需要在java库中导入库java.sqljavax.sql还需要导入一个数据库驱动包...原创 2020-11-15 20:23:15 · 121 阅读 · 0 评论 -
规范数据库的设计
为什么要设计数据库糟糕的数据库数据冗余,浪费空间数据插入删除都会很麻烦,出现各种异常(屏蔽物理外键)良好的数据库节省存储空间保证数据的完整性方便开发系统软件开发中如何设计数据库需求分析分析需要处理的业务,理清数据库的需求概要设计设计关系图E-R图设计数据库的步骤(以博客网站为例)就看看csdn吧,简要的设计下其需要的数据刨去其花里胡哨的功能,至少有用户表、文章表这两个数据表吧就以这两个表为例上面是用户表(user),下面是文章表(paper)很容易想到这些基础数据,原创 2020-11-13 18:52:55 · 57 阅读 · 0 评论 -
数据库的备份
为什么要备份保证数据不丢失(万一服务器停电了还能读档(ROLLBACK)恢复数据)数据转移(从一个地方到另一个地方)数据库备份的方式拷贝物理文件直接找到直接安装数据库的地址,拷贝走data文件在可视化工具里面操作选中想要导出的数据库或者表,右击即可进行导出操作然后指定位置就会出现该文件(如果是看了我上一篇百万数据测试的,记得把百万数据删了再导出哦,不然会很慢)使用控制台语句导出(mysqldump)在控制台中输入mysqldump -h主机 -u用户名 -p密码 数据库名 表名 &原创 2020-11-12 21:37:19 · 109 阅读 · 0 评论 -
MySQL权限管理和备份
用户管理SQL yog可视化管理点击工具栏这里的人像会弹出这个界面在这里可以添加新用户添加完后会出现权限界面,可以看到我们常用操作语句,如alter select update等创建完后可以在这里创建新连接并登陆刚才的用户创建完后可以看到这里左边栏出现了自己创建的用户数据库可以进行自己的操作,如果想要删除用户如下SQL命令操作用户表:mysql.user打开后是这样的此处就对应上文的“全局特权”-- 创建用户:create user 用户名 identify by 密码CREATE原创 2020-11-12 00:55:34 · 70 阅读 · 0 评论 -
百万数据测试数据库索引
上一篇博客只讲了索引的定义及性质,其实用性并未测试,本篇讲生成一百万挑数据以供测试测试数据首先创建一个测试用的表CREATE TABLE `app_user` (`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,`name` VARCHAR(50) DEFAULT'' COMMENT'用户昵称',`email` VARCHAR(50) NOT NULL COMMENT'用户邮箱',`phone` VARCHAR(20) DEFAULT'' COM原创 2020-11-10 19:21:43 · 235 阅读 · 0 评论 -
数据库的索引
索引的定义MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构索引的分类在之前我写过一篇博客里面的测试数据库就有诸多索引,可以作为例子主键索引:PRIMARY KEY唯一标识,主键不可重复,且只有一个列是主键右击选择“改变表”在“索引”栏就可以看到该表的索引唯一索引:UNIQUE KEY(其实并不唯一)避免重复的列出现这个student表就包含了3种索引唯一索引可以重复(不同于主键索引)多个列都可以标识为唯一索引常规索引:KEY / IND原创 2020-11-09 19:44:01 · 72 阅读 · 0 评论 -
初识数据库的事务及其原则
什么是事务一组SQL语句,要么全部执行成功,要么全部执行失败例子:(有事务的地方必有转账)A给B转账200元应该由两步执行A的余额 - 200B的余额 + 200这两步要同时执行要么都失败了,A余额不减,B余额不增要么都成功了,A减,B增事物的原则(acid)原子性,一致性,隔离性,持久性由此会带来脏读、幻读(虚读)、不可复读原子性(Atomicity)类比原子跃迁,在确定时刻其存在状态是确定的针对同一事物,其要么都完成(成功),要么都未完成(失败)一致性(Consi原创 2020-11-08 23:29:37 · 184 阅读 · 0 评论 -
数据库select语句总结
在之前的几篇文章中,我逐步记录了select语句的主要用法,本篇就系统性总结一下select语句格式以下是按照select语句顺序描述的,前后如果同时使用前后不能颠倒去重:select distinct from 表名 (这里可以给表取别名以方便查看)连表查询:left或right或inner(这三个是查询的模式) join 要连接的表 on 等值判断传送门where 具体限定语句或子查询语句 传送门数据分组:group by 具体的字段过滤分组后的数据:having 过滤语句同where原创 2020-11-07 11:20:40 · 565 阅读 · 0 评论 -
数据库级别的MD5加密
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm)传送门MD5不可逆所以网上存在的那些MD5破解是根据加密后的字符逐一比对加密表(自己建的),然后找到对应的密文,就把原文返回给你测试数据CREATE TABLE IF NOT EXISTS `testmd5`( `id` INT(4) NOT NULL, `name` VARCHAR(20) NOT NULL, `pwd` VARCHAR(50) NOT NULL, -- 加密后字符会很长,所以要长一点 PR原创 2020-11-07 10:49:33 · 160 阅读 · 0 评论 -
数据库常用函数
本文讲讲常用的函数吧这是官方文档传送门里面是函数大全,我就挑常用的讲讲(其实很多和java通用的)对数值的操作SELECT ABS(-9) -- 绝对值SELECT CEIL(5.6) -- 向上取整SELECT FLOOR(5.6)-- 向下取整SELECT RAND() -- 返回0~1的随机数SELECT SIGN(-6) -- 判断符号 正数返回1,负数返回-1,0返回0应该大多数语言都有这些函数吧用select语句是为了能够获得返回值对字符串的操作SELECT原创 2020-11-02 19:02:27 · 119 阅读 · 0 评论 -
MySQL的 自连接,排序与分页
重拾……啊不,其实现在学的已经是新知识了,一直“重拾”也没重点,以后标题都直接用内容的概要吧,这样万一有检索也能找到我自连接,排序与分页这两个都是很小的知识点,就一起讲了自连接顾名思义自己连接自己的表,核心:一张表拆违两张用啥意思呢?一张表里面需要自我比对的数据,我们就可以用自连接把这俩数据进行重新组合比对测试源码CREATE TABLE category ( categoryid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主题ID原创 2020-11-01 22:03:47 · 292 阅读 · 0 评论 -
重拾数据库05
联表查询在数据库查询操作中,往往所需要的数据并不是一个表中就能完全查出来的,这就需要外卖操作两个或者多个表,那么如何实现几个表的数据同时查询获取呢?JOIN ON七种join理论join 表名 on 条件判断思路1、分析需求,分析查询的字段来自哪些表(脸表查询)2、确定用哪种查询方式(上图有7种)3、确定交集实际操作测试数据库见之前的文章传送门这数据库代码可能和我现在用的不太一样,毕竟我在此基础上操作了很多,但基本是可以使用的比如我要查询学生学号、姓名、成绩INNER JOI原创 2020-11-01 01:45:49 · 111 阅读 · 0 评论 -
重拾数据库04
重拾数据库04上期文章我提到了模糊查询 传送门.在我们平时的查询中大多都是模糊查询,以一个值来搜寻与其相关的数据并返回本文就具体讲一下这个 模糊查询本质模糊查询本质为比较运算符运算符语法描述IS NULLa is null若字段为null,则结果为真IS NOT NULLa is nut null如果字段不是null,则结果为真BETWEEMa between b and ca在b和c中间,则结果为真LIKEa like bSQL匹配,如果原创 2020-10-31 00:49:22 · 158 阅读 · 0 评论 -
重拾数据库03
重拾数据库03今天学习一下数据库查询的select语句及where限定语句这是测试用的数据库DROP DATABASE IF EXISTS `school`;CREATE DATABASE IF NOT EXISTS `school`;-- 创建一个school数据库USE `school`;-- 创建年级表DROP TABLE IF EXISTS `grade`;CREATE TABLE `grade`( `gradeid` INT(11) NOT NULL AUTO_INCREME原创 2020-10-29 21:54:18 · 167 阅读 · 0 评论 -
mysql的增删改查
数据库的增删改查对数据的基本操作无外乎增删改查,上篇文章是各种层面的创建语句的归纳(传送门)本篇正式开始学习数据库的操作。增插入语句:insert into 表名(字段1,字段2,……) values('值1,‘值2’,……)表名和字段名都用反引号(英文输入法下tab上面的那个)括起来,值如果是字符型用单引号括起来INSERT INTO `grade`(`gradename`) VALUES('大四') -- 单个字段INSERT INTO `grade`(`gradeid`,`grade原创 2020-10-25 21:51:03 · 80 阅读 · 0 评论 -
重拾数据库01
重拾数据库由头:数据库本来暑假学了一半,奈何没有实战,逐步失去动力,渐渐遗忘了……如今再度需求,只好重拾一下了。今天先整理之前的笔记吧,不得不说Markdown还是挺好用的,先进行笔记整理回顾数据库的操作形式得益于sqlyog等可视化界面,我们可以不必记住那么多指令,所以操作形式主要分为可视化操作和代码操作,代码大多是通用的,但是实现代码的平台可能有些会有特异化的语句,这个是后话了代码操作数据库操作主要有3层:数据库,数据库中的表,表中的字段代码形式我都是基于sqlyog软件的语句,sqlyo原创 2020-10-24 19:01:39 · 112 阅读 · 0 评论