随笔分类 - MYSQL
摘要:事务的四大特性ACID 并发事务问题 脏读 事务A语句1 update了id=1的数据, 但是还没有commit 事务B语句1 select读取到了事物A还没有提交的数据 不可重复读 事务A语句1, select 事务B语句1, update, commit 事务A语句3, select读取到了被事
阅读全文
摘要:事务 数据准备 create table account( id int auto_increment primary key comment '主键ID', name varchar(10) comment '姓名', money int comment '余额' ) comment '账户表';
阅读全文
摘要:多表查询|子查询 行子查询 查询与张无忌工资相同, 且直属领导相同的员工 #写法1 select * from emp where salary = (select salary from emp where name='张无忌') and managerId = (select managerId
阅读全文
摘要:多表查询(子查询) 子查询, 也称嵌套查询 子查询的语句可以是insert/update/delete/select中的任何一个 根据子查询的结果不同,可以分为: 标量子查询(结果为单个值) 列子查询(结果为一列) 行子查询(子查询结果为一行) 表子查询(子查询结果为多行多列) select * f
阅读全文
摘要:多表查询(联合查询,union,union all) union查询需要多张表的列数一致, 字段类型也保持一致 对于union查询, 就是把多次查询的结果合并起来, 形成一个新的查询结果集 select 字段列表 from 表A ... union [all] select 字段列表 from 表B
阅读全文
摘要:多表查询(自连接) 自连接查询,可以是内连接查询,也可以是外连接查询 select 字段列表 from 表A 别名A join 表A 别名B on 条件...; 自连接内连接 查询员工以及所属领导的名字 #可以这样写 select e1.name '员工',e2.name '上司' from emp
阅读全文
摘要:多表查询 单表查询 查询emp表 select * from emp; 查询dept表 select * from dept; 笛卡尔积(全组合) #emp表有4条记录, dept表有6条记录 #笛卡尔积有4*6=24条记录 select * from emp,dept; 消除无效的笛卡尔积 (em
阅读全文
摘要:多表查询 多表关系 一对多(多对一) 多对多 一对一 一对多(多对一)关系 多对多关系 创建学生表 create table student( id int auto_increment primary key comment '主键ID', name varchar(10) comment '姓名
阅读全文
摘要:外键约束 删除/更新行为 set default在mysql的默认引擎innodb中不支持 CASCADE alter table 表名 add constraint 外键名称 foreign key(外键字段) references 主表名(主表字段名) on update cascade on
阅读全文
摘要:外键约束 用来让两张表的数据之间建立连接, 从而保证数据的一致性和完整性 具有外键的表(emp)称为子表 外键关联的表(dept)称为父表 外键约束 创建表时添加 create table 表名( 字段名 数据类型, [constrain] [外键名称] foreign key(外键字段名) ref
阅读全文
摘要:约束 约束是作用于表中字段上的规则, 用于限制存储在表中的数据. 保证表中的正确性, 有效性和完整性 约束作用于表中字段上, 可以在建表和修改表时为表添加约束 按照需求创建表,并创建约束 create table users( id int primary key auto_increment co
阅读全文
摘要:流程控制函数(IF, CASE) if select if(true,'ok','error'); select if(false,'ok','error'); /*相当于 if true: ok; else: error; */ ifnull select ifnull('ok','default
阅读全文
摘要:日期函数 返回当前日期 select curdate(); 返回当前时间(24小时制) select curtime(); 返回当前日期+时间 select now(); YEAR, MONTH ,DAY获取当前时间对应的年月日 select year(now()); select month(no
阅读全文
摘要:数值函数 ceil 向上取整(并不是四舍五入) select ceil(1.5); select ceil(2.1); floor 向下取整 select floor(3.9); select floor(2.0); mod 取模(余数) select mod(7,4); rand 0-1的随机小数
阅读全文
摘要:函数 字符串函数 字符串拼接 -- concat select concat('hello', ' MYSQL'); 大小写转换 -- lower select lower('HELLO'); -- upper select upper('hello'); 左右填充 -- lpad select l
阅读全文
摘要:DCL权限控制 查询权限 show grants for '用户名'@'主机名'; 查询某个用户的权限 show grants for 'hikaru39'@'localhost'; 授予权限 grant 权限列表 on 数据库名.表名 to '用户名'@'主机名'; 授予某个用户权限 # all,
阅读全文
摘要:DCL数据控制语言 查询用户 #用户信息保存在数据库mysql的user表中 use mysql; select * from user; 创建用户 create user '用户名'@'主机名' identified by '密码'; 在主机localhost创建一个新用户 create user
阅读全文
摘要:DQL查询执行顺序 DQL编写顺序 select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表(需要用到聚合函数) having 分组后条件列表 order by 排序字段列表 limit 分页参数 DQL执行顺序
阅读全文
摘要:MYSQL练习1 DQL查询练习 双分支查询, 查询性别及人数, 如果为1则为男性, 反之女性 -- 相当于if(1) {男} else {女} select if(gender=1, '男', '女') as '性别', count(*) as '人数' from emp group by gen
阅读全文
摘要:DQL分页查询(利用limit) select 字段列表 from 表名 limit 起始索引, 查询记录数; 起始索引从0开始, 起始索引 = (查询页码-1) * 每页显示记录数 分页查询是数据库的方言,不同数据库有不同的实现,MYSQL中是LIMIT 如果查询的是第一页的数据, 起始索引可以省
阅读全文