
MySQL
文章平均质量分 64
pipizhen_
昨日之日不可留。
展开
-
mysql中添加字段,索引sql语句
mysql中添加字段,添加索引sql语句# 添加列alter table `tbl_stu` add column `stu_name` varchar(20) DEFAULT '' COMMENT '学生姓名' after `stu_no`;# 修改列alter table `tbl_stu` modify column `stu_name` varchar(30) DEFAULT '' COMMENT '学生姓名'; # 删除列alter table `tbl_stu` drop col原创 2021-09-23 20:04:07 · 1283 阅读 · 0 评论 -
Mysql中的锁机制
mysql锁机制:1、什么是锁?锁是计算机控制多个进程或者线程,对统一资源访问的一种机制。2、锁的分类:按对数据操作的类型上分为:读锁,写锁;按照锁的粒度分为:表锁,行锁。读锁:即共享锁,针对同一份数据,多个操作可以同时运行而不会相互影响。写锁:即排它锁,当前写操作没有完成前,它会阻断其他写锁和读锁。3、共享锁例如:有两个线程,A和B线程。A线程先把user表加上读锁:lock table user read;此时,A线程只能读user表的数据,不能修改user表的数据,且不能读原创 2021-03-30 21:00:48 · 196 阅读 · 1 评论 -
Mysql中show profile的使用
Mysql中show profile的使用1、Show profile它是什么?是mysql提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于sql的调优测量。默认情况下,参数处于关闭状态,并保存最近15次的运行结果。Show variable like ‘profiling’;2、开启profile:set profiling=on;开启后,mysql会记录所有sql语句的执行消耗信息。3、查看profiles:show profiles;信息包括:Query_ID(查询id)原创 2021-03-30 20:55:25 · 763 阅读 · 0 评论 -
Mysql中的慢查询日志
Mysql中的慢查询日志1、什么是慢查询日志?Mysql的慢查询日志是指mysql提供的一种日志记录,它用来记录在mysql中相应时间超过阀值的语句,具体指运行时间超过long_query_time值的sql,则会被记录到慢查询日志。Long_query_time的默认值为10秒,显然这时间有点长。默认情况下,mysql数据库没有开启慢查询日志,需要我们手动来设置这个参数。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志或多或少带来一定的性能影响。2、查看mysql是否开启原创 2021-03-30 20:49:07 · 310 阅读 · 0 评论 -
Mysql中的explain查看执行计划
Mysql中的explain查看执行计划1、explain是什么?查看执行计划。2、怎么使用?explain + sql语句。3、执行计划包含的信息:id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra4、各个字段的意思:(1)Id: select查询的序列号,包含一组数字,表示查询中执行select字句或操作的顺序。Id有三种值:id相同,执行顺序由上至下。id不同,如果是子查询,id的序号会递增原创 2021-03-30 20:45:16 · 4168 阅读 · 0 评论 -
Mysql中的索引
Mysql中的索引1、什么是索引?Mysql官方给出的索引的定义:索引(Index)是帮助mysql高效获取数据的一种数据结构。我们可以简单理解为:已经排好序的快速查找数据结构。数据本身之外,数据库还维护着一个满足特点查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。我们平常所说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一原创 2021-03-30 20:35:47 · 133 阅读 · 0 评论 -
Mysql的7种join理论
Mysql的7种join理论1、Mysql分层结构:(1)连接层(2)服务层(3)引擎层(4)存储层2、Mysql引擎十多种,主流的有两种:MyISAM,InnoDB对比项MyISAMInnoDB主外键不支持支持事务不支持支持行级锁表级锁,即使操作一条记录也会锁住表,不适合高并发行级锁,只锁住操作的那行数据,适合高并发缓存只缓存索引,不缓存真实数据不仅缓存索引,还缓存真实数据,对内存要求较高,内存的大小对性能有决定性影响表空间小原创 2021-03-30 17:19:30 · 226 阅读 · 0 评论 -
MySQL的33道sql语句练习题
MySQL的33道练习题:三张表作为测试数据。部门表dept:deptno(部门编号), dname(部门名称), loc(部门位置)员工表emp:empno(员工编号), ename(姓名), job(岗位), mgr(领导编号), hiredate(雇用日期), sal(月薪), comm(奖金), deptno(部门编号)工资等级表salgrade:grade(等级), lowsal(最低工资), highsal(最高工资)下面给出测试的数据库脚本内容:/*SQLyog Communit原创 2020-08-07 10:30:01 · 545 阅读 · 0 评论 -
MySQL中计算两个年份的相差
在mysql当中,怎么计算两个日期的“年差”,差了多少年?TimeStampDiff(间隔类型,前一个日期,后一个日期)例如距离现在差了多少年:TimeStampDiff(year, 前一个日期, now())间隔类型有:second秒,minute分,hour时,day天,week周,month月,quarter季度,year年。例题1:给任职日期超过30年的员工加薪10%。思路:update emp set sal=sal*1.1 where 任职日期 > 30年。update em原创 2020-08-07 10:18:00 · 10926 阅读 · 1 评论 -
数据库中的三范式
数据库中的三范式:数据库设计三范式(重点)1、什么是设计三范式?设计表的依据。按照这个三范式设计的表不会出现数据冗余。2、三范式都有哪些内容?(1)第一范式:任何一张表都应该有主键,并且表中每一个字段原子性不可再分。(2)第二范式:建立在第一范式的基础上,所有非主键字段完全依赖于主键,不能产生部分依赖。完全依赖:主键能推出,能确定所有其他字段。部分依赖:存在非主键字段是由部分主键确定的,比如主键是联合主键。(不建议使用联合主键)在设计表时,碰到“多对多”的关系,怎么做?解决方法:多对多原创 2020-08-07 10:13:59 · 356 阅读 · 0 评论 -
MySQL数据库导入导出的命令
MySQL数据库导入导出的命令:1、将数据库中的数据导出在Windows的dos命令窗口中执行:mysqldump 数据库名称>路径\命名 -uroot -p密码例如:mysqldump testdb>D:\mysqldata\testdb.sql -uroot -p123; // 这样写是导出指定数据库导出指定数据库中的指定表:mysqldump testdb emp>D:\mysqldata\emp.sql -uroot -p123;2、数据的导入先登录数据库:原创 2020-08-07 10:07:45 · 535 阅读 · 0 评论 -
MySQL中的视图
MySQL的视图:视图(view)1、什么是视图?站在不同的角度去看待数据。(同一张表的数据,通过不同的角度去看待)2、怎么去创建视图?怎么删除视图?创建视图:create view myview as select empno, ename from emp;删除视图:drop view myview;注意:只有DQL(select查询)语句才能以视图对象的方式创建出来。3、对视图进行增删改查,会影响到原表数据。(通过视图影响表中数据,并不是通过操作数据影响)注意:可以对视图进行CR原创 2020-08-07 10:05:49 · 186 阅读 · 0 评论 -
MySQL中的索引
MySQL中的索引:1、什么是索引?有什么用?索引就相当于一本书的目录,通过目录可以快速找到对应的资源。在数据库方面,查询一张表的时候有两种检索方式:第一种方式:全表扫描第二种方式:根据索引检索(效率很高)索引提高了检索效率的原理就是缩小了扫描的范围。索引虽然可以提高效率,但是不能随意的添加索引,因为索引也是数据库当中的对象,也需要数据库不断的维护。是有维护成本的。比如,表中的数据经常被修改,这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。添加索引是给某一个字段,或者某原创 2020-08-07 10:02:41 · 247 阅读 · 0 评论 -
MySQL中的事务
MySQL中的事务:事务(Transaction)(重点)1、什么是事务?一个事务是一个完整的业务逻辑单元,不可再分。比如:银行账户转账,从A账户向B账户转账10000元,需要执行两条update语句:update t_act set balance = balance - 10000 where actno = ‘act-001’;update t_act set balance = balance + 10000 where actno = ‘act-002’;以上两条DML语句必须同时执原创 2020-08-06 22:58:49 · 410 阅读 · 0 评论 -
MySQL中的常用存储引擎
MySQL中的常用存储引擎:1、完整的建表语句create table `t_x` ( `tid` int primary key, `tname` varchar(255) not null) ENGINE=InnoDB DEFAULT CHARSET=utf8; 了解:在MySQL中,凡是标识符是可以用飘号括起来。最好别用,不通用,在Oracle中就报错。mysql默认使用的存储引擎是InnoDB方式,默认字符集编码是utf8。2、什么是存储引擎?存储引擎这个名称只有在mysql中原创 2020-08-06 22:51:46 · 454 阅读 · 0 评论 -
MySQL中的约束
MySQL中的约束:1、约束(Constraint)什么是约束?常见的约束有哪些?在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。常见的约束:非空约束(not null):约束的字段不能为null。唯一约束(unique):约束字段的值不能重复。主键约束(primary key):约束的字段不能为空,也不能重复。外检约束(foreign key):约束的字段在其它表中作了主键。检查约束(check):Oracle中有check约束,原创 2020-08-06 22:42:39 · 543 阅读 · 0 评论 -
MySQL中DDL(create,delete,alter)语句操作
MySQL中DDL(create,delete,alter)语句操作:1、创建表建表语句的语法格式:create table 表名 ( 字段1 数据类型 约束条件, 字段2 数据类型 约束条件, ... 字段n 数据类型 约束条件);关于MySQL当中字段的常用数据类型: int 整数型 bigint 长整型(相当于java中的long) float 浮点型 double 双精度浮点型 char 定长字符串 varchar 可变长字符串(最长255个字符) date 日期原创 2020-08-06 22:33:37 · 1272 阅读 · 0 评论 -
MySQL中limit分页查询
MySQL中limit分页查询:limit关键字,分页查询,是查询中的重点。(1)limit是mysql特有的,其他数据库中没有,不通用。Oracle中有一个相同的机制,叫做rownum。(2)limit的作用:取结果集中的部分数据。(3)语法机制:limit startIndex, length;startIndex表示起始位置(包含0),length表示取几个。例题:取出工资前5名的员工。select empno, ename, sal from emp order by sal原创 2020-08-06 22:24:57 · 637 阅读 · 0 评论 -
MySQL中union求并集
MySQL中union求并集:union关键字,可以将查询的结果相加,求并集。例题:找出工作岗位是salesman和manager的员工。第一种写法:select ename, job from emp where job = ‘salesman’ or job = ‘manager’;第二种写法:select ename, job from emp where job in(‘salesman’, ‘manager’);第三种写法:select ename, job from emp wh原创 2020-08-06 22:19:42 · 664 阅读 · 0 评论 -
MySQL中的子查询
MySQL中的子查询:(1)什么是子查询?子查询都可以出现在哪里?select语句中可以嵌套select语句,被嵌套的select语句就是子查询。select子查询可以出现在select中,from中,where中。(2)where子句中使用子查询例题:找出高于平均工资的员工。select eno, ename from empwhere sal > (select avg(sal) from emp);(3)from子句中使用子查询例题:找出每个部门平均工资的工资等级。sel原创 2020-08-06 22:17:25 · 392 阅读 · 0 评论 -
MySQL中的连接查询
MySQL中的连接查询:(1)什么是连接查询?在实际开发中,大部分的情况下都不是从单表中查询数据,一般都是多张表联合查询取出最终结果。(2)连接查询的分类根据语法出现的年代来划分的话,包括:SQL92(一些老的DBA可能还在使用这种语法。DBA:DataBase Administrator,数据库管理员)SQL99(比较新的语法)根据表的连接方式来划分,包括:内连接:等值连接,非等值连接,自连接。外连接:左外连接(左连接),右外连接(右连接)。全连接(这个不讲,很少用)(3)在原创 2020-08-06 22:13:13 · 1116 阅读 · 0 评论 -
MySQL中简单的DQL(select)语句
MySQL中简单的DQL(select)语句:1、简单的查询语句(DQL)语法格式:select 字段名1,字段名2… from 表名字;注意:任何一条SQL语句都必须以“;”结尾。sql语句不区分大小写。例题:查询员工表的全部字段数据。select * from emp;注意:实际开发中不建议使用 *,效率较低,就是不要把 * 写进代码里,自己查询可以用。例题:查询员工的编号,年薪。(列可以参与数学运算)select eno, sal * 12 from emp;例题:给查询结果原创 2020-08-06 22:02:46 · 581 阅读 · 0 评论 -
MySQL学习前篇概述:
MySQL学习前篇概述:1、sql,DB,DBMS分别是什么?它们之间的关系?DB:DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)DBMS:DataBase Management System(数据库管理系统,常见的有:MySQL,Oracle,DB2,Sybase,SQLServer…)SQL:结构化查询语言,是一种标准通用的语言。标准的sql适合所有的数据库产品。SQL属于高级语言。只要能看懂英语单词的意思,写出来的sql语句,可以读懂什么意思。SQL语句在执行的时候,实际原创 2020-08-06 21:36:43 · 146 阅读 · 0 评论