MySQL 数据库表的基本操作
一、数据库表概述
在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。
二、数据表的创建语句
通常在创建表时,应该使用语句USE 数据库名,指定在哪个数据库中操作,如果没有指定库时我们也可以在创建时,用 <数据库名.数据表>来进行创建。
创建数据表语句:
create table <表名>
(字段名1,数据类型 [列级别约束条件] [默认值],字段名2,数据类型 [列级别约束条件] [默认值],…………[表级别约束条件]
);
创建表的注意事项:
1、创建表的名称不区分大小写,不能使用SQL语句中的关键字。
2、数据表中的一个字段(列)的名称和数据类型要创建多列(个),要用逗号分割。
三、约束条件
1、主键约束
主键,也成为主码,时表中一列或多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系,他们之间是一一对应的。主键分为两种类型:单字段主键和多字段联合主键。
主键从功能上来看相当于非空且唯一。
① 直接在定义字段时在后面进行定义,也称为行级主键约束、单字段主键。
create table <表名>
(字段名1,数据类型 primary key [默认值],…………
);
② 在定义完表时,在后面进行定义,也称为表级主键约束,可以多个字段联合组成。
create table <表名>
(字段名1,数据类型 [列级别约束条件] [默认值],字段名2,数据类型 [列级别约束条件] [默认值],…………primary key 字段名1 [,字段名2,……字段名n]
);
2、外键约束
外键用来两个表的数据之间建立连接,它可以是一列或者都多列,一个表可以有一个或者多个外键,外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某一个值。
外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另一个表的主键。外键主要作用是保证数据引用的完整性,定义外键之后,不允许删除另一个表中具有关联关系的行。外键的作用是保持数据一致性、完整性。
主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。
从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。
[constraint <外键名>] foreign key 字段名1 [,字段名2,……]
peferences <主表名> 主键列1 [,主键列2,……]
“外键名”为定义的外键约束的名字,一个表中不能有相同名称的外键,"字段名"表示子表需要添加外键约束的字段列;"主表名"即被子表外键所依赖的表的名称;"主键列" 表示主表定义的主键列,或列组合。
3、非空约束
非空约束就是指该字段的值不能为空。用户在添加数据的时候必须指定值,否则会报错。
create table <表名>
(字段名1,数据类型 not null [默认值],…………
);
4、唯一约束
唯一性约束要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。如果不给唯一约束起名,默认与列名相同。
语法如下:
create table <表名>
(字段名1,数据类型 unique [默认值],…………
);
或者
create table <表名>
(字段名1,数据类型 [行级约束] [默认值],…………
unique <字段名>
);
unique和primary key的区别:一个表中可以有多个字段声明为unique,但只能有一个primary key声明;声明为primary key的列不允许有空值,但是声明为unique的字段允许为空值(NULL)的存在。
5、默认值约束
默认值约束指定某一列的默认值,当一个值出现比较多就可以用次约束,方便输入数据提高速度。
语法如下:
create table <表名>
(字段名1,数据类型 [行级约束条件] default 默认值,…………
);
6、自动增加
auto_increment关键字来实现,不指定步长时,默认自动加1,一个表中只能有一个字段使用自定增加约束,且该字段必须为主键的一部分,该约束的字段类型只能是整型类型。
create table <表名>
(字段名1,数据类型 primary key auto_increment [默认值],…………
);
四、查看数据表结构
1、查看基本结构
mysql> desc books;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| bk_id | int(11) | NO | PRI | NULL | |
| bk_title | varchar(50) | NO | | NULL | |
| copyright | year(4) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)mysql> describe books;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| bk_id | int(11) | NO | PRI | NULL | |
| bk_title | varchar(50) | NO | | NULL | |
| copyright | year(4) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
2、查看表的创建详细结构
mysql> show create table books;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| books | CREATE TABLE `books` (`bk_id` int(11) NOT NULL,`bk_title` varchar(50) NOT NULL,`copyright` year(4) NOT NULL,PRIMARY KEY (`bk_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
五、修改表的操作
1、修改表名
alter table <旧表名> [to] <新表名>;
2、修改字段的数据类型
alter table <表名> modefiy <字段名> <数据类型>;
3、修改字段名
alter table <表名> change <旧字段名> <新字段名> <新数据类型>;
4、添加字段
在最后一列添加一个字段名
alter table <表名> add <新字段名> <数据类型>;
在第一列增加一个字段或者指定在已经存在的字段后增加一个字段
alter table <表名> add <新字段名> <数据类型> <first | after 已经存在的字段名>;
5、删除字段
alter table <表名> drop <字段名>;
6、修改字段的排列位置
alter table <表名> modifiy <字段名1> <数据类型> first | after <字段名2>;
"字段名1" 指定要修改位置的字段,"数据类型"指"字段名1"的数据类型,"first"为可选参数,将指定"字段1"修改为表的第一个字段,"after 字段2"指将"字段1 "插入到"字段2"后面。
7、修改表的存储引擎
alter table <表名> engine=存储引擎类型;
8、删除表的外键约束
alter table <表名> drop foreign key <外键约束名>;
9、删除数据表
一次可以删除一个或者多个数据库表
drop table [if exists] <表名>;
参考书籍:MySQL5.7从入门到精通-清华大学出版社
相关文章:
MySQL 数据库表的基本操作
一、数据库表概述 在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。 二、数…...
企业微信电脑端开启chrome调试
首先: Mac端调试开启的快捷键:control shift command d Window端调试开启的快捷键: control shift alt d 这边以Mac为例,我们可以在电脑顶部看到调试的入口: 然后我们点击 『浏览器、webView相关』菜单,勾选上…...
Maven官网下载配置新仓库
1.Maven的下载 Maven的官网地址:Maven – Download Apache Maven 点击Download,查找 Files下的版本并下载如下图: 2.Maven的配置 自己在D盘或者E盘创建一个文件夹,作为本地仓库,存放项目依赖。 将下载好的zip文件进行解…...
银河麒麟V10 达梦安装教程
安装前先准备要安装包,包需要需要区分X86和arm架构。 版本为:dm8_20230419_FTarm_kylin10_sp1_64.iso 达梦数据库下载地址: https://www.aliyundrive.com/s/Qm7Es5BQM5U 第一步创建用户 su - root 1. 创建安装用户组 dminstall。 groupad…...
Python操作MongoDB数据库
安装MongoDB库 pip install pymongopython 代码 Author: tkhywang 2810248865qq.com Date: 2023-08-21 10:22:30 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-08-21 11:17:45 FilePath: \PythonProject02\MongoDB 数据库.py Description: 这是默认设置,请设置…...
《HeadFirst设计模式(第二版)》第十一章代码——代理模式
代码文件目录: RMI: MyRemote package Chapter11_ProxyPattern.RMI;import java.rmi.Remote; import java.rmi.RemoteException;public interface MyRemote extends Remote {public String sayHello() throws RemoteException; }MyRemoteClient packa…...
QT的工程文件认识
目录 1、QT介绍 2、QT的特点 3、QT模块 3.1基本模块 3.2扩展模块 4、QT工程创建 1.选择应用的窗体格式 2.设置工程的名称与路径 3.设置类名 4.选择编译器 5、QT 工程解析 xxx.pro 工程配置 xxx.h 头文件 main.cpp 主函数 xxx.cpp 文件 6、纯手工创建一个QT 工程…...
typeScript安装及TypeScript tsc 不是内部或外部命令,也不是可运行的程序或批处理文件解决办法
一、typeScript安装: 1、首先确定系统中已安装node, winr 输入cmd 打开命令行,得到版本号证明系统中已经安装node node -v //v18.17.0 2、使用npm 全局安装typeScript # 全局安装 TypeScript npm i -g typescript 二、检查是否安装成功ts #检查t…...
SWUST 派森练习题:P111. 摩斯密码翻译器
描述 摩斯密码(morse code),又称摩斯电码、摩尔斯电码(莫尔斯电码),是一种时通时断的信号代码,通过不同的信号排列顺序来表达不同的英文字母、数字和标点符号;通信时,将英文字母等内…...
如何在控制台查看excel内容
背景 最近发现打开电脑的excel很慢,而且使用到的场景很少,也因为mac自带了预览的功能。但是shigen就是闲不住,想自己搞一个excel预览软件,于是在一番技术选型之后,我决定使用python在控制台显示excel的内容。 具体的需…...
Echarts、js编写“中国主要城市空气质量对比”散点图 【亲测】
本次实验通过可视化工具Echarts来对全国主要城市的PM2.5的值进行直观的展示,使人们可以快速的发现信息的关键点,从而对各个城市的空气质量情况有直观的了解。 先看效果 上代码: <!DOCTYPE html> <html>&…...
linux不分区直接在文件系统根上开swap
root下,直接创swapfile dd if/dev/zero of/swapfile bs1M count8192然后 mkswap swapfile swapon swapfile修改fstab # /etc/fstab: static file system information. # # Use blkid to print the universally unique identifier for a # device; this may be us…...
React请求机制优化思路 | 京东云技术团队
说起数据加载的机制,有一个绕不开的话题就是前端性能,很多电商门户的首页其实都会做一些垂直的定制优化,比如让请求在页面最早加载,或者在前一个页面就进行预加载等等。随着react18的发布,请求机制这一块也是被不断谈起…...
CompletableFuture总结和实践
CompletableFuture被设计在Java中进行异步编程。异步编程意味着在主线程之外创建一个独立的线程,与主线程分隔开,并在上面运行一个非阻塞的任务,然后通知主线程进展,成功或者失败。 一、概述 1.CompletableFuture和Future的区别&…...
使用Nginx调用网关,然后网关调用其他微服务
问题前提:目前我的项目是已经搭建了网关根据访问路径路由到微服务,然后现在我使用了Nginx将静态资源都放在了Nginx中,然后我后端定义了一个接口访问一个html页面,但是html页面要用到静态资源,这个静态资源在我的后端是…...
windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】
windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…...
PAT 1097 Deduplication on a Linked List
个人学习记录,代码难免不尽人意 Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated absolute values of the keys. That is, for each value K, only the first node of which the value or absolute value o…...
Flink 数据集成服务在小红书的降本增效实践
摘要:本文整理自实时引擎研发工程师袁奎,在 Flink Forward Asia 2022 数据集成专场的分享。本篇内容主要分为四个部分: 小红书实时服务降本增效背景Flink 与在离线混部实践实践过程中遇到的问题及解决方案未来展望 点击查看原文视频 & 演…...
jellyfin使用ipv6+DDNS实现外网访问
前言 原本使用frp的方案进行外网访问jellyfin,但是阿里云的轻量服务器的带宽只有5M,只能支持看1080p的视频,看4K有点吃力,为了有更好的观影体验,选择ipv6DDNS的方式实现外网访问,此方案能跑满群晖的上行带宽…...
Codeforces EDU 151 Div.2
文章目录 A. Forbidden IntegerB. Come TogetherC. Strong PasswordD. Rating SystemE. Boxes and Balls A. Forbidden Integer Problem - A - Codeforces 给定整数n,从1~k中选择除了x的数,使这些数之和为n,每个数可以选择无限次 爆搜&…...
V2board缓存投毒漏洞复现
1.什么是缓存投毒 缓存投毒(Cache poisoning),通常也称为域名系统投毒(domain name system poisoning),或DNS缓存投毒(DNS cache poisoning)。它是利用虚假Internet地址替换掉域名系…...
2023面试八股文 ——Java基础知识
Java基础知识 一.Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?…...
在linux系统中修改mysql数据目录
目录 1.查看mysql默认存储路径2.停止mysql服务3.移动或复制原数据目录4.修改配置文件5.修改启动文件6.配置AppArmor访问控制规则7.重启apparmor服务8.启动mysql 1.查看mysql默认存储路径 在/etc/mysql/mysql.conf.d/mysqld.cnf中的datadir配置项。 datadir /var/lib/mysql2…...
ORB-SLAM2学习笔记9之图像帧Frame
先占坑,明天再完善… 文章目录 0 引言1 Frame类1.1 成员函数1.2 成员变量 2 Frame类的用途 0 引言 ORB-SLAM2学习笔记8详细了解了图像特征点提取和描述子的生成,本文在此基础上,继续学习ORB-SLAM2中的图像帧,也就是Frame类&#…...
面试热题(不同的二分搜索树)
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 经典的面试题,这部分涉及了组合数学中的卡特兰数,如果对其不清楚的同学可以去看我以前的博客卡特兰数 …...
MybatisPlus整合p6spy组件SQL分析
目录 p6spy java为什么需要 如何使用 其他配置 p6spy p6spy是一个开源项目,通常使用它来跟踪数据库操作,查看程序运行过程中执行的sql语句。 p6spy将应用的数据源给劫持了,应用操作数据库其实在调用p6spy的数据源,p6spy劫持到…...
项目实战 — 博客系统③ {功能实现}
目录 一、编写注册功能 🍅 1、使用ajax构造请求(前端) 🍅 2、统一处理 🎄 统一对象处理 🎄 保底统一返回处理 🎄 统一异常处理 🍅 3、处理请求 二、编写登录功能 🍅 …...
卷积神经网络全解:(AlexNet/VGG/ GoogLeNet/LeNet/ResNet/卷积/激活/池化/全连接)、现代卷积神经网络、经典卷积神经网络
CNN,卷积神经网络,Convolution Neural Network 卷积计算公式:N (W-F2p)/s1 这个公式每次都得看看,不能忘 1 经典网络 按照时间顺序 1.1 LeNet LeNet是 Yann LeCun在1998年提出,用于解决手…...
WDM 模型(Windows Driver Model)简述
WDM 模型(Windows Driver Model) 是微软公司为 Windows98 和 Windows2000 的驱动程序设计的一种架构,在 WDM 驱动程序模型中,每个硬件设备 至少有两个驱动程序。其中一个为功能驱动程序,它了解硬件工作的所有细节,负 责初始化 …...
【算法刷题之数组篇(1)】
目录 1.leetcode-59. 螺旋矩阵 II(题2.题3相当于二分变形)2.leetcode-33. 搜索旋转排序数组3.leetcode-81. 搜索旋转排序数组 II(与题目2对比理解)(题4和题5都是排序双指针)4.leetcode-15. 三数之和5.leetcode-18. 四数之和6.leet…...
网站制作公司新鸿儒/排行榜
dagger 注入Dagger是基于Guice的开源依赖项注入(DI)框架。 但是,Dagger的开发人员对Guice的基本原理并不满意:他们一次又一次地不得不在较大的项目中编写代码,其中涉及大量的绑定代码。 由于这是静态语义的一部分&…...
外贸主动营销网站建设/app推广营销
/*** 1、除非元素为null,否则向集合添加元素*/ CollectionUtils.addIgnoreNull(personList,null); /*** 2、将两个已排序的集合a和b合并为一个已排序的列表,以便保留元素的自然顺序*/ CollectionUtils.collate(Iterable<? extends O> a, Iterable…...
湛江网站建设公司/seo推广策划
在某些小型组织中,可能有必要在集线器传输服务器上运行 Microsoft Exchange Server 2010 反垃圾邮件功能。例如,某些组织可能没有相当数量的电子邮件,因此没有必要投入成本安装和维护完备的外围网络以及边缘传输服务器。可以在集线器传输服务…...
wordpress改wp admin/软文营销名词解释
题目: 0,1,...n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里剩下的最后一个数字。 思路: 1、环形链表模拟圆圈 创建一个n个节点的环形链表,然后每次在这个链表中删除…...
上海网站外包/seo查询排名系统
当您听到“软件测试”这个术语时,您是否会想到一种特定类型的测试——例如功能测试或回归测试——或者您是否立即开始将复杂的、相互关联的测试类型和技术网络可视化,这些测试类型和技术构成了广泛的测试世界。 大多数有经验的开发人员都明白,…...
台州经济开发区管委会建设网站/检测网站是否安全
public class Clerk {private int product0;//产品默认0;//生产者生成出来的产品交给店员public synchronized void addProduct(){if(this.product>20){try {wait();//产品已满,请稍等在生产} catch (InterruptedException e) {// TODO 自动生成的 catch 块e.pri…...