• 数据库(概念、语法、DBMS、SQL语言:创建数据库、表格,添加、修改、删除数据记录)


    关系型数据库:以表作为实体,以主键和外键关系作为联系的一种数据结构。

    主键:在关系型数据库中,用一个唯一的标识符来标志每一行,这个标识符就是主键。主键有两个特点:非空和不能重复。

    外键:在关系型数据库中,外键就是用来表达表与表之间的关系、联系,通过主外键关系,建立实体之间的联系。

    表之间的三种基本关系模型:

          ① 一对多关系: 一条主表记录对应多条从表记录,一条从表记录对应一条主表记录。

          ② 一对一关系: 一条主表记录对应一条从表记录,一条从表记录对应一条主表记录。

          ③ 多对多关系: 一条主表记录对应多条从表记录,一条从表记录对应多条主表记录。

    关系型数据库管理系统(DBMS):

         关系型数据库只是一个保存数据的容器,大多数数据库依靠一个称为数据库管理系统(DBMS)的软件来管理数据库中的数据。

         目前流行的关系型数据库服务器管理系统有:

          ① 微软的MS SQL Server

          ② 甲骨文的Oracle

          ③ IBM公司的DB2

          ④ 开源数据库的MySQL、PostgreSQL

    SQL:

         SQL是结构化查询语言,是一种用于管理关系型数据库,并与数据库中的数据进行通讯的计算机语言。

    SQL语句:

         ① 数据定义语言(DDL): 用于创建、修改和删除数据库内的数据结构。

    复制代码
     1 -- 创建数据库db
     2 CREATE DATABASE db;
     3 -- 删除数据库db
     4 DROP DATABASE db;
     5 -- 建立表t_student
     6 CREATE TABLE t_student(
     7     -- PRIMARY KEY标志该列为主键列
     8     -- AUTO_INCREMENT设置自动增长列,该列的值由DBMS分配,不用开发者维护
     9     id INT PRIMARY KEY AUTO_INCREMENT,-- 编号
    10     studentName VARCHAR(20),-- 姓名,20表示名字20个字
    11     sex ENUM('男','女'),-- 性别,enum表示枚举
    12     birthday DATE, -- 生日
    13     tel VARCHAR(11) -- 电话
    14 );
    复制代码

       

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

    复制代码
    1 -- 查询所有的性别 DISTINCT表示去除重复的列
    2 SELECT DISTINCT sex FROM t_student;
    3 
    4 -- 查询表中所有的数据,*表示查询表中所有的列
    5 SELECT * FROM t_student;
    6 
    7 -- 查询第一条 开始的数据,显示3条记录
    8 SELECT * FROM t_student LIMIT 0,3;
    复制代码

    ③ 数据操作语言(DML): 用于修改数据库中的数据,包括插入、更新和删除数据

    复制代码
    1 -- 添加记录
    2 INSERT INTO t_student(studentName,sex,birthday,tel)
    3 VALUES('张三','男','1983-09-30','13987879898');
    4 
    5 -- 删除id为17的记录
    6 DELETE FROM t_student WHERE id=17;
    7 
    8 -- 修改李四的电话
    9 UPDATE t_student SET tel='13966666666' WHERE studentName='李四';
    复制代码

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

     1 -- 给用户授予访问权限的GRANT语句 2 -- 取消用户访问权限的REVOKE语句 

     外键约束:

           外键:是指从表的某列与主键的某列存在依附关系。

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

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

    主键约束:

            主键是表中的一到多个列,主键列不能为空,也不能重复,一个表中只能由一个主键。

    聚合函数:

          对一组数据进行统计分析是使用聚合函数来实现的。常见聚合函数如下:

           COUNT:统计行数量。

           SUM:获取单个列的和计量。

           AVG:计算某个列的平均值。

           MAX:计算某个列的最大值。

           MIN:计算某个列的最小值。

    SQL语句的执行顺序:

          第一步:执行FROM

           第二步:where条件过滤

           第三步:GROUP BY分组

           第四步:执行select投影列

           第五步:HAVING条件过滤

           第六步:执行ORDER BY排序语句,默认为asc升序,DESC为降序。

    联接:

          内联接和外联接的区别:

           内联接:只能查询两个表中都有的相关数据的记录;

           外连接:可以查询一个表中所有的记录,无论该记录是否有关联数据。

    复制代码
     1 CREATE TABLE t_man(
     2     id INT PRIMARY KEY AUTO_INCREMENT,
     3     manName VARCHAR(20),
     4     birthday DATE
     5 );
     6 INSERT INTO t_man(manName,birthday)
     7 VALUES('张三','1980-02-03'),('李四','1994-01-05'),
     8       ('王五','1991-07-30'),('赵六','1995-11-18');
     9 SELECT * FROM t_man;
    10  
    11  CREATE TABLE t_bike(
    12     id INT PRIMARY KEY AUTO_INCREMENT,
    13     bikeType VARCHAR(20),
    14     money INT,
    15     manId INT
    16  );
    17  
    18  -- 添加外键约束,让主键和外键一一对应,防止垃圾数据的产生
    19  ALTER TABLE t_bike ADD CONSTRAINT fk_mb FOREIGN KEY (manId)
    20  REFERENCES t_man(id);
    21  
    22  INSERT INTO t_bike(bikeType,money,manId)
    23  VALUES('凤凰',400,1),('永久',500,1),('火麒麟',250,1),
    24        ('大运',1000,2),('夏力',600,2),('捷安特',1200,3),
    25        ('摩拜',200,3),('宝马',2000,3),('奔驰',600,3);
    26  
    27  -- 查询所有自行车,并显示该自行车的主人姓名
    28  SELECT b.*,m.manName FROM t_bike b JOIN t_man m ON m.id=b.manId;
    29  
    30  -- 查询李四所有的自行车(内连接:显示两个表中有联系的数据)
    31  SELECT b.* ,m.manName FROM t_bike b JOIN t_man m ON m.id=b.manId WHERE m.manName='李四';
    32  SELECT b.* ,m.manName FROM  t_man m JOIN t_bike b ON m.id=b.manId WHERE m.manName='李四';
    33  
    34  SELECT b.* FROM t_bike b,t_man m WHERE b.manId=m.id AND m.manName='李四';
    35  
    36  -- 显示所有用户的自行车信息,外连接不能用,加where的形式来写
    37  -- 外连接:RIGHT 右外连接,包含右边表中所有的信息,left 左外连接,包含左边表中所有的信息。 
    38  SELECT m.*,b.bikeType,b.money  FROM t_bike b RIGHT JOIN t_man m ON b.manId=m.id;
    39  
    40  -- 显示所有用户自行车的数量
    41  -- 左外连接
    42  SELECT m.*,COUNT(bikeType) num FROM t_man m LEFT JOIN  t_bike b ON m.id=b.manId GROUP BY m.id;
    43  -- 右外连接
    44  SELECT m.*, COUNT(bikeType) number FROM t_bike b RIGHT JOIN t_man m  ON b.manId=m.id GROUP BY m.id;
    复制代码
  • 相关阅读:
    This counter can increment, decrement or skip ahead by an arbitrary amount
    LUT4/MUXF5/MUXF6 logic : Multiplexer 8:1
    synthesisable VHDL for a fixed ratio frequency divider
    Bucket Brigade FIFO SRL16E ( VHDL )
    srl16e fifo verilog
    DualPort Block RAM with Two Write Ports and Bytewide Write Enable in ReadFirst Mode
    Parametrilayze based on SRL16 shift register FIFO
    stm32 spi sdcard fatfs
    SPI bus master for System09 (2)
    SQLSERVER中的自旋锁
  • 原文地址:https://www.cnblogs.com/Jansens520/p/6669855.html
Copyright © 2020-2023  润新知