ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

7.27学习日记

2021-07-27 19:32:48  阅读:156  来源: 互联网

标签:insert 7.27 日记 学习 into values id table create


昨天内容回顾

数据库分类

数据库的本质是一个C/S的架构软件,那就必须有服务端和客户端

1. 关系型数据库
固定的表结构, 可以建立表与表之间的关系
常见数据库:MySQL(开源的, 硬盘), Oracle(商业版), sqllie,db2, SQLserver,access
2. 非关系型数据库
没有固定的表结构,以k:v键值对的形式存储
常见非关系型数据库:redis(缓存, 内存), memcache, mongodb
   
   热数据:经常被访问的
   冷数据:不经常用

下载与安装

"""
1.官网下载安装包

2.解压zip文件
bin
mysql.exe 自带的客户端
mysqld.exe 服务端  
一定要先启动服务端,客户端去连接
data
文件夹,一个文件夹代表一个库
一个数据表有几个文件?
文件的数量取决于存储引擎
3.加入环境变量
把bin目录的路径加入到环境变量中,
4. 制作系统服务
添加服务:mysqld --install
删除服务:mysqld --remove
启动服务:
进入服务的三种方式:
1. 在任务栏右键
2. windows + r => services.msc
3. 在我的电脑 => 右键 => 管理
1. 鼠标点点点
2. net start mysql
关闭服务:
net stop mysql

"""

重要概念


数据库的组成部分:
库   =》文件夹
   表 =>  文件
   记录 =》 文件里的数据
   字段 => 表头

配置文件

文件名:my-default.ini  =>  my.ini

\s;  查看mysql的基本信息

强调:只要改变了配置文件,都要重启服务端

库的增删改查

注意: 每一个sql语句,都要以;结尾

1. 查看所有库:
show databases;
2. 创建库:
create database  库名 charset='utf-8';
3. 删库:
drop database 库名;

表的增删改查

1. 查看所有表:
show tables;
2. 先切库:
use 库名;
  如果不use, 指定库名,  mysql.user
3.  创建表:
create table t1 (id int, name varchar(4), age int);
4. 查看表结构
desc t1;
   show create table t1;
5.  修改:
alter table t1 rename userinfo;
   alter table t1 modify name varchar(16);
6.  删表:
drop table t1;
   
面试题:
如何给已经存有100w的数据,增加一个字段?
   
上线流程:
1. 准备你的sql语句
   2. 把你的代码提交到git仓库中
   3. 注意:上线之前一定要先上表,在上代码。

记录的增删改查

1. 查询数据
select * from t1;
   select id, name, age from t1; (推荐)
2. 增加数据
insert into t1 (id, name, age) values (1, 'egon', 18);
   insert into t1 (id, name, age) values (2, 'ly', 19), (3, 'jason', 20);

3.修改数据
update `t1` set `name`='ly' where id=1;
4. 删除数据
delete from t1 where id=1;

今日内容概要

  • 存储引擎

  • 数据类型

    整型:
    tinyint   smallint  int  bigint
    浮点型
    float  double  decimal
    字符串
    char  varchar
    日期类型
    datetime   年月日  时分秒
       time 时分秒
       date 年月日
       year 年份

    枚举和集合
      enum  set
  • 创建表的完整语句

  • 约束条件

    在已有条件的基础上在做限制

    zerofill
    unsigned
    not null
    primary key
    auto_increment
    foreign_key
    unique
    default

    存储引擎

    # 就是存储数据的方式

    # 如何查看存储引擎? 都有哪些存储引擎?
    show engines;
       
    MyISAM:
    mysql5.5版本及之前的版本默认引擎
       查询速度比InnoDB快, 安全性低
    # 不支持事务
       # 表级锁
    InnoDB
    mysql5.6及之后的版本默认引擎
       查询速度比MyISAM慢, 安全性高
       
       # 功能:
      1. 支持事务
           2. 行级锁
           3. 外键
    MEMORY => 内存
    # 数据是在内存中
       
       
    面试题:
    MyISAM和InnoDB引擎的区别?
      1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;

    2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;

    3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

    4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

    5. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;

    # 特点
    create table t2 (id int) engine='MyISAM';
       create table t3 (id int) engine='InnoDB';
       create table t4 (id int) engine='MEMORY';
       
    MyISAM(三个文件)
    .frm =>   表结构
      .MYD =>   表数据
      .MYI =>   索引(目录)优点:查询速度快

    InnoDB(两个文件)
    .frm => 表结构
      .ibd => 表数据和索引

    MEMORY(一个文件)
    .frm => 表结构

    数据类型之整型

    tinyint 1字节 0~255 -128~127
    smallint 2字节 0~65535 -32768~32767
    int 4字节 0~4294967295 -2147483648~2147483647
    bigint 8字节 0~18446744073709551615 -9223372036854775808~9223372036854775807
    # 他们之间的区别就是存储数据的范围不一样

    # 验证整型默认是否带符号
    create table t6 (id tinyint);
       
       insert into t5 values(-129), (256);
    # 结论:所有的整型默认都是带符号的。

    数据类型之浮点型

    float 
    # float(8, 2) 最大999999.99 一共8位,小数2位
       float(255,30)
           最大总共255位,小数30位
      精确7位
    double
    double(255,30)
    最大总共255位,小数30位
           精确15位
    decimal
    decimal(65,30)
    最大总共65位,小数30位
      精确22位
       
    create table t6 (id float(255,30));
    create table t7 (id double(255,30));
    create table t8 (id decimal(60,30));


    insert into t6 values(1.11111111111111111111111111);
    insert into t7 values(1.11111111111111111111111111);
    insert into t8 values(1.11111111111111111111111111);

    # 精确度不一样
    decimal(22) > double(15) > float(7)


    设计表注意:
    1、表结构中的数据类型
       2、该表中上线之后可能会产生多少数据量?

    数据类型之字符串


    # 两种字符串括号中的数字必须写, 代表存储字符串的长度
    char(4)
    存储4位,不够的空格补齐4位,超过4位的报错
    在存入的时候补齐空格,取出的时候自动去掉
    # 优点
    查询速度快, 整存整取
    # 缺点
    浪费空间
    varchar(4)
    存储4位,有几位存几位,超过的报错

    # 优点:
    节省空间
    # 缺点
    查询速度比char慢

       char(4)  varchar(4)
       
       
      pack(2)   => 1   pack(10) => 1

      unpack(1) => 2   unpack(1) => 10
       
    为了确保数据正确,添加报头
    1bytes kevin 1bytes egon 1bytes jasonlytom
       

    # 验证
    create table t10 (id int, name char(4));
    create table t9 (id int, name varchar(4));

    insert into t9 values(1, 'kevin');
    select id,char_length(name) from t9;
    insert into t10 values(1, 'kevin');
    select id,char_length(name) from t10;

    数据类型之日期类型

    datetime 年-月-日 时-分-秒
    date 年-月-日
    time 时-分-秒
    year 年

    #
    create table t12 (id int,  r1_time datetime, r2_time date, r3_time time, r4_time year);

    #
    insert into t12 values (1, '2021-11-11 11:11:11','2021-11-11','11:11:11','2021');

    数据类型之枚举

    # 枚举  多选一
    # 必须写在选项中的
    create table t13 (
    id int,
       gender enum('male', 'female', 'other')
    )

    #
    insert into t13 values (1, 'egon'); # 错误
    insert into t13 values (1, 'male');

    数据类型之集合类型

    # 集合 多选多
    create table t14 (
      id int,
           hobby set('read', 'music', 'football', 'lm') )
       
    # 可以选一个,也可以选多个
    insert into t14 values(1, 'egon'); # 错误
    insert into t14 values(1, 'read');
    insert into t14 values(1, 'read,music');
    insert into t14 values(1, 'read,egon'); # 错误

    创建表的完整语句

    create table 表名 (
    字段名  数据类型(长度) 约束条件1 约束条件2 约束条件3,
    字段名  数据类型(长度) 约束条件1 约束条件2 约束条件3,
       字段名  数据类型(长度) 约束条件1 约束条件2 约束条件3,
       字段名  数据类型(长度) 约束条件1 约束条件2 约束条件3
    )

    # 注意:
    1. 表中字段名和数据类型是必填项, 约束条件是可选的
       2. 约束条件可以有多个,依次往下写
       3. SQL语句的最后一个不能加逗号(,)
  •  

标签:insert,7.27,日记,学习,into,values,id,table,create
来源: https://www.cnblogs.com/hao613/p/15067558.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有