zoukankan      html  css  js  c++  java
  • 小白的进阶之路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

    );

     连接查询:

    内外连接

    最后一行是去笛卡尔积

     外链接:

    左外,右外连接。

  • 相关阅读:
    MHA-Atlas-MySQL高可用(上)
    MySQL数据库企业级应用实践(主从复制)
    MySQL数据库企业级应用实践(多实例源码编译)
    MySQL存储引擎
    MySQL索引与事务
    MySQL数据备份
    MySQL数据库操作
    bzoj 1038: [ZJOI2008]瞭望塔
    bzoj 2451 Uyuw's Concert
    poj 2187 Beauty Contest
  • 原文地址:https://www.cnblogs.com/hanmengdi/p/9452784.html
Copyright © 2011-2022 走看看