数据库基础知识

三大范式

  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: 16384Max_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:\ProgramData\MySQL\MySQL Server 5.7\my.ini

MySQL系统帮助

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

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


__EOF__

本文作者LeTuDou
本文链接https://www.cnblogs.com/LeTuDou/p/9993785.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   老张嘞  阅读(164)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示