• 数据库基础知识


    三大范式

    1. 第一范式的目标是确保每列的原子性,每列都是不可再分的最小数据单元。
    2. 第二范式要求每个表只描述一件事情
    3. 第三范式要求表中的各列必须和主键直接相关,不能间接相关

    MySQL的运行机制

    MySQL运行机制

    基础SQL语句

    使用数据前必须先选择该数据库!

    mysql> create database myblog; 创建数据库
    mysql> show databases; 查看数据库列表
    mysql> use myblog; 选择数据库(数据库不存在,报错)
    mysql> drop database myblog; 删除数据库
    mysql> show tables;查看当前数据库中的表
    

    结构化查询语言

    1. DML(数据库操作语言):用来操作数据库
    2. 所包含的数据。insert update delete
    3. DDL(数据定义语言):用于创建和删除数据库对象操作。create drop alter
    4. DQL(数据查询语言):用来对数据库中的数据进行查询。select
    5. DCL(数据库控制语言):用来控制数据库组件的存取许可、存取权限等。grant commit rollback

    MySql数据类型

    1. 数值类型

    数值类型

    1. 字符串、日期类型

    字符串、日期类型

    补充:

    unsigned属性 标识为无符号数

    zerofill 宽度(位数)不足以0填充

    若某数值字段指定了zerofill属性将自动添加unsigned属性

    若日期字段默认值为当前日期,一般设置为timestamp类型

    mysql> use myblog;使用myblog数据库
    mysql> create table `tb_type`(
    	->	`sid` int(4) zerofill,
    	->`id` int(4) unsigned
    	-> );  创建表并指定列
    mysql> insert into `tb_type` value(12,123),(123222,2),(66,6666); 插入测试数据
    测试结果:
    +--------+------+
    | sid    | id   |
    +--------+------+
    |   0012 |  123 |
    | 123222 |    2 |
    |   0066 | 6666 |
    +--------+------+
    创建表的语法
    create table [if not exists] 表名(
    	字段一 数据类型 [字段属性|约束][索引][注释],
    	······
        字段n 数据类型 [字段属性|约束][索引][注释]
    )[表类型][表字符集][注释];
    注:
    多字段使用逗号分隔
    保留字用撇号括起来
    单行注释 #注释内容
    多行注释 /*内容*/
    #这是被单行注释注释掉的内容
    /*
    这是
    被多行注释
    注释掉的文本
    内容
    */
    

    字段的约束及属性

    名称 关键字 说明
    非空约束 not null 字段不允许为空
    默认约束 default 赋予某字段默认值
    唯一约束 unique key(UK) 设置字段的值是唯一的允许为空,但只能有一个空值
    主键约束 primary key(PK) 设置该字段为表的主键 可唯一标识该表记录
    外键约束 foreign key(FK) 用于在两表之间建立关系,需指定引用主表的那一字段
    自动增长 auto_increment 设置该列为自增字段 默认每条自增1 通常用于设置主键
    # 主键
    mysql> create table student(
    	->	`studentNo` int(4) primary key
    	-> );
    结果:
    mysql> desc student;#查看表结构
    +-----------+--------+------+-----+---------+-------+
    | Field     | Type   | Null | Key | Default | Extra |
    +-----------+--------+------+-----+---------+-------+
    | studentNo | int(4) | NO   | PRI | NULL    |       |
    +-----------+--------+------+-----+---------+-------+
    #注释
    #创建表时写注释
    mysql> create table test(
    	->	`id` int(11) unsigned comment '编号'
    	->)comment='测试表';
    #修改表的注释
    mysql> alter table test comment '修改后的注释';
    #修改字段的注释 字段名和字段类型照写就行
    mysql> alert table test modify column id int comment '修改后的内容';
    mysql> alter table test modify column name varchar(255) comment '修改';
    #设置字符集编码
    mysql> create table [if not exists] 表名(
    	->	#省略代码
    	->) charset=字符集名;
    

    MySQL使用SQL语句查询数据库所有表注释 已有表字段注释

    1. 要查询数据库myblog下所有表名以及表注释

      /* 查询数据库 ‘mammothcode’ 所有表注释 */
      mysql> SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema='myblog';
      

    场景一

    1. 要查询表字段的注释
    /* 查询数据库 ‘myblog’ 下表 ‘test’ 所有字段注释 */
    mysql> SELECT COLUMN_NAME,column_comment FROM INFORMATION_SCHEMA.Columns WHERE table_name='test' AND table_schema='myblog';
    

    场景二

    1. 一次性查询数据库 "myblog" 下表注释以及对应表字段注释
    mysql> SELECT t.TABLE_NAME,t.TABLE_COMMENT,c.COLUMN_NAME,c.COLUMN_TYPE,c.COLUMN_COMMENT FROM information_schema.TABLES t,INFORMATION_SCHEMA.Columns c WHERE c.TABLE_NAME=t.TABLE_NAME AND t.`TABLE_SCHEMA`='myblog';
    

    场景三

    1. 查看表注释 在生成的sql语句中查看

      mysql> show create table test;
      

    场景四

    1. 查看字段注释 show

      mysql> show full columns from test;
      

    场景五

    查看表

    #查看表是否存在
    mysql> use myblog;
    mysql> show tables;
    #查看表定义
    describe 表名;或desc 表名;
    

    删除表

    drop table [if exists] 表名;
    #删除表之前 先使用if exists语句验证表是否存在
    

    MySQL的存储引擎

    类型

    MyISAM、InnoDB、Memory等9种。

    MyISAM与InnoDB类型的主要区别
    名称 InnoDB MyISAM
    事务处理 支持 不支持
    数据行锁定 支持 不支持
    外键约束 支持 不支持
    全文索引 不支持 支持
    表空间大小 较大 约2倍 较小
    适用场合
    1. 使用InnoDB:多删除、更新操作,安全性高,事务处理及并发控制
    2. 使用MyISAM:不需事务 空间小 以查询访问为主
    查看表存储引擎

    方法一:show create table test;

    方法二:

    mysql> show table status from myblog where name='test' G;
    #结果
    *************************** 1. row ***************************
               Name: test
             Engine: InnoDB
            Version: 10
         Row_format: Dynamic
               Rows: 0
     Avg_row_length: 0
        Data_length: 16384
    Max_data_length: 0
       Index_length: 0
          Data_free: 0
     Auto_increment: NULL
        Create_time: 2018-11-21 08:34:17
        Update_time: NULL
         Check_time: NULL
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options:
            Comment: 修改后的表的注释
    1 row in set (0.00 sec)
    

    方法三:

    mysql> select table_catalog
        ->  ,table_schema
        -> ,table_name
        -> ,engine
        -> from information_schema.tables
        -> where table_schema='myblog' and table_name='test';
    +---------------+--------------+------------+--------+
    | table_catalog | table_a | table_name | engine |
    +---------------+--------------+------------+--------+
    | def      
         | myblog       | test       | InnoDB |
    +---------------+--------------+------------+--------+
    1 row in set (0.00 sec)
    

    场景模拟:

    • 场景一:查询整个MySQL实例里面存储引擎为MyISAM的表

      mysql> select table_catalog
          ->       ,table_schema
          ->       ,table_name
          ->       ,engine
          -> from information_schema.tables
          -> where engine='MyISAM';
      

    模拟场景一

    • 场景二:查询myblog数据库里面存储引擎为MyISAM的表

      mysql> select table_catalog
          ->       ,table_schema
          ->       ,table_name
          ->       ,engine
          -> from information_schema.tables
          -> where table_schema='myblog' and engine='InnoDB';
      

    模拟场景二

    修改默认存储引擎

    修改my.ini配置文件

    default-storage-engine= InnoDB

    改为其他存储引擎 重启服务后执行上面语句查看修改结果

    设置表的存储引擎

    create table 表名{
    	#省略代码
    }engine=存储引擎;
    eg:
    mysql>CREATE TABLE `myisam` (
       	-> id  INT(4)
    	->)ENGINE=MyISAM;
    

    数据表存储位置

    MyISAM类型表文件

    • *.frm:表结构定义文件
    • *.MYD:数据文件
    • *.MYI:索引文件

    InnoDB类型表文件

    • *.frm:表结构定义文件
    • ibdata1文件

    存储位置:因操作系统而异,可查my.ini 比如windows 我拿的作为例子

    my.ini位置C:ProgramDataMySQLMySQL Server 5.7my.ini

    MySQL系统帮助

    help 查询内容;
    help contents;
    help Data Types;
    help INT;
    

    友情链接:http://www.jikedaquan.com

  • 相关阅读:
    HDU-2896 病毒侵袭 字符串问题 AC自动机
    HDU-2222 Keywords Search 字符串问题 AC自动机
    pyhton3 logging模块
    pyhton3 sys模块
    pyhton3 hashlib模块
    pyhton3 os模块
    pyhton3 time模块
    pyhton3 random模块
    变种XSS:持久控制
    富文本存储型XSS的模糊测试之道
  • 原文地址:https://www.cnblogs.com/LeTuDou/p/9993785.html
Copyright © 2020-2023  润新知