数据库小结

1、关系型数据库(只是一个保存数据的容器)

    关系模型是把世界看作是由实体和联系组成的,而关系型数据库是将数据库表作为实体,以数据库的主键和外键的关联关系描述的一种数据库结构

    表之间的关联关系:①一对一关系:一条主表记录对应一条从表记录,同时一条从表记录也对应一条主表记录

                                    ②一对多关系:一条主表记录对应多条从表记录,同时一条从表记录对应一条主表记录

                                    ③多对多关系:一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录(需要通过中间表来连接,由中间表来描述关系)

2、数据库管理系统DBMS(Database Management System)管理数据库中的数据

3、结构化查询语言SQL(Structured Query Language)

    一种用于管理关系型数据库,并与数据库进行通讯的计算机语言

    分类:①数据定义语言(DDL):创建、修改、删除数据库的内部数据结构

               ②数据查询语言(DQL):用于数据库中数据的查询

               ③数据操作语言(DML):用于数据库中的数据的修改,包括添加、删除、修改

               ④数据控制语言(DCL):控制数据库访问权限

4、mySQL中要掌握的数据类型:整型:int         浮点型:float、double、decimal         字符型:varchar          日期型:date   

5、一些操作

    -- 创建数据库
    CREATE DATABASE 数据库名;

    -- 删除数据库
    DROP DATABASE 数据库名;

   -- 创建表
   CREATE TABLE t_student(
        id INT PRIMARY KEY AUTO_INCREMENT, -- 编号
        studentName VARCHAR(20), -- 学生姓名
        sex VARCHAR(20), -- 性别
        birthday DATE, -- 生日
        tel VARCHAR(20) -- 电话 最后一列不用加逗号
);

   -- 删除表
   DROP TABLE t_student;

   -- 查询表中所有的数据 *表示查询所有的列
   SELECT * FROM t_student;

   -- 添加记录

   INSERT INTO t_student(studentName,sex,birthday,tel) VALUES('张三','男','1980-09-20','13890987672');

   -- 添加多条记录 中间用逗号隔开
   INSERT INTO t_student(studentName,sex,birthday,tel)
    VALUES('张起灵','男','1967-07-17','18810895153'), ('王胖子','男','1977-05-31','13536377745'),('无邪','男','1980-09-16','13425743234');

    -- 删除,"%"表示任意多个或零个字符 ,“ _ ”表示单一字符
    DELETE FROM t_student WHERE studentName='张_'; -- 删除姓张的学生
    DELETE FROM t_student WHERE studentName LIKE '%李%'; -- 删除姓名带有李的学生

    -- 修改电话
    UPDATE t_student SET tel='13425252353' WHERE studentName='张三';

    -- 同时修改电话和生日
    UPDATE t_student SET tel='13425251258',birthday='1998-10-11' WHERE studentName='张三';

    -- 修改名字
    UPDATE t_student SET studentName='吴邪' WHERE id='10';

    -- 查询所有的男生
    SELECT * FROM t_student WHERE sex='男';
    SELECT * FROM t_student WHERE studentName LIKE '%张%'; -- 查询所有姓名有张的

    -- 查询姓张的男生
    SELECT * FROM t_student WHERE studentName LIKE '张%' AND sex='男';

    -- 查询90后的学生
    SELECT * FROM t_student WHERE birthday >= '1990-01-01' AND birthday < '2000-01-01';

    -- 查询第三条到第五条记录
    -- 第一个表示从第几个开始,第一条是0;第二个参数表示显示几条
    SELECT * FROM t_student LIMIT 0,3;

    -- 按年龄排序  asc升序  desc降序  默认升序
    SELECT * FROM t_student ORDER BY birthday DESE;

    -- 查询没有手机的学生,使用is NULL或ISNULL(),不能用=null
    SELECT * FROM t_student WHERE ISNULL(tel);
    SELECT * FROM t_student WHERE tel IS NULL;

     -- 查询id为3和5、8的学生,in表示在什么范围之内
    SELECT * FROM t_student WHERE id IN (3,5,8);

    -- 查询所有学生的性别, distinct表示去除重复记录
    SELECT DISTINCT sex FROM t_student;

6、条件判断使用case when

    select e. * , (case when 条件 then 返回的语句

                when 条件 then 返回的语句 

                 else 返回的语句

                 end 

    )' 别名 ' from 表名 e;     别名可不要,e为表的别名

7、删除数据:删除所有数据:使用delete不加where条件

                                                使用truncate直接删除, truncate table 表名

    区别:delete会记录日志,意味着删除后的数据还可以恢复,但效率低

              truncate不会记录日志,删除后的数据不能恢复,但效率高

8、聚合函数的分类:count:统计行数量,count (*)表示统计所有的记录,count(a)表示统计符合a的非空记录

                                  sum:获取单个列的合计值

                                  avg:计算某个列的平均值

                                  max:计算某个列的最大值

                                  min:计算某个列的最小值

9:、SQL语句的执行顺序:执行from   -------where条件过滤   ------- group by 分组    ------- 执行select投影列   ------- having条件过滤  -------- 执行order by 排序

       having和where的区别:两者都是过滤条件,where在运行分组前,因此不能执行任何聚合函数

                                             having是运行在分组后,只能用在聚合函数的过滤

      在分组查询中,能够查询的字段只能是分组字段和聚合函数

10、数据完整=可靠性+准确性

       数据完整是为了防止立即数据的产生,从而影响数据库的执行效率

       分类:①实体完整性 保证一行数据是有效的  

                                         实现方式:主键约束(primary key)和唯一约束(unique)

                                                           区别:唯一约束可以为空,并且可以在一张表中给多个列设置唯一约束;主键约束不能为空,也不能重复,一个表只能有一个主键

                  ②域完整性  保证一列数据得输入是有效的

                                       实现方式:非空约束(not null)      默认约束(default)        检查约束(check 但是mySQL不支持) 

                   ③引用完整性  保证引用的编号是有效的   实现方式:设置外键约束

                   ④用户自定义完整性  保证自定义规则

         两个表之间如果存在外键约束,那么删除表主表记录时,由于有外键约束存在,无法删除有从表记录引用的主表记录,这时,删除主表记录有两种方式:

         1、级联删除:将主表记录对应的从表记录先删除,在删除从表记录

          2、外键设空:将主表记录对应的从表记录外键设置为null,在删除主表记录

          外键约束与外键:外键是指从表的某列与主表的某列存在依赖关系

                                       外键约束是指外键关联主键上强制加上一个约束,如果违反约束,则不允许该条数据的修改

                                       注意:没有外键约束不等于没有外键


 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值