黑马程序员技术交流社区
标题: 【石家庄校区】MySQL、多表事务、JDBC课堂笔记 [打印本页]
作者: 学习让我快乐啊 时间: 2018-5-9 17:12
标题: 【石家庄校区】MySQL、多表事务、JDBC课堂笔记
本帖最后由 学习让我快乐啊 于 2018-5-9 17:16 编辑
MySQL
概述SQLSQL分类DDL:数据定义语言
DCL:数据控制语言
DML:数据操纵语言
DQL:数据查询语言
对数据库操作创建数据库
查看数据库
修改数据库
删除数据库
其他操作
对表进行操作
Java中的类型 | SQL中的类型 |
byte/short/int/long | tinyint/smallint/int/bigint |
float | float |
double | double |
boolean | boolean |
char/String | char/varchar |
Date | date/time/datetime/timestamp |
File(文件类型) | Blob(二进制的文件)/text(文档) |
单表约束
创建表
查看表
查看数据库下的所有表:show tables;
查看某个表的结构信息:desc 表名;
删除表
修改表
添加列:alter table 表名 add 列名 类型(长度) 约束;
修改列类型,长度和约束:alter table 表名 modify 列名 类型(长度) 约束;
删除列:alter table 表名 drop 列名;
修改列名称:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
修改表名:rename table 表名 to 新的表名;
修改表的字符集:alter table 表名 character set 字符集;
对记录进行操作添加表的记录
向表中插入某些列:insert into 表名(列名1,列名2,列名3...) values(值1,值2,值3...)
向表中插入所有列:insert into 表名 values(值1,值2,值3...)
注意:
值的类型与数据库中表列的类型一致
值的顺序与数据库中表列的顺序一致
值的最大长度不能超过列设置最大长度
值的类型是字符串或者是日期类型,使用单引号引起来
修改表的记录
删除表的记录
查看表的记录
总结:
多表
约束的作用约束是用来保证数据的完整性
单表约束 主键约束
唯一约束
非空约束
多表约束外键约束:用来保证数据完整性(多表之间)。
添加外键约束在员工表上添加外键alter table employee add foreign key (dno)references dept(did);
设置外键为非空alter table employee modify dno int not null;
多表设计之表关系的介绍一对多的关系一对多的例子:
一个部门下可以有多个员工,一个员工只能属于某一个部门。
在多的一方创建外键指向一的一方的主键
多对多的关系多对多的例子:
一个学生可以选择多门课程,一门课程可以被多个学生选择。
需要创建中间表,中间表中至少两个字段,分别作为外键指向多对多双方的主键
一对一的关系 一对一的例子:
一个公司可以有一个注册地址,一个注册地址只能对一个公司。
唯一外键对应 假设是一对多,在多的一方创建外键指向一的一方的主键,将外键设置为unique
(不推荐使用)主键对应将两个表的主键建立对应关系即可
多表查询连接查询
交叉连接 cross join(任意两表之间均可查询)
内连接 inner join(inner可省略)(存在外键约束的两表之间可以查询)
根据关联条件去匹配两个表中的记录,如果匹配成功则返回记录,否则不返回
显式内连接:select * from表1 inner join 表2 on 关联条件;
隐式内连接(较常用):select * from 表1,表2 where 关联条件;
外连接 outer join(outer 可省略)(存在外键约束的两表之间可以查询)
内连接与外连接的区别
内连接查询出的是两个表的交集
外连接查询的是左表或右表的全部加上交集
子查询
带in的子查询
例:select * from classes where cid in (SELECT cno FROM student WHERE birthday > '1991-01-01');
带exists的子查询
例:select * from classes where exists (SELECT cno FROM student WHERE birthday > '1991-01-01');
带any的子查询
例:SELECT * FROM classes WHERE cid > ANY (SELECT cno FROM student )
带all的子查询
例:SELECT * FROM classes WHERE cid > ALL (SELECT cno FROM student)
事务
概述事务的特性(ACID特性)事务的隔离
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |