• 【MySQL篇】第三篇——表的操作


    创建表

    创建表案例

    查看表结构

    修改表

    删除表


    创建表

    在创建数据库之后,接下来就要在数据库中创建数据表了。所谓创建数据表,指的是在已经创建数据库中建立新表。

    创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性)约束的过程。

    基本语法

    可以使用 CREATE TABLE 语句创建表。其语法格式为:

    1. CREATE TABLE table_name(
    2. field1 datatype,
    3. field2 datatype,
    4. field3 datatype
    5. )character set 字符集 collate 校验规则 engine 存储引擎;

     说明:

    • field 表示列名
    • datatype 表示列的类型
    • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
    • collate校验规则,如果没有指定校验规则,则以所在数据库

    创建表案例

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

    输入:创建表的数据库为test1;创建users数据表,输入的SQL语句和运行结果如下所示:

    1. user test1;
    2. create  table users (
    3.  id int,
    4.  name varchar(20) comment '用户名',
    5.  password char(32) comment '密码是32位的md5值',
    6.  birthday date comment '生日'
    7. ) character set utf8 engine MyISAM;

    输出:

    执行完之后,便创建一个名称为users的数据表,使用SHOW TABLES;便可以查看数据表是否创建成功:

     说明:

    • 不同的存储引擎,创建表的文件不一样。
    • users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

    1.users.frm:表结构

    2.users.MYD:表数据

    3.users.MYI:表索引

    查看表结构

    创建完数据表之后,经常需要查看表结构(表信息)。可以使用 DESCRIBE 和 SHOW CREATE TABLE 命令来查看数据表的结构。

    DESCRIBE/DESC 语句会以表格的形式来展示表的字段信息,包括字段名、字段数据类型、是否为主键、是否有默认值等,语法格式如下:

    DESCRIBE <表名>;

    或:

    DESC <表名>;

     DESC 查看表 users 的表结构,SQL 语句和运行结果如下:

    •  Field:表示字段名字
    • Type:表示字段类型
    • Null:表示该列是否可以存储 NULL 值。
    • Key:表示该列是否已编制索引。PRI 表示该列是表主键的一部分,UNI 表示该列是 UNIQUE 索引的一部分,MUL 表示在列中某个给定值允许出现多次。
    • Default:表示该列是否有默认值,如果有,值是多少。
    • Extra:表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等。

    修改表

    修改数据表的前提是数据库中已经存在该表。修改表指的是修改数据库中已经存在的数据表的结构。修改数据表的操作也是数据库管理中必不可少的,就像画素描一样,画多了可以用橡皮擦掉,画少了可以用笔加上。
    不了解如何修改数据表,就相当于是我们只要画错了就要扔掉重画,这样就增加了不必要的成本。

    在 MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列、更改原有列类型、重新命名列或表等。

    其语法格式如下:

    1. ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);
    2. ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);
    3. ALTER TABLE tablename DROP (column);
    • 修改表名

    语法规则如下:

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

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

    将数据表users改名为students_users,语句和运行结果如下所示:

    • 修改表字符集

    将字符集修改为gb2312,校对规则修改为gb2312_chinese_ci.语句和运行结果如下:

    •  在users表添加二条记录

    语法格式如下:

    mysql> insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-04');

     

    • 在users表添加一个字段,用于保存图片路径
    mysql> alter table users add assets varchar(100) comment '图片路径' after birthday;

    • 修改name,将其长度改为60
    mysql> alter table users modify name varchar(60);

    •  删除password列
    1. mysql> alter table users drop password;
    2. mysql> desc users;
    3. +----------+--------------+------+-----+---------+-------+
    4. | Field | Type | Null | Key | Default | Extra |
    5. +----------+--------------+------+-----+---------+-------+
    6. | id | int(11) | YES | | NULL | |
    7. | name | varchar(60) | YES | | NULL | |
    8. | birthday | date | YES | | NULL | |
    9. | assets | varchar(100) | YES | | NULL | |
    10. +----------+--------------+------+-----+---------+-------+

    删除表

    对于不再需要的数据表,我们可以将其从数据库中删除。在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失。

    使用 DROP TABLE 语句可以删除一个或多个数据表,语法格式如下:

    DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]

    对语法格式的说明如下:

    • 表名1, 表名2, 表名3 ...表示要被删除的数据表的名称。DROP TABLE 可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可。
    • IF EXISTS 用于在删除数据表之前判断该表是否存在。如果不加 IF EXISTS,当数据表不存在时 MySQL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告(warning)。

     从上面的创建可知,数据库test1中,创建的数据表有:

     下面来删除数据表person,输入SQL语句和运行结果如下:

     删除成功。

    两点注意:

    • 用户必须拥有执行 DROP TABLE 命令的权限,否则数据表不会被删除。
    • 表被删除时,用户在该表上的权限不会自动删除。
  • 相关阅读:
    JAVA:实现Damm达姆算法(附完整源码)
    Simulink Test自动化(三)-创建TestReport和CoverageReport
    使用vue快速创建uniapp小程序
    【C++11算法】find_if_not、 copy_if、copy_n
    每日leetcode_LCP01猜数字
    Android13 大屏设备底部显示TaskBar并NavagatonBar居右
    [数据库与软件工程]四、关系代数之关系除法的实际意义与计算方法
    AOP切面实现增删改防止重放攻击
    CSS进阶
    2022牛客多校3 A-Ancestor(求LCA前后缀)
  • 原文地址:https://blog.csdn.net/m0_58367586/article/details/127991102