MySql005——使用SQL创建数据库和表

chatgpt/2023/9/26 12:53:31

在《MySql000——MySql数据库的下载、安装以及使用图形化工具创建数据库和表》中,我们使用图形化工具MySQL
Workbench创建数据库和表,下面我们将使用SQL来实现这一过程

一、数据库操作

1.1、创建数据库

1.1.1、创建MySQL数据库通用写法

使用 create 命令创建数据库,语法如下:

CREATE DATABASE 数据库名;

在这里插入图片描述

1.1.2、最正规的写法

要使用MySQL的SQL语句来创建一个名为"study"的数据库并设置字符集为utf8,最正规的写法应如下:

CREATE DATABASE IF NOT EXISTS study CHARACTER SET utf8 COLLATE utf8_general_ci;

这个命令是这样执行的:
1、首先使用IF NOT EXISTS子句判断当"study"数据库不存在时,然后才创建该数据库
2、同时,该数据库字符集被设置为utf8,字符集校对规则(Collation)被设置为utf8_general_ci,这是一个常见的不区分大小写的utf8字符集校对规则。
3、请注意,这是MySQL的标准写法。

1.2、删除数据库

DROP DATABASE <数据库名>;

1.3、选择数据库

USE <数据库名>;

二、表的操作

数据库和表之间的关系是:一个数据库中包含多张表。

2.1、创建数据表

2.1.1、创建MySQL数据表的SQL通用语法

使用 create 命令创建数据表,语法如下:

CREATE TABLE table_name (column_name column_type);/*
说明:
table_name 	表名
column_name 列名
column_type	列数据类型
*/

下面使用SQL在study数据库中创建user表,user表有4个字段index、user_id、user_name、password

USE `study`;	-- 选择使用study数据库CREATE TABLE IF NOT EXISTS `user`(`index` 	INT NOT NULL,					-- NOT NULL设置字段不能为空,在操作数据库时如果输入该字段的数据为NULL ,就会报错。`user_id` 	INT UNSIGNED AUTO_INCREMENT,	-- AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。`user_name` VARCHAR(100) NOT NULL,			--  VARCHAR(100)表示该字段最大字符的个数是100`password`  VARCHAR(40) NOT NULL,PRIMARY KEY ( `user_id` )					-- PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
)ENGINE=InnoDB DEFAULT CHARSET=utf8;			-- ENGINE 设置存储引擎,CHARSET 设置编码。/*
对UNSIGNED的特别说明:
默认的 int 类型,取值范围是 -2147483648-2147483647 之间,而 unsigned 的取值范围是 0-4294967295 之间。
默认的 int 类型,允许插入负数,unsigned 设置后,无法插入负数。
*/

在这里插入图片描述

2.1.2、最规范的语法

MySQL创建表的最规范的语法如下:

CREATE TABLE [IF NOT EXISTS] table_name (column1 datatype constraints,column2 datatype constraints,...[CONSTRAINT constraint_name] PRIMARY KEY (column1, column2, ...),[INDEX index_name] (column1, column2, ...),[FOREIGN KEY (column1, column2, ...) REFERENCES table_name (column1, column2, ...)],...
) ENGINE=engine_name [DEFAULT CHARSET=character_set_name];

其中,方括号表示可选部分。以下是对各个部分的解释:

  • IF NOT EXISTS(可选):如果指定的表名已经存在,则不会创建新表。
  • table_name:要创建的表的名称。
  • column1, column2, ...:表中的列名。
  • datatype:列的数据类型。
  • constraints:可选的列约束,如NULLNOT NULLDEFAULT等。
  • CONSTRAINT constraint_name PRIMARY KEY:指定主键约束。
  • INDEX index_name(可选):为指定的列创建索引。
  • FOREIGN KEY(可选):指定外键约束,并指定参考的表和列。
  • ENGINE engine_name:指定表使用的存储引擎,如InnoDBMyISAM等。
  • DEFAULT CHARSET character_set_name(可选):指定表的默认字符集。

关于什么是主键约束、外键约束、索引、存储引擎(参考1、参考二)后续在学习,这里主要掌握通用写法,了解规范写法

2.2、向表中插入数据

MySQL 表中使用 INSERT INTO 语句来插入数据。
格式为:

INSERT INTO table_name ( field1, field2,...fieldN )VALUES( value1, value2,...valueN );/*
说明:
table_name 	表名
field		列
value		列对应的值
*/

例如下面向study数据库的user表插入三条记录

INSERT INTO `study`.`user` (`index`, `user_id`, `user_name`, `password`) VALUES ('1', '1001', '大毛', 'w555');
INSERT INTO `study`.`user` (`index`, `user_id`, `user_name`, `password`) VALUES ('2', '1002', '二毛', 'w558');
INSERT INTO `study`.`user` (`index`, `user_id`, `user_name`, `password`) VALUES ('3', '1003', '三毛', 'w553');
-- 上面也可以这样写
USE `study`;	-- 选择使用study数据库
INSERT INTO `user` (`index`, `user_id`, `user_name`, `password`) VALUES ('1', '1001', '大毛', 'w555');
INSERT INTO `user` (`index`, `user_id`, `user_name`, `password`) VALUES ('2', '1002', '二毛', 'w558');
INSERT INTO `user` (`index`, `user_id`, `user_name`, `password`) VALUES ('3', '1003', '三毛', 'w553');

在这里插入图片描述

2.3、删除数据表

MySQL数据表的通用语法:

DROP TABLE table_name ;

与君共享

👉👉👉👉👉最后,有兴趣的小伙伴可以点击下面链接,这里有我整理的MySQL学习博客内容,谢谢~ 🌹🌹🌹🌹🌹

《MySQL数据库学习》

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

apple pencil到底值不值得买?好用的iPad电容笔

随着ipad平板型号版本的不断更新&#xff0c;其的功能越来越多&#xff0c;现在它的性能已经可以和笔记本电脑相媲美了。而现在&#xff0c;随着技术的进步&#xff0c;IPAD已经不再是单纯的娱乐&#xff0c;而是一种功能强大的学习、绘画、工作等等。要增加生产效率&#xff0…

大数据处理框架-Spark DataFrame构造、join和null空值填充

1、Spark DataFrame介绍 DataFrame是Spark SQL中的一个概念&#xff0c;它是一个分布式的数据集合&#xff0c;可以看作是一张表。DataFrame与RDD的主要区别在于&#xff0c;前者带有schema元信息&#xff0c;即DataFrame所表示的二维表数据集的每一列都带有名称和类型。 2、构…

文件上传、下载的总结

最近做了一个后台系统&#xff0c;里面有好多复杂的功能。其中就有上传的功能点&#xff0c;上传的时候&#xff0c;我们要校验上传的文件格式&#xff0c;限制上传的数量&#xff0c;自定义上传接口&#xff0c;可以拖拽上传&#xff0c;可以进行删除、预览&#xff0c;删除之…

iOS开发-Reachability网络状态

iOS开发-Reachability网络状态 Reachablity 是一个iOS下检测&#xff0c;iOS设备网络环境用的库。 监视目标网络是否可用监视当前网络的连接方式监测连接方式的变更情况 一、Reachability 在Podfile中引入 pod Reachability二、监听网络状态 先看下Reachability&#xff…

bash sh 和 ./ 的区别

bash&#xff1a; 这是Bash shell的解释器。当你使用bash script.sh运行脚本时&#xff0c;你是在告诉系统使用Bash解释器来执行脚本。这意味着脚本中的所有Bash特性都可以使用。 sh&#xff1a; 这是Bourne shell的解释器。当你使用sh script.sh运行脚本时&#xff0c;你是在告…

螺旋矩阵 II——力扣59

文章目录 题目描述法一 模拟 题目描述 法一 模拟 初始化一个二维向量&#xff0c;名为matrix&#xff0c;它有n行和n列。向量的每个元素都是一个整数&#xff0c;初始化为0。初始化二维向量的语法如下&#xff1a;vector<vector<int>> matrix(n, vector<int>…

Deformable-detr在运行make.sh文件时,报NotImplementedError: Cuda is not availabel

NotImplementedError: Cuda is not availabel 当你运行下面命令报错NotImplementedError: Cuda is not availabel&#xff0c; sh make.sh根据我的经验&#xff0c;列出几条可以排查的思路。 使用nvcc -V查看一下在当前虚拟环境中使用的cuda版本。这个版本是cuda的编译版本&a…

C++ 结构体和联合体

1.结构体 结构体是一种特殊形态的类&#xff0c;它和类一样&#xff0c;可以有自己的数据成员和函数成员&#xff0c;可以有自己的构造函数和析构函数&#xff0c;可以控制访问权限&#xff0c;可以继承&#xff0c;支持包含多态&#xff0c;结构体定义的语法和类的定义语法几…
推荐文章