数据库

作者: 定格r | 来源:发表于2018-09-19 21:03 被阅读0次

    1. 什么是数据库?

    数据库: database,存储数据的仓库

    数据库:高效的存储和处理数据的介质(介质主要是两种:磁盘和内存)

    2. 数据库的分类?

    数据库基于存储介质的不同:进行了分类分为两类:
    关系型数据库(SQL)和非关系型数据库(NoSQL: Not Only SQL,不是关系型的数据库都叫做非关系型数据库)

    3.不同的数据 库阵营中的产品有哪些?

    关系型数据库

    • 大型: Oracle, DB2

    • 中型: SQL-SERVER, Mysql等

    • 小型: acess等

    非关系型数据库
    memcached, mongodb, redis(同步到磁盘)

    4.两种数据库阵营 的区别?

    • 关系型数据库:安全(保存磁盘基本不可能丢失),容易理解,比较浪费空间(二维表)

    • 非关系型数据库:效率高,不安全(断电丢失)

    关系型数据库

    1. 什么是关系型数据库?

    • 关系型数据库 一种建立在关系模型(数学模型)上的数据库

    • 关系模型 一种所谓建立在关系上的模型.关系模型包含三个方面

    • 数据结构 数据存储的问题,二维表(有行和列)操作指令集合:所有SQL语句

    • 完整性约束 表内数据约束(字段与字段),表与表之间约束(外键)

    1、数字类型

    数据类型 单位
    整型
    Tinyint 1 字节
    smallint 2 字节
    mediumint 3 字节
    int 4 字节
    bigint 8 字节
    浮点型
    float 8 或 4 字节
    double 8 字节
    字符串类型
    char 0 ~255个字符
    varchar 0 ~255个字符(长度可变)
    时间和日期类型
    date 1000-01-01 到 9999-12-31 之间
    time -838:58:59 到 835:59:59之间

    补充

    整型:

    1.SQL中的数值类型全部都是默认有符号:分正负有时候需要使用无符号数据:需要给数据类型限定: int unsigned; --无符号:从0开始

    2.查看表结构的时候,发现每个字段的数据类型之后都会自带-一个括号里面有指定的数字


    image.png

    3.显示宽度:没有特别的含义,只是默认的告诉用户可以显示的形式而已:世界上用户是可以控制的,这种控制不会改变数据本身的大小,

    显示宽度的意义:在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度:通常需要搭配-一个前导0来增加宽度,不改变值大小: zerofil(零填充):零填充会导致数值自动变成无符号

    浮点型:

    创建浮点数表:浮点的使用方式:直接float表示没有小数部分; float(M,D): M代表总长度,D代表小数部分长度,整数部分长度为M-D

    插入数据,可以是直接小数,也可以是科学计数法

    image.png

    浮点型数据的插入:整型部分是不能超出长度的,但是小数部分可以超出长度
    (系统会自动四舍五入)

    image.png

    结果:浮点数一定会进行四舍五入(超出精度范围):浮点数如果是因为系统进位导致整数部分超出指定的长度那么系统也允许成立,

    image.png

    时间和日期

    image.png

    2.MySQL 数据库操作

    • 创建数据库
      注意:数据库名字不能用关键字或者保留字(如果非要使用关键字或者保留字,那么必须使用反引号
    create  database  数据库名字;
    
    • 查看数据库
    show  databases;
    
    • 选择数据库
    use  数据库名;
    
    • 删除数据库
    drop  database  数据库名;
    

    3、MySQL 数据表操作

    • 创建数据表
    use  use  数据库名;
    create table 数据表名(、、、、);
    
    create table 数据库名.数据表名(、、、、);
    
    • 查看表结构
      1.查看所有表
    show tables;
    

    2.产看部分表

    image.png

    3.查看表的创建语句


    image.png

    4.查看表结构

    describe 数据表名;
    //或者
    desc  数据表名;
    //或者
    show   columns   from   数据表名;
    
    • 删除数据表
    drop  table 数据表名;
    

    还可以一次性删除多张表

    drop  table 数据表名,数据表名2.....;
    

    4.约束约束的类型:

    一、实体完整性约束

    1、主键约束 :primary key, 特性:唯一性,非空性

    二、参照完整性约束

    2、外键约束 ...foreign key(属性名) references 参照表名(参照属性名)

    三、用户自定义完整性约束

    3.默认值约束 default

    4.非空约束 not null (null!=0)

    5.检查约束 check

    6.唯一性约束 unique

    注意:一个表,没有主键是可以创建起来的,但是没有实际意义。

    Create table person(
    person_id  char(10)  primary  key, /*列级约束*/
    name  varchar(10)  not null ,gender  char(1)  check  gender=’m’  or gender =’f’,
    birth_date  date  default ‘1990-1-1’)
    
    Create  table food (
    Person_id  char(10),
    Food_name  varchar(20),
    Constraint  PK_food  primary key(person_id,food_name)  /*表级约束*/
    Constraint      FK_food     foreign   key(person_id)   references person(person_id)    /*表级约束*/
    

    5.属性增删改查

    • 增加
    alter table 表名 ADD column  属性名  数据类型  约束条件;
    
    image.png

    例如:


    image.png
    • 删除
    alter table 表名 drop  属性名 ;
    
    image.png
    • 修改
      1.修改表名
    rename table 旧表名  to 新表名;
    //或者
    alter  table   旧表名  rename  to  新表名;
    

    2.只修改属性数据类型

    alter table 表名 modify  属性名  要修改的数据类型;
    
    image.png

    3.只修改属性名称

    alter table 表名 change  旧属性名   新属性名   数据类型;
    
    image.png

    4.修改属性名称和属性数据类型

    alter table 表名 change  旧属性名   新属性名   要修改的数据类型;
    
    • 查看
      1.查看表结构
    desc 表名;
    
    show columns from 表名;
    

    2.查看表的属性值

    select * from  数据库名.表名;
    

    6.属性数据增删改查

    • 增加
      1.插入全部属性数据
    insert into 表名 values('第一个属性的值','第二个属性的值');
    

    2.插入多条属性数据

    insert into 表名 values('第一个属性的值','第二个属性的值'),
    ('第一个属性的值','第二个属性的值'),
    ('第一个属性的值','第二个属性的值');
    

    3.插入部分属性数据

    insert into 表名 (要插入的属性名1,要插入的属性名2) values ('属性名1对应的值','属性名2对应的值');
    
    • 删除
    delete from 表名 where  满足的条件(具体的属性名=‘具体的属性值’)
    
    • 修改/更新
    update 表名 set 属性名=‘要修改的属性值’ where  属性名=‘原属性值’ 
    
    • 查看
    select  属性名 from  表名 where 满足的条件
    //同时满足两个条件
    select  属性名 from  表名 where 满足的条件1 and 满足的条件2  
    select  属性名 from  表名 where between   满足的条件1  and 满足的条件2
    

    解决乱码问题

    image.png

    7.补充

    • Auto_increment
      自增约束,默认从1开始自增,只能用于主键,不能对非主键属性进行约束。
    create  talbe  test(
    colum1  int  primary  key  auto_increment,
    colum2  varchar(20) ,
    colum3  char(10));
    
    • Temporary 关键字
      定义表的类型为临时表,只能创建它的用户可见,当关闭数据库链接时,MySQL中创建的临时表会被自动删除。
    • after 关键字
    Alter  table  test  modify  colum3  char(10)  after  colum1;
    
    • 用set关键字向表中插入数据
      注意一次只是插入了一条记录,一个语句中只出现一个set。
    Insert  into  test   set  colum2 =’Jiangsu’, colum3 = ‘nanjing’;
    
    • 一条SQL语句中,可同时对多个属性进行修改 例:
    Alter  table  test  add  colum4  date , drop  colum3;
    /*增加了一个属性colum4,同时删除了一个属性colum3*/
    
    • 复制基本表
    1. 用关键字like,例:
    Create  table  test_a  like  test;
    

    注意:此语句复制了原表test的所有属性及属性的约束及后面将会讲的索引,但test中的内容不会被复制到test_a中。
    2.用关键字as select...,例:

    Create  table  test_b  as  select  colum1,colum2  from  test;
    

    注意:此句复制了select 所查询的属性(未被查询的属性没有被复制)及表中属性的数据,但是test表中的索引及完整性约束并未被复制到test_b中。

    8.单表查询基本的语法结构:

    Select  查询的内容1,查询的内容2  from  表名 where  过滤条件 ;
    
    • 关系表达式
      可以用关系运算符(如>,<,!=...)将某个属性满足的关系写出来,注意属性与值要有可比较性。例:查询test表中colum1的值大于5的所有的属colum3:
    Select  colum3  from  test  where  colum1>5;
    

    当有多个条件时,可以用关键字 and 或or将条件进行连接。
    例查询test表中colum1的值大于20或小于5的的所有的属性colum3:

    Select  colum3  from  test  where  colum1>20  or  colum1 <5;
    
    • between and 关键字
      注意between 后的属性值要小于and后的属性值,且取值范围为一个闭区间。
    • 字符匹配
      %表示匹配0个或1 个或多个字符;
      _表示匹配一个字符。

    8.1 聚合函数

    1.求和函数 :SUM( )
    2.求平均值函数:AVG( )
    3.算数量函数:COUNT( )
    4.求最大值函数:MAX( )
    5.求最小值函数:MIN( )

    8.2 子句

    1.group by
    用于结合合计函数,根据一个或多个列对结果进行分组。

    select sclass,count(sno) from student group by sclass;
    //查询出每个班级的总人数
    

    2.having
    对数据进行筛选,条件中经常包含聚合函数

    select sclass,count(sno) from student group by sclass having count(sno)>5 ;
    //查询出每个班级的总人数超过5的班级和人数
    

    3.order by
    按照升序对记录进行排序。
    desc 降序
    asc 如果这个条件不满足,就用另一个条件。例如:

    select * from student order by height desc weight asc;
    //按照升高对其进行降序排列,如果身高相等就按照体重进行排列
    

    4.limit
    强制 select 语句返回指定的记录数

    select * from student order by  son  limit 6;
    //查询出学号排在最前 6 位的学生的所有信息
    

    9.创建视图

    CREATE VIEW 视图名 AS
    SELECT 创建视图的属性
    from 创建视图所需的表
    where 表联系的条件;
    

    例如:

    创建一个视图,视图名为v_employee,视图包含员工号,姓名,住址与工资

    CREATE VIEW v_employee AS
    SELECT work.empno,name,address,wage
    from employee,work
    where employee.empno=work.empno;
    
    

    相关文章

      网友评论

          本文标题:数据库

          本文链接:https://www.haomeiwen.com/subject/gqrwnftx.html