Mysql数据库对表的基本操作

news2024/11/25 0:37:09

一.表基本操作

1.当前数据库内创建表

2.查看表

3.删除表

4.修改表结构

5.复制表(结构)

二.表约束创建

1.约束的作用

2.约束的类型

3.演示


一.表基本操作

1.当前数据库内创建表

 CREATE TABLE 表名(
    列名 列数据类型,
    列名 列数据类型);

mysql> create table stable(
    -> name char(10),
    -> id int);
Query OK, 0 rows affected (0.02 sec)

2.查看表

(1)查看数据库中的表

mysql> show tables from SLB;
+---------------+
| Tables_in_SLB |
+---------------+
| stable        |
| t1            |
| t2            |
| t3            |
| t4            |
+---------------+
5 rows in set (0.00 sec)

(2)查看表结构

#describe 表名

#show columns from 表名

mysql> describe SLB.stable;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(10) | YES  |     | NULL    |       |
| id    | int      | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> show columns from SLB.stable;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(10) | YES  |     | NULL    |       |
| id    | int      | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)

(3)垂直显示表中各列信息

mysql> show create table SLB.stable\G;
*************************** 1. row ***************************
       Table: stable
Create Table: CREATE TABLE `stable` (
  `name` char(10) DEFAULT NULL,
  `id` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

3.删除表

drop table 表名

mysql> drop table stable;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+---------------+
| Tables_in_SLB |
+---------------+
| t1            |
| t2            |
| t3            |
| t4            |
+---------------+
4 rows in set (0.01 sec)

4.修改表结构

(1)修改列类型:ALTER table 表名 modify 列名 列数据类型

mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int      | YES  |     | NULL    |       |
| name  | char(10) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> ALTER table t1 modify id char(20);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | char(20) | YES  |     | NULL    |       |
| name  | char(10) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

(2)修改列名:ALTER table t1 change 原列名 新列名 列数据类型

mysql> ALTER table t1 change id stuid char(20);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

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

5.复制表(结构)

create table 新表名 like 被复制表名(源表) 

mysql> desc stable;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int      | YES  |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)
mysql> create table t1 like stable;
Query OK, 0 rows affected (0.06 sec)

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

create table 新表名 select * from 被复制表名(源表) 

mysql> create table t2 select * from stable;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql>
mysql> desc t2;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int      | YES  |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

二.表约束创建

1.约束的作用

约束主要用于保证数据库的完整性,表中数据有相互依赖时,可以保护相关的数据不被删除。

2.约束的类型

(1)根据约束数据列的限制:单列约束(每个约束只能约束一列),多列约束(每个约束可以约束多列数据)

(2)根据约束的作用范围:列级约束(作用在一个列上,直接跟在列的后面 ),表级约束(作用在多个列上,不与列写一起,需要单独定义 )

(3)常见约束

NOT NULL:非空约束,规定某个字段不能为空

UNIQUE:唯一约束,规定某个字段在整个表中是唯一的,不允许数据重复

注意:唯一约束是为了确保所在的字段或者字段组合不出现重复值;唯一约束的字段允许出现多个NULL;同一张表内可建多个唯一约束;唯一约束可由多列组合而成;新建唯一约束时MySQL会为之建立对应的索引;如果不设置唯一约束名,该唯一约束默认与列名相同;删除唯一约束时使用“aletr table 表名 drop index 唯一约束名;”来删除。

PRIMARY KEY:主键约束,是非空且唯一的

注意:一个表只允许一个主键,创建主键时也会创建相应的索引。删除主键约束时使用“alter table 表名 drop primary key;”来删除

FOREIGN KEY:外键约束,建立主表与从表的约束关系

注意:从表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空);当主表的记录被从表参照时,主表记录不允许被删除; 外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录;删除外键时使用“aletr table 从表名 drop foreign key CONSTRAINT显示的名称;”

CHECK:检查约束

DEFAULT:默认值约束

3.演示

(1)非空约束

注意:取消约束时使用alter命令更改列时不指定约束即可

mysql> create table t3( id int, name char(20) not null);
Query OK, 0 rows affected (0.02 sec)
mysql> show create table SLB.t3\G;
*************************** 1. row ***************************
       Table: t3
Create Table: CREATE TABLE `t3` (
  `id` int DEFAULT NULL,
  `name` char(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

 (2)唯一约束

mysql> create table t4(
    -> id int unique,
    -> name char(20));
Query OK, 0 rows affected (0.01 sec)

mysql> show create table SLB.t4\G;
*************************** 1. row ***************************
       Table: t4
Create Table: CREATE TABLE `t4` (
  `id` int DEFAULT NULL,
  `name` char(20) DEFAULT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

 (3)主键约束

mysql> create table t5(
    -> id int primary key,
    -> name char(10) unique);
Query OK, 0 rows affected (0.01 sec)

mysql> show create table SLB.t5\G;
*************************** 1. row ***************************
       Table: t5
Create Table: CREATE TABLE `t5` (
  `id` int NOT NULL,
  `name` char(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.01 sec)

(4)外键约束

foreign key(外键列名) references (主表参照列)

mysql> create table t7(
    -> t7id int primary key,
    -> name char(20),
    -> tid int,
    -> foreign key(tid) references t6(tid));
Query OK, 0 rows affected (0.02 sec)
mysql> show create table SLB.t7\G;
*************************** 1. row ***************************
       Table: t7
Create Table: CREATE TABLE `t7` (
  `t7id` int NOT NULL,
  `name` char(20) DEFAULT NULL,
  `tid` int DEFAULT NULL,
  PRIMARY KEY (`t7id`),
  KEY `tid` (`tid`),
  CONSTRAINT `t7_ibfk_1` FOREIGN KEY (`tid`) REFERENCES `t6` (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

#删除外键约束
mysql> alter table t7 drop foreign key t7_ibfk_1;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

t6主表中的id为1 

 t7从表中不允许修改主表设定的id

 从表删除外键后即可修改

 (5)检查约束

这列数据只允许等于设定的内容

mysql> create table t8(
    -> gender char(10) check(gender in ('男','女')));
Query OK, 0 rows affected (0.01 sec)

mysql> show create table SLB.t8\G;
*************************** 1. row ***************************
       Table: t8
Create Table: CREATE TABLE `t8` (
  `gender` char(10) DEFAULT NULL,
  CONSTRAINT `t8_chk_1` CHECK ((`gender` in (_utf8mb4'男',_utf8mb4'女')))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

 (6)默认值约束

mysql> create table t9(
    -> id int unique default 1);
Query OK, 0 rows affected (0.01 sec)

mysql> show create table SLB.t9\G;
*************************** 1. row ***************************
       Table: t9
Create Table: CREATE TABLE `t9` (
  `id` int DEFAULT '1',
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/579154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在华为OD机试中获得满分?Java实现【寻找关键钥匙】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

使用compose desktop构建桌面应用

使用compose desktop构建桌面应用时遇到的一些坑 官方指导移步:多平台开发说明,我这里只写一些自己遇到问题 我在mac机器开发,然后使用githubAction构建的win平台的包,现记录一下遇到的问题 构建文件build.gradle编写不同平台的程…

SAM-MM-配额协议字段解析

1、有效起始日:配额协议的生效日期,系统默认为当前创建日期,灰色,不可更改; 2、有效至:配额协议的失效日期,要手动填一个日期; 3、最小数量拆分:如果要按照配额比例&am…

.NET面向AI编程——SK框架(SemanticKernel)的简易入门实践

前言:随着ChatGPT开始在各个领域遍地开花,有关的应用也开始层出不穷。随着微软开源SK框架,无疑是给.NET开发者带来面向AI应用的新机遇。以下内容,通过创建一个简单的prompt开始,开发一个使用SK框架进行开发的入门教程&…

xss跨站之waf绕过及安全修复(28)

手工探针xss绕过waf规则 打开靶场 写入跨站测试语句发现拦截 这里就做一个最经典的方法,做一个关键字拆分来确立拦截的是什么东西。 去掉最后字符串,访问还是拦截,再去掉alert(1),访问还是拦截&#xff…

八大排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序(上)

目录 前言 直接插入排序(Insertion Sort) 一、概念及其介绍 二、过程图示 三、代码 四、复杂度 希尔排序(Shell Sort) 一、概念 二、实现思路 三、图示过程 四、代码 4.1代码 4.2运行结果 4.3解释 五、复杂度 堆排…

华为诺亚实验室VanillaNet学习笔记

华为诺亚实验室VanillaNet学习笔记 VanillaNet: the Power of Minimalism in Deep Learning Abstract 基础模型的核心理念是“多而不同”,计算机视觉和自然语言处理领域的惊人成功就是例证。然而,优化的挑战和变压器模型固有的复杂性要求范式向简单性…

Linux:finalshell虚拟机与真实机的上传和下载;rz、sz

使用命令rz上传的速度会比拖拽上传的速度慢

Day3:Windows网络编程-UDP

对比TCP与UDP的通信区别 UDP Server没有listen()和accept() TCP Server #include <iostream> #include <WinSock2.h> // 包含网络库 #pragma comment(lib,"ws2_32.lib") using namespace std;int main() {// 1. 初始化套接字 初始化套接字库cout <&l…

Qt编写视频监控系统76-Onvif跨网段组播搜索和单播搜索的实现

一、前言 在视频监控行业一般会用国际onvif工具来测试设备是否支持onvif协议&#xff0c;工具的名字叫ONVIF Device Manager&#xff08;还有个工具叫ONVIF Device Test Tool&#xff0c;专用于程序员测试各种数据交互&#xff09;&#xff0c;可以自行搜索下载&#xff0c;此…

linux网桥简单理解和持久化配置

文章目录 前言一、Linux 网桥是什么&#xff1f;二、网桥主要作用三、网桥配置命令及安装(CentOS系统)1 网桥配置命令2.持久化网桥配置 前言 linux bridge是网络虚拟化中非常重要的一种设备&#xff0c;今天就来学习下linux bridge的相关知识 一、Linux 网桥是什么&#xff1…

Allegro操作规范

光绘输出操作规范 1.1添加钻孔表 添加钻孔表的具体步骤为: 1.通过屏幕右边的Visibility选项的Views列表,将Drill层打开 2.将Visibility选项中的PIN和Via选项都选中,见下图所示: 1.2添加钻孔文件 参数设好之后关闭NC Drill/Parameters窗口,输出数控机床钻孔文件的命…

企业域名与企业邮箱:提升企业形象的必备选择

在商业中&#xff0c;你最不想做的就是把注意力从业务上移开&#xff0c;去担心一些小事——比如电子邮件。大多数免费的企业电子邮件账户偷工减料&#xff0c;因此无法交付货物。在Zoho我们围绕您的需求设计了我们的平台&#xff0c;以创建优于其他工作电子邮件地址的电子邮件…

jQuery-从左到右、从右到左

<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>从左到右、从右到左</title> <style type"text/css"> select { …

采购申请审批测试

采购申请审批的配置并不难&#xff0c;但是总会有原因导致业务无审批策略&#xff0c;而且这个配置也比较脆弱&#xff0c;有时同步也会出现问题&#xff0c;小编利用这篇操作记录下测试结果。 1、项目类别的审批策略分类 下图是审批策略分类-项目类别不给值&#xff0c;测试…

LAMP架构中的安装论坛

前言&#xff1a;本次操作依赖于LAMP的环境已经配置完全&#xff0c;网站也是依赖于开发人员现有的网站包框架&#xff0c;实施在LAMP已搭建好的环境进行安装部署 目录 一、对mysql进行操作 创建数据库&#xff0c;并进行授权 二、解压论坛压缩包 三、初步访问安装 解决…

少年,你可听说过MVCC?

&#xff1a;切&#xff01;这谁没听过&#xff0c;不就是多版本并发控制么~ 早在亘古时期&#xff0c;修真界就流传着一门mysql功法&#xff0c;将其修至小乘境界&#xff0c;足以纵横一方。。。不乏也有走火入魔者&#xff0c;为祸一方~ Serializable篇 强制事务排序&#…

【MCS-51】中断系统原理及应用

中断是单片机中一个十分重要的功能&#xff0c;它的出现能够让我们的单片机在顺序执行命令时&#xff0c;具备应对特殊情况的能力。 目录 &#x1f319;通信方式 &#x1f343;无条件传送 &#x1f343;有条件传送 &#x1f343;DMA通信 &#x1f343;中断传送 &#x1…

python计算程序开始、结束以及运行的时间

python 计算程序运行的耗时&#xff0c;主要有三种方法&#xff1a; time.time() 、 time.perf_counter() 和 datetime.datetime.now()方法 使用方法如下&#xff1a; 1. time.time() import time start time.time() # 程序开始时间,单位为秒 print("start_time:&…

C++ [STL之list的使用]

本文已收录至《C语言和高级数据结构》专栏&#xff01; 作者&#xff1a;ARMCSKGT 前言 vector是一片连续的空间&#xff0c;在数据访问上性能较好&#xff0c;但是任意位置插入删除性能较低&#xff0c;头插头删性能亦是如此&#xff1b;此时在这种需要频繁插入的场景下&…