SQL笔记
文章平均质量分 52
Keeling1720
这个作者很懒,什么都没留下…
展开
-
数据库中索引会失效的几种情况(oracle)
创建Oracle 索引的目的是为了避免全表扫描数据,提高查询效率,但是如果sql语句写的不好致使索引失效,反而会影响数据查询效率。众所周知,添加索引的字段必需要在where条件后适当使用才会生效,如果连查询条件都没有,那肯定不会用到索引的。如果没有使用基于函数的索引,那么 where 子句中对存在索引的列使用函数时,会使优化器忽略掉这些索引。但是把函数应用在条件上,索引是可以生效的,把上面的语句改成下面的语句,就可以通过索引进行查找。不等于操作包括:,!转载 2022-09-05 22:39:45 · 3808 阅读 · 0 评论 -
Mysql求第N高的薪水
Mysql求第N高的薪水先来个简单的:假如有表如下:我们来一个求最高的薪水,那么代码其实应该一下子就能写出来:select salaryfrom EmployeeORDER BY salary descLIMIT 0,1那如果是求第二高的呢?select distinct salaryfrom EmployeeORDER BY salary descLIMIT 1,1这里有个点需要注意一下就是,假如前两个最高的值都为100,那么,逻辑上我们并不能将第二个100看成第二高,而是原创 2022-02-10 00:50:52 · 937 阅读 · 0 评论 -
Mysql将Windows数据库转移到Linux
这里我们借助Navicat工具进行演示:使用工具Navicat连接上数据库之后,右键选择我们想要导出的数据库,选择Dump SQL File…选择一个路径导出sql文件。(我把他导出到了桌面,比较好找)导出成功后,我们可以在桌面看到一个叫heartbay.sql的文件,通过XShell直接拖拉到我们的云服务器(这里我放的位置是/root/heartbay/ 目录。然后我们创建一个同名的数据库文件,比如我的叫heartbay。mysql -u root -p#输入密码create databa原创 2022-01-21 14:43:02 · 1572 阅读 · 0 评论 -
Linux修改mysql密码
Linux下载mysql后,会给一个初试账号和密码。初始账号默认为root,初试密码是随机生成的,我们可以看一下:cat /var/log/mysqld.log | grep password这里我的初始密码是:wnw=PjFA.2b.(最后这个点也是密码的一部分)我们登录我们的mysql。mysql -u root -p #会提示输入密码#输入我们的密码(wnw=PjFA.2b.)然后我们就可以修改我们的初始密码了。(新密码必须包含大小写字母、数字和特殊符号,缺一不可)ALT原创 2022-01-21 14:40:56 · 1479 阅读 · 0 评论 -
Linux下载Mysql
Linux下载Mysql5.x或者8.0详细教程注意:如果已经有Mysql但是想要换版本号,切记不要直接下载,要先把旧版本的Mysql删除干净再重新下载。(本文并未提供删除的步骤,请自行百度)废话少说,我们直接给出详细步骤:这里,我们将mysql下载到/usr/local/目录下。cd /usr/localmkdir mysqlcd mysqlwget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm然原创 2022-01-21 14:37:05 · 11439 阅读 · 4 评论 -
Linux修改Mysql默认端口3306
Linux修改Mysql默认端口3306直接修改我们的/etc目录下的 my.cnf 文件即可。vim /etc/my.cnf然后添加一栏port=[你想要设置的端口号] 即可。(这里把端口号设置为3506)port=3506datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock然后,保存退出,重启我们的mysql,让配置文件生效即可。systemctl restart mysqld验证是否已经修改了端口号:mysql -原创 2022-01-15 19:02:45 · 1783 阅读 · 0 评论 -
MySQL触发器的简单使用教程(代码详细教程以及Nvicat界面操作教程)
文章目录什么是触发器怎么实现什么是触发器触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。什么时候需要用到我们的触发器?答:简单说就是当一张表的记录发生增删改操作的前后,另一张表需要进行相应的增删改操作的时候,我们就需要用到触发器。比如,我有一个鸡汤表,他有一项被收藏数的统计属性叫做collect,同时我有另一张表soup_collect,他用来存放用户收藏的鸡汤的id(soup_id) 和 收藏用户的id信息原创 2022-01-10 17:32:05 · 1108 阅读 · 0 评论 -
我的SQL学习笔记
本博客主要用于自己期末复习sql代码使用,同时也希望自己的这点微薄的笔记可以帮到别人吧。有什么写得不好或者写得不对的地方,欢迎各位大佬提出批评指正,谢谢。SQL server的下载1.如何创建自己的数据库和日志文件2.如何创建表3.如何添加数据以及查找数据4.如何在已经建好的表中增加列跟约束5.如何在已经建好的表中删除列跟约束6.如何在已经建好的表中修改列7.如何修改列名和表名8...原创 2019-10-10 13:33:34 · 207 阅读 · 0 评论 -
SQL server的下载
本文链接:https://mp.csdn.net/mdeditor/102479776这里, 推荐一个很好用,很良心的微信公众号叫做:软件安装管家关注之后,点击软件目录里面的软件目录,然后往下拉,就可以看到其中的,SQL Server就是sql的编译器啦。里面有完整的教程,这里就不多做介绍啦。...原创 2019-10-10 13:20:06 · 271 阅读 · 0 评论 -
1.如何创建自己的数据库和日志文件
假设我们现在要新建一个叫做test的数据库(数据库语法的字母大小写并不会影响程序的运行,个人学的书上面写的都是大写的字母,但是出于大写没办法一样看懂的缘故,一直都是用小写写的代码)use mastergocreate table test on //建数据库( name = test_Data, filename = 'D:\hello\test_data.mdf', //...原创 2019-10-07 23:32:10 · 2634 阅读 · 2 评论 -
2.如何创建表
基于上一个教程,我们已经拥有了一个自己的数据库,那么接下来,我们要在这个数据库里面建表了:按 Ctrl + N 可以新建一个页面,输入以下代码:use testgo //调用数据库test,也可以手动选择create table Depts //创建一个表Depts( Dno char(10), //表中的参数Dno,类型长度为5个char单位 Dn...原创 2019-10-07 23:36:28 · 809 阅读 · 0 评论 -
3.如何添加数据以及查找数据
基于之前的表,我们现在终于可以向里面插入数据了。如果要插入一条数据项,那么可以输入:insert into Depts values('D01','英语')如果是同时插入多条数据项,那么可以输入:insert into Depts values('D01','英语'),('D02','自动化'),('D03','SQL'),('D04','C语言')这里说一下MySQL的一...原创 2019-10-07 23:51:52 · 252 阅读 · 0 评论 -
4.如何在已经建好的表中增加列跟约束
本文链接:https://mp.csdn.net/mdeditor#这里我们演示一下在Students表中添加一列叫做班级的。alter table Students add 班级 char(8)格式为:alter table [表名] add [列名] [该列类型]如果是同时要添加班级以及入学时间,或者更多列的,那么使用:alter table Students add班级 ...原创 2019-10-07 23:56:25 · 1864 阅读 · 0 评论 -
5.如何在已经建好的表中删除列跟约束
5.如何在已经建好的表中删除列跟约束学了添加后,删除也变得格外的简单。对于列的删除,代码如下:alter table Students add 临时添加 intselect * from Studentsalter table Students dropcolumn 临时添加这里也可以同时删去多个,格式是alter table [表名] drop column [列名1],c...原创 2019-10-07 23:58:04 · 505 阅读 · 0 评论 -
6.如何在已经建好的表中修改列类型
6.如何在已经建好的表中修改列修改列类型:alter table Students alter column Sage int格式如下:alter table [表名] alter column [表中某个数据项] [新的数据类型]修改多个类型用:alter table [表名] altercolumn [表中某个数据项] [新的数据类型],column [表中某个数据项]...原创 2019-10-07 23:59:01 · 930 阅读 · 0 评论 -
7.如何修改列名和表名
本网页链接为:https://mp.csdn.net/mdeditor/102364288修改列名和表名可用系统存储过程Sp_rename代码如下:exec sp_rename ‘Students.Sname’,‘姓名’exec sp_rename ‘Students’,‘学生’格式如下:修改列名exec sp_rename [‘表名.列名’],[‘新的列名’]修改表名exec...原创 2019-10-08 09:03:02 · 474 阅读 · 0 评论 -
8.如何更改表內已有信息,update的用法
假如,我们的Students表中的Sno有'S01'到'S07'这个时候,我们需要修改S01到S03的班级为20181121,S04到S07为20181181那么,输入以下代码:update Studentsset 班级 = '20181121'where Sno >= 'S01' and Sno <= 'S03'update Studentsset...原创 2019-10-08 09:17:33 · 369 阅读 · 0 评论 -
9.如何删除表中以存在的数据,delete的用法
本网页链接:https://mp.csdn.net/mdeditor#delete的用法:假设我们现在要删除毕业时间为2015年的学生,他们在校就学时间为4年,那么使用以下指令:delete from Studentswhere year(入学时间) + 4 = 2015格式:delete from [表名]where [条件]...原创 2019-10-08 20:47:53 · 353 阅读 · 1 评论 -
10.select时in和not in的使用
对于in,其实就是多个or条件的缩写。比如现在,我们想从学生表中选择所有Dno = ‘D01’ 跟 Dno = 'D03’的女生。那么,我们输入代码:select * from 学生where Dno in('D01','D03') and Ssex = '女'格式是:select * from [表名]where [列名] in (…)当然,where后边你可以用“and”...原创 2019-10-11 12:51:16 · 8215 阅读 · 0 评论 -
11.SQL建立和删除索引(index)
对索引的建立有三种1.聚集索引格式:create clustered index [索引名] on [表名] ([用作索引的列名])create clustered index [索引名] on [表名] ([用作索引的列名] [排序方式])例如:create clustered index Stu_Sno on Student1(Sno)create clustered ind...原创 2019-10-22 23:20:18 · 1627 阅读 · 0 评论 -
12.select语句普通查询
普通查询查询有多种,除了前面提到的select * from [表名]select [列名],[列名]... from [表名]之外,还有很多。例如,我们可以给列换个名字,使用SQL的函数等等。例子:(Sname,Birthday,Sno)select Sname,Title = 'Birth:',Year(Birthday) Birth Year,Lower(Sno) Ls...原创 2019-10-23 09:17:06 · 229 阅读 · 0 评论 -
13.select语句条件查询
(1)比较条件select Sno,Snamefrom Studentswhere Dno = 'D03'格式:select [预查询数据]from [表名]where [条件]如果是多个条件复合,则用and相连select [预查询数据]from [表名]where [条件1] and [条件2] and …SQL涉及的运算符和函数=,>,<...原创 2019-10-23 12:31:54 · 2221 阅读 · 0 评论 -
14.group by用法:查询结果分组
group by用法:查询结果分组select Cno,count(Sno) CntSnofrom Reportsgroup by Cno运行结果如下:CnoCntSnoC013C022C033格式为:select [预显示数据] [列名],[预显示数据] [列名],[预显示数据] [列名]…from [表名]group by [...原创 2019-10-24 09:23:18 · 636 阅读 · 0 评论 -
15.连接查询
不同表之间的查询select Students.*, Reports.*from Students,Reportswhere Students.Sno = Reports.Sno输出的数据将包括两个表的所有数据,重复的数据会重复输出。其实,就是简单的加个逗号,然后显示两个表的数据而已,简单吧。如果不想显示重复的列,那么使用:select Students.Sno,Sname,Sse...原创 2019-10-24 09:53:39 · 159 阅读 · 0 评论 -
16.嵌套查询
带谓词in的嵌套查询select Sname,Dnofrom Studentswhere Sno in(select Snofrom Reportswhere Cno = 'C02')可接受多层嵌套。这里查询的结果是Cno为’C02’的Sno的Sname和Dno。其中,( )括号中的代码称为子查询。括号外的称为父查询或外层查询。注意:子查询的select语句不可以使用orde...原创 2019-10-24 11:09:46 · 502 阅读 · 0 评论 -
17.创建视图
建立视图的语句,有点像建表加查询语句的结合建立视图是为了更方便的查看经常要查看的数据。格式为:create view [视图名]asselect [列名]from [表名]where [条件]where可以不要例句:create view C_Studentasselect Sno,姓名,Birthday,Dnofrom 学生where Dno = 'D03'wi...原创 2019-11-07 17:09:13 · 292 阅读 · 0 评论 -
18.对视图的其他简单操作
对视图的其他操作其实跟对表的操作是一样的的,包括 增、删、改、查 等等下文出现的hello为视图注意:在视图中的修改会对表造成影响这里给出hello视图的创建吧,方便下边内容的核对select Sno,Sname from Students1.删除视图用dropdrop view hello2.在视图中查找消息select *from hellowhere Sno >...原创 2019-11-07 17:22:40 · 317 阅读 · 0 评论 -
19.SQL的数据控制(安全性)
创建用户数据库管理员(DBA)拥有数据库的全部操作权限,系统中的其他用户均是由DBA创建的。在单机实验环境下,以Windows身份登录的用户就是DBA。在创建登录用户之前,DBA必须先设置SQL Server身份验证模式为“SQL Server和Windows身份验证模式”。下面给出设置的教程打开SQL Server,可以看到右键第一个WIN-MC什么什么的,不同电脑名字可能会不一样。...原创 2019-11-08 14:01:51 · 733 阅读 · 0 评论 -
20.grant的用法(权限的授权)
grant的用法格式:grant [权限1],[权限2][on <对象类型> <对象名>]to [用户1],[用户2][with grant option]不同对象类型允许的操作权限对象对象类型操作权限属性列与视图tableselect, insert, update, delete, ALL PRIVILEGES基本表t...原创 2019-11-08 15:05:19 · 10545 阅读 · 0 评论 -
21.revoke的用法——收回权限
revoke的用法——收回权限格式:revoke [权限1],[权限2]on [对象类型] [对象名]from [用户]例子:1.把用户User3修改Students的Sname 的权限收回revoke updateon Studentsfrom User32.收回所有用户对Reports表的查询权限revoke selecton Reportsfrom publi...原创 2019-11-08 15:12:49 · 8173 阅读 · 0 评论 -
22.删除级联和更新级联
首先,我们说一下级联有什么用。我们知道,对于之气那种主外键,我们如果存在约束的话,我们是不可以随意更改主外键的数据的。但是如果存在级联的话,你通过删除或者更改主键的数据的话,那么外键的数据也会被删掉或者更新。删除级联指的是:当删除主键数据时,有删除级联关系的外键的数据也会被删除。更新级联指的是:当更改主键数据时,有更新级联关系的外键的数据也会被更新。接下来,我们说一下删除级联和更新级联的使...原创 2019-11-08 19:01:05 · 1540 阅读 · 0 评论 -
23.数据库的导入和导出
数据库的导入和导出数据库的导入右键数据库,选择附加,然后看到以下界面,选择添加后,找到自己的mdf文件即可数据库的导出右键自己想导出的数据库,选择任务,分离即可。...原创 2019-11-08 19:26:00 · 326 阅读 · 0 评论 -
24.数据库的备份和恢复
数据库的备份和恢复数据库的备份右击想要备份的数据库,选择任务,备份,选择位置后点击确定即可数据库的恢复右键数据库,选择任务,还原,文件和文件组。选择选项,再覆盖现有数据库上打勾然后回到常规在想要还原的文件上打勾,点击确定即可。...原创 2019-11-08 19:29:38 · 165 阅读 · 0 评论