MySQL

SQL的分类:

  • DDL:数据定义语言
    Create,Drop,Alter…
  • DCL:数据控制语言
    Grant,if…
  • DML:数据操作语言
    Insert,update,delete
  • DQL:数据查询语言
    select
Java中的类型MySQL中的类型
byte/short/int/longtinyint/smallint/int/bigint
floatfloat
doubledouble
booleanbit(值为0或1)
char/Stringchar和varchar类型

char和varchar的区别:

  • char代表是固定长度的字符或者字符串。
  • varchar代表的是可变长度的字符串
Datedate/time/datetime/timestamp

datetime和timestamp区别:

  • datetime是既有日期又有时间的日期类型,如果没有想这个字段中存值,数据库使用null存入到数据库中
  • timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的系统时间存入到数据库
FileBLOB/TEXT

修改表

  • 修改表:添加列
    alter table 表名 add 列名 类型(长度) 约束;
  • 修改表:修改列类型,长度和约束
    alter table 表名 modify 列名 类型(长度) 约束;
  • 修改表:删除列
    alter table 表名 drop 列明;
  • 修改表:修改列名称
    alter table 表名 change 旧列名 新列名 类型(长度) 约束;
  • 修改表:修改表名
    rename table 表名 to 新的表名;
  • 修改表:修改表的字符集
    alter table 表名 character set 字符集;

数据库备份
mysqldump -u root -p db1 > C:/db1.sql
数据库还原
1.先在创建一个数据u
2.mysql -u root -p db1 < C:/db1.sql

表之间如果存在多对多的关系,则需要第三张表,中间表至少两个字段,分别作为外键指向多对多双方的主键。

如果是多张表之间存在一对一关系的话,有两种建表方法:

  1. 唯一外键对应
    假设是一对多,在多的一方创建外键指向一的一方的主键,将外键设置为unique
  2. 主键对应
    将两个表的主键建立对应关系即可。

连接查询

  • 交叉连接:cross join
    查询到的是两个表的笛卡尔积
    语法:
select * from 表1 cross join 表2;
select * from 表1,表2;
  • 内连接:inner join(inner是可以省略的)
    显示内连接:在SQL中显式地调用inner join 关键字
    语法:select * from 表1 inner join 表2 on 关联条件;
    隐式内连接:在SQL中没有调用inner join 关键字
    语法:select * from 表1,表2 where 关联条件;
  • 外连接:outer join(outer可以省略)
    左外连接:
    语法:select * from 表1 left outer join 表2 on 关联条件;
    右外连接:
    语法:select * from 表1 right outer join 表2 on 关联条件;

显式内连接:
SELECT * FROM emp e INNER JOIN race r ON e.rid=r.rid;
隐式内连接:
SELECT * FROM emp e,race r WHERE e.rid=r.rid;

在这里插入图片描述

子查询

带in的子查询

SELECT * FROM race WHERE rid IN (SELECT rid FROM emp WHERE age>15);
将where后面的判断条件的判断范围设置在子句的查询结果之中

带exists的子查询

SELECT * FROM emp WHERE EXISTS (SELECT age FROM emp WHERE age <16);
如果后面一句存在查询结果,则执行EXISTS之前的语句

带any的子查询

SELECT * FROM emp WHERE id > ANY (SELECT rid FROM race);
大于任意的一个即可

带all的子查询

SELECT * FROM emp WHERE age > ALL (SELECT age FROM emp WHERE age<18);
必须大于所有才行

事务

事务的隔离级别

脏读:一个事务可以读取到另外一个事务还未提交的改变
不可重复读:一个事务内多次读取得到的数据不同,这是由于一个事务读取到了另外一个事务已经commit的数据,导致多次查询结果不一致
虚读:

  • read uncommitted:脏读,不可重复读,虚读都有可能发生
  • read committed:避免脏读。但是不可重复读和虚读是有可能发生
  • repeatable read:避免脏读和不可重复读,但是虚读有可能发生
  • serializable:避免脏读,不可重复读,虚读。

设置事务的隔离级别

SET SESSION TRANSACTION ISOLATION LEVEL 隔离级别

查看当前的隔离级别

SELECT @@tx_isolation;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值