mysql
文章平均质量分 71
mysql
small_py_trade
这个作者很懒,什么都没留下…
展开
-
锁机制
(2)排他锁 (X):允许获取排他锁的事务更新数据,防止其他事务获得相同数据集的共享锁和排他锁。2,比如有age=19和age=25的记录,查询大于19的记录加上share in mode,会给19的记录加上行锁,并且给25直到正无穷的记录加上临建锁。1,比如只有id=3和8的记录,查询5,就会给3和8之间的记录加上间隙锁,再在另一个事务中修改id=7的数据就会阻塞。3,间隙锁唯一目的是防止其他事务插入间隙,间隙锁可以共存,一个事务的间隙锁不会防止另一个事务在同一间隙加上间隙锁。意向锁之间不会互相排斥。原创 2022-10-11 21:18:34 · 307 阅读 · 0 评论 -
触发器
创建语法:create trigger 触发器名 before/after update/insert/delete on 表名。触发器是与表有关的数据库对象,可以协助应用在数据库端保持数据的完整性。删除: drop trigger 数据库名(默认当前)触发器名。查看:show triggers;原创 2022-10-04 16:51:56 · 366 阅读 · 0 评论 -
存储过程
存储过程是事先经过编译并存储在数据库中的SQL语句的集合。赋值可以使用类似自定义变量的方法,只是局部变量前不用加@。(3)READS SQL DATA:包含读数据的语句,不含写数据的。当使用变量接收查询结果时,只能存储单个的数据,而不能接收表。游标就是用来存储查询结果集的数据类型,在存储过程或函数中可以使用游标对结果集进行循环处理。Notations:重启服务器后所有的变量都会恢复原值,要永久改变需要修改mysql的配置文件。repeat和while的执行顺序有区别,一个先条件后语句,一个先语句后条件。原创 2022-10-04 16:33:56 · 419 阅读 · 0 评论 -
索引+视图+数据库设计
对数据库进行优化时优先考虑的就是索引,其分类有:单一索引(一个字段上加索引)、复合索引(两个或更多添加索引)、主键索引(主键上加索引)、唯一性索引(unique修饰的字段上添加索引)等。mysql注意到id字段有索引对象,然后通过索引idIndex定位到101(索引对象是以B-Tree存储的,可以缩小查找范围)。(1)如带有like的模糊查询语句,如果查询内容是%开头的匹配语句,索引会失效。Notations:如果一张表两个字段有一对多的关系,为了满足第三范式,分成两张表,多出来的表添加外键。原创 2022-10-03 18:43:13 · 471 阅读 · 0 评论 -
事务 (transaction)
而在read committed的隔离级别下,只有事务B执行了commit,之前的所有操作上传到数据库中的表,事务A才能读取到这些操作。//事务A只能读取到事务B已提交的数据。在repeatable read的隔离级别下,事务A中读到的结果总是跟它第一次读到的结果一样,不管事务B怎么进行提交。在serializable级别下,事务A如果对表进行了操作,事务B对同一张表进行操作就会卡住不动,除非事务A提交或回滚结束事务。//事务A开启之后,读取到B的数据都是一样的,即使B事务提交新的。这种隔离级别是理论的。原创 2022-10-03 09:24:02 · 312 阅读 · 0 评论 -
存储引擎
mysql中默认的存储引擎。(2)表空间tablespace用于存储表的内容;该引擎管理的表的主要特征是使用三个文件管理一个表:(1)格式文件(mytable.frm),存储表结构的定义;(2)数据文件(mytable.MYD),存储表行的数据;(3)索引文件(mytable.MYI),存储表上的索引。使用MEMORY的表,数据存储在内存中,每行的长度固定,因此该引擎很快。(2)表数据和索引存储在内存中;存储引擎是mysql中的一个专用术语,实质为表存储数据的方式。存储引擎不同,表存储数据的方式不同。原创 2022-09-29 09:38:44 · 330 阅读 · 0 评论 -
约束(constraint)
可以把classno,classname存入一张班级表,把no,name存入另一张学生表,节省了空间,但是两张表没有关系。常见的约束有:非空约束(not null)、唯一性约束(unique)、主键约束(primary key,简称PK)、外键约束(foreign key,简称FK)、检查约束(oracle中才可用)。添加了外键约束后,student中的class只能为class表中的class_no的值,不能是其他值。主键约束中有:1,主键字段:该字段上有主键约束;2,主键值:主键字段的字面值。原创 2022-09-28 20:40:11 · 3237 阅读 · 0 评论 -
表的操作及数据类型
2,date和datetime:date是短日期,只有年月日。datetime是长日期,有时分秒(长日期默认格式:%Y-%m-%d %h:%i:%s)。insert into 表名(字段1,字段2,字段3,...)values (值1,值2,值3,...)Notations:如果插入字符串的格式刚好是'%Y-%m-%d',mysql会自动做类型转换,不用写str_to_date。1,如果不用date_format函数,查找出来的date类型也会转换成varchar类型,默认是'%Y-%m-%d'。原创 2022-09-26 20:15:52 · 376 阅读 · 0 评论 -
子查询+UNION+LIMIT
这里的t表的是sal的平均值的搜索结果,因为搜索生成的这张表中avg(sal)这行在后面的where比较中要用到,不能用本来的字段名avg(sal),所以要用别名。表连接由于符合笛卡尔积的规律,每连接一个新表,查询数量翻倍,但是union可以减少查询次数。Notations:uinion在合并结果的时候要求两个结果列数相同,在mysql中可以列的数据类型不一致,但oracle中要求数据类型相同。后面的子查询语句相当于先把平均值找出来,然后再找到大于平均值的信息。limit执行顺序在order by的后面。原创 2022-09-25 21:24:34 · 912 阅读 · 0 评论 -
连接查询
如果两张表连接时没有任何条件限制,最后结果就是两张表的乘积,这叫笛卡儿积现象。比如一张表有三列:员工,员工编号,员工的领导编号,那么员工的领导编号就会等于领导的员工编号,需要使用内连接找到每个员工对应的领导。这就是把满足匹配的数据输出,同时把r中不满足的也一起输出,在u中对应null。因为第一个join加了左外连接,所以addressDesc会全部显示出来,导致后面roleName部分是NULL。select...from a join b on a和b的连接条件 join c on a和c的连接条件;原创 2022-09-25 20:16:55 · 276 阅读 · 0 评论 -
数据(单行)处理函数和分组函数
(一)单行处理函数指一个输入对应于一个输出,而多行处理函数是多个输入,一个输出。、常见的单行处理函数:在调用单行处理函数时直接传入字段名。如:select * from user where substr(userName,1,1)='李';找到姓李的人的信息。补充:concat函数用于字符串拼接:concat(字段1,字段2)round(数字,保留位数);保留位数可以是负数,-1表示保留到十位。randn()会生成0到1的随机小数,如果生成100以内的随机数可以用round原创 2022-09-25 16:22:29 · 317 阅读 · 0 评论 -
查询语句 (DQL)
(1)简单的查询查询一个字段:select 字段名 from 表名;查询多个字段:用逗号隔开查询所有字段:使用*(这种方式效率低,开发不建议)或者写上所有字段使用as给字段起别名:select 字段名 as 其他名字 from 表名;(1,但是只是显示结果改变,原表字段不变,因为select不改变字段只是查询;2,as可以省略为空格;3,如果改的名字中有空格或者是中文,可以用单\双引号括起来,但是双引号在oracle里面不能用,单引号可以通用)(2)列参与计算字段可以添加+-*\,最原创 2022-04-08 16:15:56 · 529 阅读 · 0 评论 -
sql基础
sql是一套标准的编程语言,数据库管理系统(DBMS)负责执行,完成对数据库的增删改查。原创 2022-04-07 15:11:31 · 74 阅读 · 0 评论