自学前端总结--Mysql篇--2

109 阅读1分钟

「时光不负,创作不停,本文正在参加2021年终总结征文大赛

常用的管理的命令

1.显示当前所有的数据库

show databases

2.进入指定的数据库

use 数据库名

3.显示当前数据库下所有的表

show tables

4.查询表内行数据

describe 表名; #下面这条指令是缩写,与上面这条指令是一样的
desc 表名;#具体显示详情如下图所示

image.png

SQL命令

结构化查询语言,用于操作关系型数据库服务器,主要是数据进行增删改查。

SQL命令的执行方式

  1. 交互模式

    1. 客户端输入一行,点击回车,服务器端会执行一行,适用于临时性的查看数据。
  2. 脚本模式

    1. 客户端把要执行的命令写在一个脚本文件中,然后一次性的提交给服务器执行,适用于批量的操作数据。

    2. 建立连接之前:mysql -uroot<拖拽脚本文件

    3. 若有一行代码出问题,后面代码不执行。

    4. #语句 单行注释

    5. /* */ 多行注释

    6. 注释的代码服务器不执行的。

查询数据库详情

SHOW CREATE DATABASE 数据库名;

创建一个数据库

create database 数据库名;

删除数据库

DROP DATABASE 数据库名;
DROP DATABASE IF EXISTS 数据库名; #一般来说,采用脚本模式尽量使用该语句,防止数据库后期修改时报错,先删除表,在重新创建表。

创建表

CREATE TABLE 表名(
     值1 类型,
     值2 类型,
     值3 类型
)charset utf8;

插入数据

INSERT INTO 表名 VALUES(值1,值2,值3);

  1. MySQL中文乱码产生的原因

    1. mysql默认使用Latin-1.
  2. 解决MySQL乱码问题

    1. 脚本文件格式为utf8.
    2. 客户端连接服务器编码为utf8.
    3. 服务器创建数据库使用的存储编码为utf8.
  3. 列类型

    1. 创建表的时候,指定的类所能存储的数据类型。

      1. 数值型

        1. tinyint 微整型 占1个字节,范围-128~127

          TB GB MB KB byte bit

          1byte=8bit

        2. smallint 小整型 占2个字节,范围-32768~32767

        3. int 整型 占4个字节,范围-2147483648~2147483647

        4. bigint 大整型 占8个字节

        5. float 单精度浮点型 4个字节 值越大精度越低

        6. double 双精度浮点型 8个字节

        7. decimal(M,D)  定点小数,小数点不会改变,M表示有效位数,D代表小数点后的有效位数

        8. boolean/bool 布尔型,用于存储只有两个值的数据,分别是true和false,在使用的时候会自动转换成tinyint型。

        9. 数值型引号可以省略,别的都需要加引号。

      2. 日期时间型

        1. date 日期型 '2021-09-02'
        2. time 时间型 '08:22:10'
        3. datetime 日期时间型 '2021-09-02 08:22:10'
      3. 字符串型

        1. varchar(M)  变长字符串 几乎不会产生空间浪费,数据操作速度较慢 max(M)=65535
        2. char(M)  定长字符串 可能产生空间浪费,数据操作速度相对快,存储定长的数据。max(M)=255
        3. text(M)  大型变长字符串 max(M)=2G
  4. 列约束

    1. MySQL可以对要插入的数据进行验证,只有符合条件的才允许插入
    create table 表名(
    	属性 列类型 列约束
    );
    
    1. 主键约束

      1. primary key
      2. 声明了主键约束的列上不允许出现重复的值,也不允许为null。
      3. 会自动进行排序
      4. 一个表只能有一个主键约束
      5. null🈳,表示一个暂时无法确定的值,null是关键字,使用的时候不能加引号
    2. 非空约束

      1. not null

      2. 声明了非空约束的列上禁止插入null

      3. 列约束

    3. 唯一约束

      1. unique
      2. 声明了唯一约束的列不可以出现重复的值,可以重复定义
    4. 默认值约束

      1. 可以使用的default关键字设置默认值

        1. 通过default关键字调用

          insert into laptop values(70,defult);
          
        2. 没有出现的列自动生成默认值

          insert into(fid) laptop values(70);
          
    5. 检查约束

      1. check
      2. 也称为自定义约束,用户可以根据实际需求添加约束条件
      3. mysql不支持检查约束,会严重的影响插入速度,后期可以使用js来实现
      create table student(
      	id int check(id>0 and id<100)
      );
      
    6. 外键约束

      1. 外键列出现的值必须在另一个表中的主键列上出现过的值

        FOREIGN **KEY(familyid)** REFERENCES **family(fid)**
        

        Untitled

      2. 外键列和主键列的列类型要保持一致。

  5. 自增列

    1. auto_increment
    2. 自动增长,声明自增列,只需要赋值为null,就会获取最大值然后加1插入。
    3. 注意事项:必须是添加在主键形式的整数列,允许手动添加
  6. 简单查询

    1. 查询特定的列

      1. select 列名1,列名2... from 表名;
    2. 查询所有的列

      1. select * from 表名;
    3. 给列起别名

      1. select eid as 编号,ename as 姓名 from emp;
      2. as可以省略的
    4. 显示不同的记录

      1. select distinct sex from emp;
    5. 查询是执行计算

      1. select 1+2+3+4;
    6. 查询的结构排序

      1. select * from dept order by did asc;升序排列ascendant
      2. select * from dept order by did desc;降序排列descendant
      3. 默认是按升序排列
    7. 条件查询

      1. select * from emp where eid=5;
      2. 运算符 < > ≤ ≥ ≠
      3. select * from emp where deptid is null;
      4. select * from emp where deptid is not null;
      5. select * from emp where deptid!='null';这个为什么可以
      6. and/&& 并且;都满足
      7. or / || 或者;满足其中之一即可
      8. deptid in(值1,值2);
      9. deptid not in(值1,值2);
    8. 模糊条件查询

      1. select * from emp where ename like '%a%';

        1. %  匹配任意个字符
        2. _  匹配任意1个字符

如果有什么不对的地方欢迎指出!!!!