
数据库技术
数据库设计、优化、存储过程、触发器,数据库面试等
guoyp2126
心上悟,事上磨
展开
-
mysql解压版安装与卸载
mysql压缩版安装与卸载原创 2022-09-16 10:22:41 · 655 阅读 · 0 评论 -
MySQL添加用户和赋权时报1064错误
网上给出的一键式创建用户和授权,在mysql高版本时报语法错误,正确的方法时先创建用户再进行授权原创 2022-08-24 11:39:07 · 1684 阅读 · 0 评论 -
SqlServer不允许更改字段类型(表中已有数据)
修改sqlserver表中数据类型(表中有数据)时,提示不允许修改,提示如下:解决办法:新建表:将原有表的数据导入新表,删掉原来表,将新建表重新命名和原来表一致即可。不新建表:点击菜单工具——>选项——>设计器,将阻止保存要求重新创建表的更改,√去掉即可。如下图:建议使用第二种方式...原创 2021-09-07 11:16:20 · 4580 阅读 · 0 评论 -
mySQL数据库索引总结
索引索引的作用是提升数据库的查询性能的,当数据量很大时,在连接属性或条件查询属性上建立索引,会极大的提升查询的效率。索引是数据库中一种对象文件,在做数据增加、删除、修改时,需要对其进行维护,此时不仅要完成对数据的维护,而且要完成对索引的维护,降低了数据维护的效率。聚蔟索引和普通索引:聚簇索引是数据和索引在一起,索引存放的顺序就是数据记录的顺序,因此一个表仅能有一个聚簇索引,一般我们将主键索引作为聚簇索引。普通索引是数据和索引相分离,索引中的值指向数据的指针,普通索引可以在一个表上创建多条Hash索引:原创 2021-05-26 20:58:11 · 161 阅读 · 0 评论 -
数据库查询优化
前言对于一个只有几千行甚至几万行数据的查询的小系统来说,数据库的查询优化作用不大,但对于大型的应用系统,数据动辄上百万,就需要了解DBMS对查询语句的处理过程和优化算法,更好的利用其优化算法,以提高系统的性能。查询执行过程执行一条查询语句需要做查询分析、查询检查、查询优化、查询执行等几个关键步骤,具体描述如下:查询分析:对查询语句进行扫描、词法分析和语法分析,从查询语句中识别出语言符号,进行语法检查和语法分析查询检查:根据数据字典对合法的查询语句进行语义检查。包括对用户的存取权限进行检查和完整性约原创 2021-05-24 17:36:43 · 998 阅读 · 0 评论 -
mysql远程用户的数据操作权限设置——INSERT command denied to user ‘root‘
使用root连数远程服务器数据库,插入数据,提示1042错误;错误详细信息如下:INSERT command denied to user ‘root’@‘xxx.xxx.xxx.xxx’ for table ‘xxxxx‘;这种情况大部分是没有给’root’@‘xxx.xxx.xxx.xxx’ 赋权限的缘故。具体执行步骤如下:检查用户名为root,主机为’xxx.xxx.xxx.xxx’ 的权限在sqlyol或navicat工具中输入以下代码:SELECT * FROM mysql.user WH原创 2021-05-13 19:53:24 · 17441 阅读 · 0 评论 -
MYSQL的外连接
两个表或多个表做选择操作时,形成的关系会出现以下三种情况,我们先给出两张表:T_SY_LENGTH(ID,TJMONTH,LENGTH)学习时长表,其中ID为学习员工的ID(参照员工表中ID)、TJMONTH为月份,LENGTH为学习时长(分钟)T_SY_STAFF(ID,NAME)员工信息表,ID为员工ID,NAME是员工姓名笛卡尔积如果我们对表不做任何连接条件时,我们得到的新的关系就是两个关系做笛卡尔积。如员工表和学习时长表不做连接时,我们sql语句的写法为SELECT * FROM T_SY原创 2021-04-08 15:54:18 · 235 阅读 · 0 评论 -
SQL语句中的关联查询
关联查询是两个(两个以上)的关系进行连接查询。很多人感觉单个关系查询很简单,但关联查询很复杂,实际上关联查询处理过程分两步,首先是将多个关系通过等值连接转换为单个关系,然后再对新生成的单个关系进行查询。查询语句的执行过程注:from后跟准确的说是关系,而不是表或视图在这里插入代码片关系的连接(等值)左外连接右外连接...原创 2021-03-18 20:56:23 · 5802 阅读 · 0 评论 -
mysql作业调度
数据库端的作业调度是按照一定的时间间隔,由数据库管理系统定期的执行SQL语句或者是存储过程。如:每天的凌晨1点判断,根据当前日期,判断设置的热点消息是否过期,将过期的热点消息改为,非热点。示例代码如下:CREATE DEFINER=`root`@`%` EVENT `evHotSetExpire` ON SCHEDULE EVERY 1 DAY STARTS '2021-01-13 01:00:00' ON COMPLETION PRESERVE ENABLE DO BEGIN /* 判断热点原创 2021-01-13 13:30:51 · 371 阅读 · 0 评论 -
MySQL 字符串中单引号的拼接
在模糊查询中,通配符“%”、“-”需要使用到单引号,示例代码如下:SELECT * FROM tsvbase WHERE FNAME LIKE '%太白%' ORDER BY FISHOT,FSORT LIMIT 0,1在存储过程中经常使用到字符串拼接SQL语句,拼接上面情况的SQL语句就需要通过双引号帮忙解决,示例如下:SET @selectSql =CONCAT(@selectSql,' where FNAME like ',"'%",paintName,"%'");其中paint原创 2021-01-12 20:50:00 · 3018 阅读 · 0 评论 -
MYSQL存储过程—执行动态SQL
存储过程中经常使用字符串拼接SQL语句,示例代码如下:SET @selectSql = 'SELECT RECID, FCODE, FNAME, FDISCOUNT, FIMAGE, FVIDEO, FTYPE, FSORT, FISHOT, FPHONE, FCONTACT, FADDR, FADMINMAPNM, FLNG, FLAT, FCREATOR, FCREATETM FROM tsvbase '; IF(paintName<>'')THEN SET @原创 2021-01-12 20:38:26 · 5709 阅读 · 0 评论 -
SQLServer@@FETCH_STATUS含义
查看学生实验报告中游标的使用,大部分同学对@@FETCH_STATUS含义没有搞清楚,在此做以说明。概念@@fetch_status是SQLServer的一个全局变量,其值由数据库管理系统管理,值的改变是通过fetch next from触发的记录值有三种,分别为0 FETCH 数据提取成功-1 FETCH 没取到数据,游标中的数据已经取完-2 被提取的行不存在,进程被杀、意外中断问题很多同学代码写成这样 declare @name varchar(30) declare @snam原创 2020-12-16 19:26:15 · 7852 阅读 · 0 评论 -
SQLServer存储过程中break、continue及return的使用
SQLServer编写存储过程中,我们会使用break、continue及return来中断程序的执行,这三者有什么区别,在此做以说明break退出 WHILE循环,执行循环体以后的语句,示例代码如下declare @num int=10, @i int =0while(@i<@num) begin set @i = @i +1 if(@i=5) break print @i end print '执行完毕'执行结果为:0原创 2020-12-16 18:26:26 · 8891 阅读 · 1 评论 -
CDM转PDM提示existence of reference join
使用powerDesiger将CDM转为PDM时,点击tools->check进行检测,经常会遇到以下问题提示1.existence of reference join——->缺少主键;2.constraint name uniquesness——–>关联约束重名(reference 下的constraint name);3.Incomplete join—>产生错误的reference所关联的两个表中主键不统一,调整为一致后即可解决此错误4.Existence of ind原创 2020-12-08 11:48:40 · 1863 阅读 · 0 评论 -
数据库设计中数据字典中的属性设计
在数据库设计中经常会遇到业务表的一些属性来自于数据字典,如:工作人员职称、学历、订单的支付状态等。以前这种设计能够有效节省存储空间,同时能够保证数据字典中显示值与数据表显示的一致性。但这种设计在数据显示时需要将数据表存储的值转换为显示值,写SQL语句时需要进行业务表与数据字典表的关联,或者在controller中需要进行数据的转换。如果业务表中这些属性直接存储字典表中的显示值,则降低了复杂度。在数据维护时使用数据字典表提供的集合,通过combox完成,显示时则无需关联或在controller中进行转换原创 2020-12-07 12:00:47 · 922 阅读 · 0 评论 -
数据库编程中触发器的使用
触发器是一种自定义的高级约束,触发体和触发条件具有原子性,要么全部被执行,要么全部不执行。触发器定义的一般格式CREATE TRIGGER <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE> ON <表名> FOR EACH ROW<触发器主体>触发器名:建议命名格式为:Tri+表名+<INSERT | UPDATE | DELETE>BEFORE | AFTER :原创 2020-11-23 18:33:07 · 1096 阅读 · 0 评论 -
数据库对象命名约定
数据库对象包括表、视图、索引、触发器、存储过程、函数等。每种数据库对象命名约定如下:表T+表名,表名使用英文单词,单词首字母大写,不同单词之间首字母大写,如:课程表:TCourse、学生课程表 TStudentCourse视图V+视图名,使用英文单词,单词首字母大写,不同单词之间首字母大写,如:学生课程成绩 VStudentCourseGrade索引I+表名+属性名,其中表名省略前缀,如学生表中学号索引,IStudentSno存储过程P+存储过程名,存储过程名单词首字母大写,不同单词之间首字原创 2020-11-23 10:06:21 · 461 阅读 · 0 评论