zoukankan      html  css  js  c++  java
  • Mysql数据库(1)

    MySQL是常见的关系型数据库。

    关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
    优点:
    1、易于维护:都是使用表结构,格式一致;
    2、使用方便:SQL语言通用,可用于复杂查询;
    3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
    缺点:
    1、读写性能比较差,尤其是海量数据的高效率读写;
    2、固定的表结构,灵活度稍欠;
    3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

    推荐一个博客,作为小白的我觉得很入门:https://www.cnblogs.com/whgk/category/916860.html

    其余的我就准备写写我想到的,感觉很小白的内容。~。~

    主键(Primary Key):表中有一个列,这个列的值用来唯一标识表中的每一行,用于强制表的完整性,这样的列就 定义为表的主键。

              一个表中只能有一个主键,主键列不允许为空值(not null)。

    外键(Foreign Key):外键必须是另一个表的主键。用来确定表的完整性。

    如何添加外键:

     1 -- 建立卡表
     2 create table card{
     3   id varchar(10) not null primary key      
     4 }
     5 -- 建立上机信息表
     6 create table record{
     7 id int not null primary key,
     8 card_id varchar(10) not null,foreign key(card_id) references card(id) on delete cascade
     9 }engine=innodb default charset utf8;
    10 
    11 -- innodb 是一种数据表的类型,安全性高,支持事务处理及多用户操作,另外还有myisam、bob、heap、csv等类型的表。
    12 -- 这样建表的时候就建立了外键约束
    13 -- 在表外建立外键约束和主键约束的语句如下
    14 alter table record add constraint fk_record_card foreign key (card_id) references card(id);
      alter table record add constraint pk_id primary key record (id);
      

    数据库常见的增删改查操作:

    -- 插入数据
    INSERT INTO table_name ( field1, field2,...fieldN )
                           VALUES
                           ( value1, value2,...valueN );
    -- 将查询结果插入到新表中
    create  table_name (select field1,filed2 from table_name2 );
    -- 删除数据
    DELETE FROM table_name [WHERE Clause]
    -- 模糊查询like
    SELECT field1, field2,...fieldN 
    FROM table_name
    WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
    --注:模糊查询内容可以用’%‘来表示
    -- order by子句
    放在where条件后用来进行排序,order by desc(降序)/asc(升序)
    -- as 子句:在查询中用于起别名
    select field as '别名' from table_name;
    -- limit子句:限制控制台显示的结果数量
    select field from table_name limit 1;
    -- limit子句还可以进行分页,pageIndex为每页显示行数,page为当前页数,括号里的内容是从第几条开始
    select field from table_name limit (page-1)*pageIndex,pageIndex;
    -- in子句可以使父查询匹配子查询的多个返回值,同理还有not in
    select field  from table_name where 条件 in (select 条件 from table_name2);
    -- exists 用来确定后面的子查询是否进行,同理还有not exists
    -- group by 子查询:用来对查询结果进行分组,注意还可以进行多列分组查询,在我的语句中id位置加逗号再加上其他的字段名即可
    select field as '别名' from table_name group by id;
    -- having子句对group by 的结果进行筛选
    select field as '别名' from table_name group by id having 条件;
    -- 执行顺序:where--group by-- having

    连接查询:

    内连接:inner join 显示两表的共有部分;

    左连接:left join 以左表为基础进行连接查询;

    右连接: right join 以右表为基础进行连接查询;

    --------------------------------------------------------------手动分割线----------------------------------------------------------------

    常用的语句大概就是这些,其他对数据库的操作请看上面的链接,事务等放在第二篇,写的一般,请多多包涵。*~*

  • 相关阅读:
    【leetcode】Pascal's Triangle
    [bxd学习java基本点]10.set元素不重复,取元素顺序会变的。TreeSet取值时,是安顺序来的。
    cocos2dx 学习点滴(4) cocos2dx 架构和引擎目录
    VC 2008编译libxml22.7.6
    程序猿的九重天
    使用批处理文件设置环境变量
    删除指定目录下除开指定文件外所有文件的批处理命令
    关于永动机的思考
    程序员的九阳真经
    上帝的归上帝,程序的归程序 (卓有成效的程序员)
  • 原文地址:https://www.cnblogs.com/chuxuedejuzi/p/10903245.html
Copyright © 2011-2022 走看看