小白的进阶之路13

 昨天说到了级联保存,那么什么是级联保存。

我们都知道,双向保存就是customer和linkman都要保存,那么单项保存呢?单向保存就是只保存一方,而不需要保存另一方,但是这样会出异常,这是就需要级联保存

只需要保存customer,会自动的将linkman保存到数据库中。

级联保存室友方向性的,保存客户级联联系人,保存联系人级联客户。

说道数据库,不得不承认,数据库是我的弱项,我今天想好好地补一下,然后再继续hibernate。

首先要知道:SQL是结构化查询语言:structure query language

那么SQL的作用是啥:用客户端使用SQL来操作服务器。

mysql,和 oracle都有方言。比如在mysql 中limit 在oracle中看不懂。

在mysql中,不区分大小写。

SQL的语言分类:

DDL:对数据库或表的结构操作。数据定义语言:data definition language

DML:对表的记录进行更新,比如增加,修改,和删除 。数据模型语言:Data Manipulation Language

①:update +表名+set+修改内容         where +条件

②:alter+表名+add/modify/drop+字段名

DQL:对表的记录查询。数据查询语言:data query language

在控制台中,第一条查询语句        显示数据库:show database;(注意分号) 

查询数据库:use +数据库名;

显示表名:show tables;

查看表结构:desc +表名;

 

删除表:drop+表名;

创建数据库:create  database +数据库名;

删除数据库:drop database +数据库名;

基本数据类型:

int:

double:

decimal:

char:固定长度255;不会有一个字节来存储数据长度,多同于存储身份证号,卡号,各种固定长度的号,时间的格式,或UUID(32位)

varchar:变长:会单独留出一个字节来记录所存数据的长度

date:

time:

DDL

创建表:

 

修改表:

alter table +表名称(

add (增加项)

);

alter table +表名称

modify +列明+列新类型

alter table+表名称

drop+列名

修改表名

alter table 原名称 rename to 新名称;

 

数据库中所有字符串类型,都要使用单引号,甚至是日期类型,也要使用单引号。

DML

添加记录。

部分列名,其他为null;

没有列名,全部设置。

修改记录

全male属性。

有条件修改

删除记录

delete from +表名

DQL:select +字段名  from+表名  where +条件

查不同姓名的记录

 查看整张表:select* fromstudent;

列运算:select salary*1.5 from employee;

起别名:select sno,sname name from  student;

 条件查询:select ()from () where ()

select  *  from  employ  where  salary is   not   null;     

select * from employ where job in (“经理”、“分析师”);

模糊查询:关键字 like   '_'   下划线代表着一个字多多个字。

select * from employ where name like “张_”;

排序:关键字 order by;ASC或默认   表示升序   DESC 表示降序

select * from employ order by salary;

聚合函数:count

select  count (salary)from  employ;

表示查询salary不为null;

select max(salary) from employ;

select min(salary) from employ;

select sum(salary) from employ;

select avg(salary) from employ;

分组查询:关键字 group by

每个部门工资大于15000的人数

每个部门工资大于15000的人数大于等于2   分组前条件(where sal>15000):工资大于15000,分组后条件(having count (*)>=2) 人数大于等于2;

分页查询:mysql方言是  limit 为关键字:

select * from employ limit 8,5;(显示从下标为8,即第九行开始之后的5条记录)

一页的记录是10行,查询第三页;(当前页数-1)*一页记录数

select * from employ limit 20,10;

not in

为空 is null,不为空 is    not   null ;

 

一般   “每个”、 这种词语,就是分组,用group by;   “数量”’  这种词语就是 count(*);

创建主键。主键的特性:非空,唯一,可被引用。

关系模型:一对一,一对多,多对多。

主表和从表的关系,一是主表,多是从表。

双向关联:一方中引用了多方,多方中引用了一方。

public class employ{

  private department dep;

}

 public class department{

private List<employ> ls ;

}

外键是必须引用主键,外键可以为空,可以重复,一张表中可以有多个外建。

多方中包含一方的主键。一对多,关系模型。

emp表中的外键名可以自己取,不与deptno相同。

一对一关系模型。

外键必须引用主键,但是引用哪个主键??在一对一中,不能引用重复的外键,所以,使用在自己的主键当做外键。

 多对多的表中,需要两个外键,并且需要建立一个关联表。

create table student(

sid int,

sname  varchar(20),

);

insert into values(1,“刘德华”);

insert into values(1,“马德华”);

insert into values(1,“李德华”);

 

create table teacher(

tid  int,

tname  varchar(20),

);

 

insert into values(1,“张老师”);

insert into values(1,“韩老师”);

 

create table stu_tea(

stu  int,

tid int

);

 连接查询:

内外连接

最后一行是去笛卡尔积

 外链接:

左外,右外连接。

 

posted on 2018-08-10 07:12  格竹  阅读(130)  评论(0编辑  收藏  举报

导航