MySQL | 数据库和数据表的基本操作

目录

一、数据库的基本操作

1.1创建数据库 

1.2删除数据库

1.3MySQL8.0的新特性——系统表全部为InnoDB表

二、数据表的基本操作

2.1创建数据表 

2.1.1创建表的语法形式

2.1.2使用主键约束

2.1.3使用外键约束

2.1.4使用非空约束

2.1.5使用唯一性约束

2.1.6使用默认约束

2.1.7设置表的属性值自动增加

2.2查看表的数据结构

2.2.1查看表基本结构语句DESCRIBE

2.2.2查看表详细结构语句SHOW CREATE TABLE

2.3修改表数据

2.3.1修改表名

2.3.2修改字段的数据类型

2.3.3修改字段名        

2.3.4添加字段

2.3.5删除字段 

2.3.6修改字段的排列位置

2.3.7更改表的存储引擎

2.3.8删除表的外键约束

2.4删除关系表

2.4.1删除没有被关联的表

2.4.2删除被其他表关联的主表


一、数据库的基本操作

1.1创建数据库 

        MySQL中创建数据库的基本SQL语法格式为:

CREATE DATABASE database_name;

        "database_name"为要创建的数据库的名称,该名称不能与已经存在的数据库重名。

        数据库创建好之后,可以使用SHOW CREATE DATABASE声明查看数据库的定义。例如,要查看创建好的数据库test_db的定义。可以输入如下语句:

SHOW CREATE DATABASE test_db\G

        数据库创建成功就会显示数据库的创建信息。

        使用SHOW DATABASES语句可以查看当前所有存在的数据库。

1.2删除数据库

        删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。删除数据库语句与创建数据库的命令相似,MySQL中删除数据库的基本语法格式为:

DROP DATABASE database_name;

         其中,“databanse_name”为要删除的数据库的名称。若指定的数据库不存在,则删除出错。

1.3MySQL8.0的新特性——系统表全部为InnoDB表

        从MySQL8.0开始,系统表全部换成事务型的InnoDB表,默认的MySQL实例不包含任何MyISAM表,除非手动创建MyISAM表。

        在MySQL8.0版本中输入以下代码可以查看系统表类型:

SELECT DISTINCT(ENGINE) FROM information_schema.tables;

二、数据表的基本操作

2.1创建数据表 

          在创建完数据库之后,接下来的工作就是创建数据表。所谓创建数据表,指的是在已经创建好的数据库中建立新表,创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性)约束的过程。

2.1.1创建表的语法形式

        数据表属于数据库,在创建数据表之前,应该使用语句“USE <数据库名>”指定操作的是在哪个数据库中进行,如果没有选择数据库,就会抛出“No database selected”的错误。

        创建数据表的语句为CREATE TABLE,语法规则如下:

CREATE TABLE <表名>
(
    字段名1,数据类型 [列级别约束条件]  [默认值],
    字段名2,数据类型 [列级别约束条件]  [默认值],
    ......
    [表级别约束条件]
);

        使用CREATE TABLE创建表时,必须指定以下信息:

(1)要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。

(2)数据表中的每一列(字段)的名称和数据类型,如果创建多列,就要用都好隔开。

2.1.2使用主键约束

        主键,又称为主码,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键与记录之间时一一对应的。

        主键可以分为两种类型:单字段主键和多字段联合主键。

1.单字段主键

(1)在定义列的同时指定主键,语法规则如下:

字段名 数据类型 PRIMARY KEY [默认值]

(2)在定义完所有列之后指定主键。

[CONSTRAINT <约束名>] PRIMARY KEY [字段名]

2.多字段联合主键

        主键由多个字段联合组成,语法规则如下:

PRIMARY KEY [字段1,字段2,...,字段n]

2.1.3使用外键约束

        外键用来在两个表的数据之间建立连接,可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以是空值,若不为空值,则每一个外键值必须等于另一个表主键的某个值。

        主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。

        从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。

        创建外键的语法规则如下:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [,字段名2,...] REFERENCES <主表名> 主键列1 [,主键列2,...]

        “外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;“字段名”表示子表需要添加外键约束的字段列;“主表名”即被子表外键所以来的表的名称;“主键列”表示主表中定义的主键列,或者列组合。

        子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配。

2.1.4使用非空约束

        非空约束指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

        非空约束的语法规则如下:

字段名 数据类型 not null

2.1.5使用唯一性约束

        唯一性要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或几列不出现重复值。

        唯一性约束的语法规则如下:

(1)在定义完列之后直接指定唯一约束,语法规则如下:

字段名 数据类型 UNIQUE

(2)在定义完所有的列之后指定唯一约束,语法规则如下:

[CONSTRAINT <约束名>] UNIQUE(<字段名>)

        UNIQUE和PRIMARY KEY的区别:一个表中可以有多个字段声明为UNIQUE,但只能有一个PRIMARY KEY声明;声明为PRIMARY KEY的列不允许有空值,但是声明为UNIQUE的字段允许空值(NULL)的存在。

2.1.6使用默认约束

        默认约束指定某列的默认值。如男性同学较多,性别就可以默认为“男”。如果插入一条新记录时没有为这个字段赋值,那么系统会自动为这个字段赋值为“男”。

        默认约束的语法规则如下:

字段名 数据类型 DEFAULT 默认值

2.1.7设置表的属性值自动增加

        在数据库应用中,经常希望在每次插入新纪录时,系统会自动生成字段的主键值。可以通过为表主键添加AUTO_INCREMENT关键字来实现。

        设置表的属性值自动增加的语法规则如下:

字段名 数据类型 AUTO_INCREMENT

2.2查看表的数据结构

        在MySQL中,查看表的数据结构可以使用DESCRIBE和SHOW CREAT TABLE语句。

2.2.1查看表基本结构语句DESCRIBE

        DESCRIBE/DESC语句可以查看表的字段信息,其中包括字段名、字段数据类型、是否为主键、是否有默认值等。语法规则如下:

DESCRIBE 表名;

        或者简写为:

DESC 表名;

        其中,各个字段的含义解释如下:
1.NULL:表示该列是都可以存储NULL值。

2.Key:表示该列是否已编制索引。PRI表示该列时表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次

3.Default:表示该列是否有默认值,有的话指定值是多少。

4.Extra:表示可以获取的给定列有关的附加信息,例如 AUTO_INCREMENT等。

2.2.2查看表详细结构语句SHOW CREATE TABLE

        SHOW CREATE TABLE语句可以用来显示创建表时的CREATE TABLE语句,语法格式如下:

SHOW CREATE TABLE <表名\G>;

        使用SHOW CREATE TABLE语句,不仅可以查看表创建时候的详细语句,还可以查看存储引擎和字符编码。

        如果不加'\G'参数,显示的结果可能非常混乱,加上参数'\G'之后,可使显示结果更加直观,易于查看。 

2.3修改表数据

        MySQL使用ALTER TABLE语句修改表。

2.3.1修改表名

        MySQL是通过ALTER TABLE语句来实现表名的修改的,具体的语法规则如下:

ALTER TABLE <旧表名> RENAME [TO] <新表名>;

        其中,TO为可选参数,使用与否均不影响结果。

        修改表名并不影响表的结构。

2.3.2修改字段的数据类型

        修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型。在MySQL中修改字段的数据类型的语法规则如下:

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

        其中,“表名”指要修改的数据类型的字段所在表的名称,“字段名”指需要修改的字段,“数据类型”指修改后的新数据类型。

2.3.3修改字段名        

        MySQL中修改字段名的语法规则如下:

ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

        其中,“旧字段名”指修改前的字段名;“新字段名”指修改后的字段名;“新数据类型”指修改后的数据类型,如果不需要修改字段的数据类型,将新数据类型设置成与原来一样即可,但数据类型不能为空

        CHANGE也可以只修改数据类型,实现和MODIFY同样的效果,方法是将SQL语句中的“新字段名”和“旧字段名”设置成相同的名称,只改变“数据类型”。

2.3.4添加字段

        添加字段的语法格式如下:

ALTER TABLE ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];

        新字段名为需要添加的字段的名称;“FIRST”为可选参数,其作用是将新添加的字段设置为表的第一个字段;“AFTER”为可选参数,其作用是将新添加的字段添加到指定的“已存在字段名”后面。

        如果SQL语句中没有FIRST和AFTER这两个参数,则默认将新添加的字段设置为数据表的最后一列。

2.3.5删除字段 

        删除字段是将数据表中的某个字段从表中移除,语法格式如下:

ALTER TABLE <表名> DROP <字段名>;

2.3.6修改字段的排列位置

        对于一个数据表来说,在创建的时候,字段在表中的排序就已经确定了,但表的结构并不是完全不可以改变的,可以通过ALTER TABLE来改变表中字段的相对位置,语法格式如下:

ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;

        其中,“字段1”指要修改位置的字段,“数据类型”指“字段1”的数据类型;“FIRST”为可选参数,指将“字段1"修改为表的第一个字段;“AFTER 字段2”指将“字段1”插入到“字段2”后面。

2.3.7更改表的存储引擎

        MySQL中主要的存储引擎有MyISAM、InnoDB、MEMORY(HEAP)、BDB、FEDERATED等。可以使用"SHOW ENGINE;"语句查看系统支持的存储引擎。

        更改表的存储引擎的语法格式如下:

ALTER TABEL <表名> ENGINE=<更改后的存储引擎>;

2.3.8删除表的外键约束

        对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表与从表间的关联关系,MySQL中删除外键的语法格式如下:

ALTER TABEL <表名> DROP FOREIGN KEY <外键约束名>
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        ”外键约束名"指在定义表时CONSTRAINT关键字后面的参数。

2.4删除关系表

2.4.1删除没有被关联的表

        在MySQL中,使用DROP TABEL可以一次删除一个或多个没有被其他表关联的数据表。语法格式如下:

DROP TABLE [IF EXISTS]表1,表2,...,表n;
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        如果要删除的表不存在,会发出一条错误信息。        

        参数"IF EXISTS"用于在删除前判断删除的表是否存在,加上该参数后,再删除表,如果表不存在,SQL语句可以顺利执行,但是会发出警告。

2.4.2删除被其他表关联的主表

        在数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败,原因是直接删除将破坏表的参照完整性。如果必须要删除,可以先删除与它关联的子表,再删除父表,只是这样就同时删除了两个表中的数据。有的情况下可能要保留子表,这时若要单独删除父表,只需将关联的表的外键约束条件取消,然后就可以删除父表了。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_70452407

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值