Linux-关于MySQL(二)

本文详细介绍了在Linux系统中如何修改MySQL的表结构,包括添加、修改字段,以及变更表名。此外,还深入讨论了MySQL的键值类型,如普通索引、唯一索引、主键和外键的使用,包括创建、查看和删除索引的操作,以及主键和外键的约束规则和功能验证。
摘要由CSDN通过智能技术生成

一、修改表结构

1.1 字段约束条件(限制字段赋值)
查看字段约束 desc 库名.表名;
1.1.1 是否允许字段赋空(null)值 默认允许

字段名 类型 not null ;


mysql> create table db1.t12( name char(10) not  null , addr  char(30) not null );
Query OK, 0 rows affected (0.05 sec)

mysql> desc db1.t12;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(10) | NO   |     | NULL    |       |
| addr  | char(30) | NO   |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into db1.t12 values (null , null );
ERROR 1048 (23000): Column 'name' cannot be null
mysql> 
mysql> insert into db1.t12 values ("null" , null );
ERROR 1048 (23000): Column 'addr' cannot be null
mysql> 
mysql> insert into db1.t12 values ("null" , "beijing" );
Query OK, 1 row affected (0.00 sec)

mysql> select  * from db1.t12;
+------+---------+
| name | addr    |
+------+---------+
| null | beijing |
+------+---------+
1 row in set (0.00 sec)

mysql> insert into db1.t12 values ("" , "shanghai" );
Query OK, 1 row affected (0.00 sec)

mysql> select  * from db1.t12;
+------+----------+
| name | addr     |
+------+----------+
| null | beijing  |
|      | shanghai |
+------+----------+
2 rows in set (0.00 sec)

mysql>

1.1.2 设置字段默认值 默认情况默认值是null
添加新行时,不给字段赋值使用默认值赋值

字段名 类型 default 默认值

create table db1.t13(name char(10) not null , age int default 25 , class char(7)   default "nsd2004" , loves  set("a","b","c") not null default "c,a" );

mysql> desc db1.t13;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| name  | char(10)         | NO   |     | NULL    |       |
| age   | int(11)          | YES  |     | 25      |       |
| class | char(7)          | YES  |     | nsd2004 |       |
| loves | set('a','b','c') | NO   |     | a,c     |       |
+-------+------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> insert into  db1.t13(name) values("bob");
Query OK, 1 row affected (0.00 sec)

mysql> select  * from db1.t13;
+------+------+---------+-------+
| name | age  | class   | loves |
+------+------+---------+-------+
| bob  |   25 | nsd2004 | a,c   |
+------+------+---------+-------+
1 row in set (0.00 sec)

mysql> 
mysql> insert into db1.t13 values ("tom",null,"nsd2012",null );
ERROR 1048 (23000): Column 'loves' cannot be null
mysql> 
mysql> insert into db1.t13 values ("tom",null,"nsd2012","b" );
Query OK, 1 row affected (0.00 sec)

mysql> select  * from db1.t13;
+------+------+---------+-------+
| name | age  | class   | loves |
+------+------+---------+-------+
| bob  |   25 | nsd2004 | a,c   |
| tom  | NULL | nsd2012 | b     |
+------+------+---------+-------+
2 rows in set (0.00 sec)

mysql>

1.1.3 键值 (默认都没有设置)
1.1.4 额外设置 (默认没有设置)

1.2 修改表结构
1.2.1命令格式

alter table 库.表 操作动作;
操作如下:

1.2.2 添加新字段 add

mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(10) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> alter table  db1.t1 add  class char(7) not null  default "nsd2004" , add email  varchar(30) ;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc t1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | char(10)    | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
| class | char(7)     | NO   |     | nsd2004 |       |
| email | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> alter table  db1.t1  add stu_num  int  first;
mysql> desc db1.t1;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| stu_num | int(11)     | YES  |     | NULL    |       |
| name    | char(10)    | YES  |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
| class   | char(7)     | NO   |     | nsd2004 |       |
| email   | varchar(30) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> alter table   db1.t1 add  QQ  char(11) after name ;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc db1.t1;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| stu_num | int(11)     | YES  |     | NULL    |       |
| name    | char(10)    | YES  |     | NULL    |       |
| QQ      | char(11)    | YES  |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
| class   | char(7)     | NO   |     | nsd2004 |       |
| email   | varchar(30) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql>

		1.2.3 删除表中字段 drop
mysql> alter table  db1.t1  drop  class , drop email;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select  * from db1.t1;
+---------+------+------+------+
| stu_num | name | QQ   | age  |
+---------+------+------+------+
|    NULL | abc  | NULL |   99 |
|    NULL | NULL | NULL | NULL |
|    NULL |      | NULL | NULL |
+---------+------+------+------+
3 rows in set (0.00 sec)

mysql> desc db1.t1;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| stu_num | int(11)  | YES  |     | NULL    |       |
| name    | char(10) | YES  |     | NULL    |       |
| QQ      | char(11) | YES  |     | NULL    |       |
| age     | int(11)  | YES  |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> 

1.2.3 修改字段类型 modify
如果字段已经有数据了,修改的设置不能与已经存储的数据冲突,冲突不允许修改。

mysql> delete from  db1.stuinfo;
mysql> select  * from stuinfo;

mysql> desc stuinfo;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| stu_num | int(11)  | YES  |     | NULL    |       |
| name    | char(10) | YES  |     | NULL    |       |
| QQ      | char(11) | YES  |     | NULL    |       |
| age     | int(11)  | YES  |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> alter  table db1.stuinfo modify age int not null default 19 ;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc stuinfo;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| stu_num | int(11)  | YES  |     | NULL    |       |
| name    | char(10) | YES  |     | NULL    |       |
| QQ      | char(11) | YES  |     | NULL    |       |
| age     | int(11)  | NO   |     | 19      |       |
+---------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> alter  table db1.stuinfo modify age tinyint ;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc stuinfo;
+---------+
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux上安装MySQL,你可以按照以下步骤进行操作: 1. 下载MySQL安装包。你可以从MySQL官方网站上获取安装包的下载地址\[3\]。使用wget命令下载安装包,并解压缩到指定目录。 2. 进入解压缩后的MySQL目录,并进行一些必要的设置。你可以根据需要修改MySQL的配置文件,如my.cnf文件。 3. 运行安装脚本进行MySQL的安装。根据你的需求选择合适的安装方法,可以是源码安装、编译安装、yum安装或rpm安装\[2\]。 4. 安装完成后,你可以启动MySQL服务,并设置MySQL服务在系统启动时自动启动。 5. 进行一些常用的设置,如设置MySQL的root密码、创建新的数据库和用户等\[1\]。 通过以上步骤,你就可以在Linux上成功安装MySQL了。如果在安装过程中遇到问题,可以参考相关文档或搜索解决方案。 #### 引用[.reference_title] - *1* [Linux-安装MySQL(详细教程)](https://blog.csdn.net/u013733643/article/details/128970496)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Linux多种方法安装mysql](https://blog.csdn.net/m0_37739193/article/details/77477547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值