Code前端首页关于Code前端联系我们

mysql数据库树,mysql数据库树三权分立

terry 2年前 (2023-09-30) 阅读数 46 #Mysql
文章标签 Mysql

本文内容列表:

  • 1.MySQL数据库基础+数据库基本操作?
  • 2、MySQL数据库的三个基本优化规则是什么?
  • 3、Mysql数据库的三种存储引擎有什么区别?

MySQL 数据库基础 + 数据库基本操作?

必要的信息将以链接的形式提供给有需要的同学。

我使用的Mysql版本是:Mysql-5.5.45-win64.msi 密码是:26zw

图形工具Navicat(早期不推荐,手动输入即可):Navicat 密码:c7fs

开启我的MySQL之旅2016.12.04开始

--WH

1.数据库安装

这个教程这里就不详细说了,因为这里安装教程太多了。我给你的MySQL按照这个安装指南(MySQL安装指南)就可以完全安装了。

安装完mysql后,如果需要使用Windows命令窗口(即cmd)操作mysql,需要配置环境变量,在安装的mysql下找到bin,将目录添加到环境变量中小路。就是这样。检查是否成功的方法是在cmd命令窗口中输入mysql。会出现一大段英文,就说明成功了。否则会失败。如果不会的话就去百度搜索一下教程。 ? uAccount  -p 密码

输入密文:mysql -uroot -p 按回车键,系统会要求您输入密码(Enter pssword:)。此时,您输入的密码将显示为***。

3。查看mysql中的所有数据库(一般都是大写字母用于固定单词的命令,你要习惯这个,读多了写多了就认得)

前四个数据库都包含在mysql中是的,有必要。

显示数据库;

4。创建名为 test_1 的数据库

格式:CREATE DATABASE 数据库名称

CREATE DATABASE test_1;

5。删除名为test_1的数据库 数据库

格式:DROP DATABASE 数据库名称

DROP DATABASE test_1;

总结:学习了对数据库的三个操作,1.显示所有数据库 3.e 创建数据库❙2. 3、数据表的基本操作

数据表、数据库和MySQL的关系

MySQL存储很多数据库,一个数据库可以存储很多表。

数据表的添加(创建表)删除(删除表)修改(更改表字段)查询(查询表结构)。注意:这里的操作对象是表。对表的操作是对表的结构和对表中字段的操作(字段和记录一定要分清楚)

前提:表在数据库下面,所以首先要确认是哪一个表您将使用的数据库。

使用测试_1;

1。创建数据表

格式:CREATE TABLE数据表名称(

 字段名称1数据类型[列级约束],

 字段名称2数据类型[列级约束],

 字段名称3数据类型[列级限制]

 ); 

注:格式不一定要这样写,完全可以写在一行上。但这样写是非常难以观察的。我写这篇文章只是为了让它更清楚。 ?列代表垂直,行代表水平  

3。稍后将讨论限制

1.1。无限制创建学生表

 CREATE TABLE Student( idINT(11), nameVARCHAR(12),ageINT (11)  );

注意:SHOW TABLES 询问数据库下的所有表。

1.2。创建约束学生表

 六大约束:主键约束、外键约束、非空约束、唯一约束、标准约束、自增

1.2.1:主键约束 键:唯一(唯一)并且不能为空(非空))。通俗地说,当向表中添加记录时,该字段下的数据不能重复,也不能为空。例如,上面创建的表。例如,如果 ID 字段使用主键约束,则向表中添加两条记录。那么ID不能相同,不能为空。通常,每个表都有一个唯一标识该记录的主键字段。如果以后需要查找该记录,也可以用这个主键来验证该记录。由于主键是唯一且非空的,表中每条记录的主键都是不同的,因此根据主键可以找到对应的记录。而不是多个重复记录。如果没有主键,表中就会出现很多重复记录,会浪费存储空间,查询时会消耗更多资源。

一般情况下,受主键约束的字段通常称为表的主键

单字段主键约束

两种方法都可以 TABLE Student(CREATE Student idINT(11)主键,idINT(11),

nameVARCHAR(12),nameVARCHAR(12),

ageINT(11)ageINT(11),

);

);♓ID));

多字段主键约束(复合主键)

id和name为城市主键,表示以后插入的记录中,id和name不能同时相同,例如,可以是这样的。一条记录是id=1,name=yyy,另一条记录是:id=1,name=zzz。这可以。这并不是说你所理解的两个领域之间的差异不能相同。

创建表学生(创建表学生(

idINT(11) PRIMARY KEY,idINT(11),

nameVARCHAR(12) PRIMARY KEY,AR(2name),(2ageINT ( 11 ) ageINT(11),

);PRIMARY KEY(id,name) );

1.2.2:外键限制

什么是外键,通过一个例子就清楚了两张表,一张是emp(员工)表,一张是dept(部门)表,一个员工属于一个部门,那么如何通过员工来判断他是哪个部门呢?那么就可以在员工表中添加一个字段,可以代表员工所在的部门,然后这个字段只能是仓库部门的主键(因为主键是唯一的,所以肯定可以代表是哪个部门,然后代表员工所在的部门(部门,如果是部门名的话,有些部门名可以重名,无法区分。),这样的字段就满足了外键的特点,你可以使用外键约束,使得字段只能存储另一个字段。表的主键。如果不受外键约束,该字段无法保证存储的值将是另一个表的主键值。

外键约束的特点:

1。外键约束可以描述任意字段(包括主键),可以为空,一个表中可以有多个外键。但外键字段中的值必须是另一个表中的主键。

2。与外键关联的两个表之间的关系可以称为父子表或主从表。子表(从表)是带有外键字段的表,父表(主表)是外键字段指向的表。

3。子表中被外键约束修改的字段必须与父表中的主键字段类型相同。

注意:如果一个表有一个被外键修改的字段,则称该表有外键(意思是“有一个外键”,而不是“是一个外键”),并且外键约束在表中会被赋予Select一个名称,所以当我们常说这个表是否有外键时,并不是指被外键约束修改的字段名,而是指这个表是否有外键约束。也就是说,不能说这个表的外键是xxx(表中外键约束修改的字段名)。这种说法是错误的,但大多数人都已经习惯了。虽然影响不大,但是很多时候需要理解一些东西的时候,就会产生一些问题。

格式:RESTRICTION 外键名 FOREIGN KEY(受外键限制的字段名) REFERENCES 主表名(主键字段)

英文解释:RESTRICTION:限制 REFERENCES:引用 ❀A♷❀表

id INT(11),

名称 VARCHAR(22),

位置 VARCHAR(50),

主键(id)

B (

id INT(11),

名称 VARCHAR(22) NOT NULL,

deptId INT(11),

主键(id),d) 引用表A (id)

);

 说明:tableB中有一个名为tableA_tableB_1的外键,关联两个表tableA和tableB。外键约束修改的字段是tableB中的deptId,主键字段是tableA中的。 id 

1.2.3:非空约束

NOT NULL。该约束修改的字段不能为空。该约束包含在主键约束

CREATE TABLE tableA

(

id INT(11),

name VARCHAR(22) NOT NULL,location),

  • PRIMARY KEY(id )

    );

    1.2.4: 唯一性约束

    UNIQUE 被唯一性约束修改的字段意味着该字段中的值是唯一的,不能具有相同的值。简单来说,就像插入两条记录。两条记录中该字段的值不能相同。的。

     创建表表A

    (

    id INT(11),

    名称VARCHAR(22)唯一,

    位置VARCHAR♷) ) ;

    会的假设插入的记录中每条记录的名称值不能相同。

    1.2.5:默认约束

    默认指定此列的默认值。例如,如果男生较多,则可以将性别设置为默认的男性。如果插入一行记录时没有填写性别,则默认值为 Addmale  

    CREATE TABLE table

    (

    id INT(11) PRIMARY KEY,❀ ) NOT NULL,

    deptId INT(11) 默认 1111,

    工资 FLOAT

    );

    1.2.6:自动增加IN。一张表中只有一个字段可以使用AUTO_INCRMENT,并且使用该限制的字段只能是整数类型(所有整数类型TINYINT、SMALLIN、INT、BIGINT),默认值为1,即从1开始递增。一般是用于主键,并且自动递增,这样每个主键的值都不同,我们不需要自己管理,所以主键可以自己自动生成

    CREATE TABLE table (id INT( 11)主键自动递增,名称 VARCHAR (22) NOT NULL);

    2。查询表结构

    2.1。参见表的基本结构语句

    格式1:DESCRIBE表名/DESC表名。这两个的功能是一样的,单词的缩写描述

    DESCRIBE 学生;

    2.2。看创建表的语句  

     格式:SHOW CREATE TABLE tablename

     SHOW CREATE TABLE Student;

    这样显示的格式很差,无法读取。删除,这样我就有了如下语句

    格式:SHOW CREATE TABLE tablename\G

    SHOW CREATE TABLE Student\G;

    3。修改数据表

    修改数据表包括:修改表中的字段添加、删除、修改。这里用到的关键字是ALTER

    3.1,修改表名

    格式:ALTER TABLE旧表名RENAME [TO]新表名;

    将学生表名称更改为student1(更改后,在更改回来)

    CHANGE TABLE Student CHANGE NAME TO Student1;

    3.2.更改表中字段名称

    格式:CHANGE TABLE 表名 CHANGE 旧字段名称 新字段名称 新数据类型

    更改学生表中字段名称 姓名字段名称更改为用户名

    CHANGE TABLE学生更改姓名用户名VARCHAR(30);

    3.3。更改表中的数据类型

    格式:ALTER TABLE 表名 MODIFY 字段名数据类型  

    ALTER TABLE Student MODIFY username VARCHAR(20);

    说明:只能更改字段名的数据类型,但是原理和上面的改变是一样的。这里还有更改字段名称的过程,但是更改后的字段名称和修改之前的字段名称是相同的,但是数据类型不同。

    3.4。改变字段的排列位置

     方法一:ALTER TABLE表名MODIFY字段1数据类型FIRST|AFTER字段2

     说明:将字段1的位置放在前面,或者放在指定字段后面2

     ALTER TABLE Student MODIFY username VARCHAR(20) BY Age;

    方法二:ALTER tablename ALTER field 1 field 2 datatype FIRST|AFTER field 3 

    说明:其实是一样的,会被field 2覆盖字段 1,然后排序

    CHANGE TABLE 学生 CHANGE 用户名 username VARCHAR(20) BY 年龄;

    总结

    CHANGE 和 MODIFY 有什么区别?

    原理是一样的。 MODIFY 只能更改数据类型,而 CHANGE 可以更改数据类型和字段名称。换句话说,MODIFY是CHANGE的更具体的操作。您可能会觉得使用 CHANGE 只更改一种数据类型不太舒服,因此我们添加了一个可以使用 MODIFY 关键字直接更改数据类型的函数。

    3.5。添加字段

    格式:ALTER TABLE tablename ADD new fieldname datatype [constraints][FIRST|AFTER已有表名]

    说明:在特定位置添加新字段,如果不指定位置则默认为最后一个。

    ALTER TABLE学生ADD性别VARCHAR(11);

    3.6,删除字段

    格式:ALTER TABLE表名DROP字段名;

    UP表学生,

    拥有键约束

    格式: ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名称

    注意:外键约束名称不是指外键约束修改的字段名称。请记住,这是我们正在创建的外键约束。关系期间所起的名字。 ?如果再深入一点就不清楚了,所以留到以后再讲。

    4。删除表

    4.1。删除不相关的表

    格式:DROP TABLE 表名;

    ALTER TABLE 学生;

    4.2。删除与其他表链接的主表

    这是比较重要的一点。有外键关系的两个表中,如果删除主表,则不会删除,还会报错。因为有一张桌子取决于他。那我们该怎么办呢?针对这种情况一共有两种方法

    1。先删除子表,再删除父表。这样就达到了删除父表的目的,但是子表也会被删除

    2。先解除外键关系,然后删除父表就可以达到目的,保留子表,而只删除我们不需要的父表。在3.7中我们解释了如何删除外键关系。

    MySQL数据库的三个基本优化规则是什么?

    (1)系统服务优化,增加MySQL的key_buffer、cache_buffer、query_cache等容量。

    (2)为所有经常查询的字段添加适当的索引❀s、在SQL语句中、在操作中Group、Join等语句

    Mysql数据库的三种存储引擎有什么区别?

    Mysql数据库中三种存储引擎(MyISAM、MEMORY和InnoDB)的区别:

    1. Myisam是Mysql的标准存储引擎。 create创建新表时,如果没有指定新表的存储引擎,则默认使用Myisam。 。 MEMORY 和 InnoDB 不是标准存储引擎。

    2。 InnoDB 存储引擎通过提交、回滚和崩溃恢复功能提供事务安全性。但相比Myisam的存储引擎,InnoDB的写处理效率较低,并且会占用更多的磁盘空间来保留数据和索引。

    Mysql数据库中三种存储(MyISAM、MEMORY和InnoDB)的区别对比:

    1。 MyISAM

    不支持事务,也不支持外键,特别是访问速度快,而且没有事务完整性要求。或者基于SELECT和INSERT的应用程序基本上都可以使用这个引擎来创建表。

    数据文件和索引文件可以放在不同的目录下,均匀分配IO,获得更高的速度。要指定数据文件和索引文件的路径,必须在创建表时通过DATA DIRECTORY和INDEX DIRECTORY语句指定。文件路径必须使用绝对路径。

    2。 MEMORY

    内存使用存储在内存中的内容来创建表。每个MEMORY表实际上对应一个磁盘文件,格式为.frm。 MEMORY类型表访问速度非常快,因为数据位于内存中,并且默认使用HASH索引。但是,当服务器关闭时,表中的数据将丢失,但表将继续存在。

    内存数据表默认使用哈希索引。使用该索引进行“相等比较”速度非常快,但“范围比较”则慢得多。因此,哈希索引值适合在“=”和“=”运算符中使用,但不适合在“”或“”运算符中使用,也不适合在order by子句中使用。如果您确实想在运算符之间使用“”或“”,则可以使用 btree 索引来加快速度。

    MEMORY数据表中存储的数据行采用定长格式,从而加快处理速度。这意味着不能使用可变长度数据类型(例如 BLOB 和 TEXT)。 VARCHAR是一种变长类型,但由于MySQL内部将其视为定长CHAR类型,因此可以使用。

    3。 InnoDB

    InnoDB 存储引擎通过提交、回滚和崩溃恢复功能提供事务安全性。但相比MyISAM的存储引擎,InnoDB的写处理效率较低,并且占用更多的磁盘空间来保留数据和索引。

    (1)自动增长列:

    InnoDB表中的自动增长列可以手动插入,但如果插入的值为空或0,则实际插入的值为自动增长后的值。可以通过“ALTER TABLE...AUTO_INCRMENT=n;”强制设置自增值的初始值陈述。默认值为1,但强制默认值存储在内存中,数据库重启后会丢失。

    可以使用LAST_INSERT_ID()查询当前线程上次插入记录所使用的值。如果同时插入多条记录,则返回第一条记录使用的自增值。对于InnoDB表,自动增长列必须是索引。如果是复合索引,它也必须是复合索引中的第一列。然而,对于MyISAM表,自动增长列可以是复合索引中的其他列。这样,插入记录后,自动增长列在对复合索引中的先前列进行排序后会递增。的。

    (2)外键的限制:

    MySQL支持外键的存储引擎只有InnoDB。创建外键时,父表必须有对应的索引,创建外键时会自动创建子表。对应的索引。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门