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

news2024/9/20 22:51:48

在《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.coloradmin.cn/o/815389.html

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

相关文章

ts一些常用符号

非空断言操作符(!) 具体是指在上下文中当类型检查器无法断定类型时&#xff0c;一个新的后缀表达式操作符 ! 可以用于断言操作对象是非 null 和非 undefined 类型。具体而言&#xff0c;x! 将从 x 值域中排除 null 和 undefined 。 1. 赋值时忽略 undefined 和 null function…

Simulink仿真模块 - Saturation Dynamic

Saturation Dynamic将输入信号限制在动态饱和上界和下界值之间 在仿真库中的位置为&#xff1a;Simulink / Discontinuities 模型为&#xff1a; 说明 Saturation Dynamic 模块产生输出信号&#xff0c;该信号是以来自输入端口 up 和 lo 的饱和值为界的输入信号的值。 输入输…

【已解决】windows7添加打印机报错:加载Tcp Mib库时的错误,无法加载标准TCP/IP端口的向导页

windows7 添加打印机的时候&#xff0c;输入完打印机的IP地址后&#xff0c;点击下一步&#xff0c;报错&#xff1a; 加载Tcp Mib库时的错误&#xff0c;无法加载标准TCP/IP端口的向导页 解决办法&#xff1a; 复制以下的代码到新建文本文档.txt中&#xff0c;然后修改文本文…

PHP+mysql鲜花销售商城网站html5在线鲜花花店购物订购系统

花店订购管理系统&#xff0c;是基于php编程语言&#xff0c;mysql数据库开发&#xff0c;本系统分为用户和管理员两个角色&#xff0c;其中用户可以注册登陆系统&#xff0c;查看分类&#xff0c;搜索鲜花&#xff0c;查看鲜花详情&#xff0c;加入购物车&#xff0c;生成订单…

【MySQL】模具数据转移处理

系列文章 C#底层库–MySQLBuilder脚本构建类&#xff08;select、insert、update、in、带条件的SQL自动生成&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129179216 C#底层库–MySQL数据库操作辅助类&#xff08;推荐阅读&#xff0…

【phaser微信抖音小游戏开发002】hello world!

执行效果&#xff1a; 将以下代码文本内容&#xff0c;放入到game.js中即可。目录结构如下图 import ./js/libs/weapp-adapter import ./js/libs/symbolGameGlobal.window.scrollTo () > { };//防止真机出错 import Phaser from ./js/phaser//引入Phaservar {windowWidth, …

9条建议告诉你如何正确处理PCB设计布线

一、关于PCB布线线宽 1、布线首先应满足工厂加工能力&#xff0c;首先向客户确认生产厂家&#xff0c;确认其生产能力&#xff0c;如图1所示。如客户无要求&#xff0c;线宽参考阻抗设计模板。 图1 PCB板厂线宽要求 2、阻抗模板&#xff0c;根据客户提供的板厚及层数要求&…

vue中使用axios发送请求时,后端同一个session获取不到值

问题描述&#xff1a; 在登录页面加载完成后通过axios请求后端验证码接口&#xff08;这时后端会生成一个session用于保存验证码数值&#xff09;&#xff0c;当输入完用户名、密码、验证码后请求登录接口&#xff0c;报错验证码输入错误&#xff0c;打印后端保存验证码的sessi…

C1. Dual (Easy Version)(正负号转换)

题目&#xff1a;Problem - C1 - Codeforces 总结&#xff1a; 首先&#xff1a;对于全正数和全负数的数组求非减序列构造很是简单 紧接着&#xff1a;对于有正有负的数组可以将其转化为统一符号 最后符号统一方案&#xff1a; 找出绝对值最大的数并将每个数都将加上该绝对…

SSM电影推荐系统【纯干货分享,免费领源码03073】

目 录 摘 要 Abstract 第1章 前 言 1.1 研究背景 1.2 研究现状 1.3 系统开发目标 第2章 技术与原理 2.1 开发技术 2 2.2 ssm框架介绍 2 2.3 MySQL数据库 2 2.4 B/S结构 2 第3章 需求分析 3.1 需求分析 3.2 系统可行性分析 3.3 项目设计目标与原则 3.4…

添加IP白名单的方法,你知道几个?

在各种网络操作中&#xff0c;不同网站和服务可能会对来源IP地址进行限制&#xff0c;为了正常访问&#xff0c;我们需要将自己的IP地址添加到白名单中。本文将为您详细介绍添加IP白名单的几种方法以及它们之间的优劣比较&#xff0c;同时分享可能遇到的问题和解决方案。 方法…

mac 下用brew快速安装CommandLineTools

有时候用git 就会提示安装CommandLineTools &#xff0c;xcode太大又不想安装&#xff0c;怎么办呢我们可以试下下面的方式 什么是Brew&#xff1a; Brew是Mac OS X下的一个包管理器&#xff0c;可以方便地安装、升级和卸载很多常用的软件包 在mac下如何安装呢&#xff1a; …

linux网卡命名规则

Consistent Network Device Naming Linux provides methods for consistent(一致) and predictable(可预测) network device naming for network interfaces. These features change the name of network interfaces on a system in order to make locating and different…

Java8实战-总结9

Java8实战-总结9 Lambda表达式把Lambda付诸实践&#xff1a;环绕执行模式第1步&#xff1a;记得行为参数化第2步&#xff1a;使用函数式接口来传递行为第3步&#xff1a;执行一个行为第4步&#xff1a;传递Lambda 使用函数式接口PredicateConsumerFunction原始类型特化 Lambda表…

mybatis plus 的一些使用

简介 官网&#xff1a;http://mp.baomidou.com/ 参考教程&#xff1a;https://baomidou.com/pages/24112f/ MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 …

web前端框架Javascript之JavaScript 异步编程史

早期的 Web 应用中&#xff0c;与后台进行交互时&#xff0c;需要进行 form 表单的提交&#xff0c;然后在页面刷新后给用户反馈结果。在页面刷新过程中&#xff0c;后台会重新返回一段 HTML 代码&#xff0c;这段 HTML 中的大部分内容与之前页面基本相同&#xff0c;这势必造成…

同样是跨端框架,React会不会被VUE取代?

看到知乎上有比较多的类似问题&#xff0c;正好这两个框架在以往的一些项目中都有实践过&#xff0c;就借着本篇文章说说我个人的看法。 先摆个结论&#xff1a;不会&#xff0c;毕竟各有千秋&#xff0c;除非跨端框架有被更好的概念所替代&#xff0c;又或者App已经彻底过气了…

PoseiSwap:通过 RWA 的全新叙事,反哺 Nautilus Chain 生态

PoseiSwap 是 Nautilus Chain 上的首个 DEX&#xff0c;作为目前行业内模块化区块链叙事的早期奉行者&#xff0c;PoseiSwap 也得到了较高的市场关注。基于 Nautilus Chain&#xff0c;PoseiSwap 打造了一个全新的 Rollup 应用层&#xff0c;并通过零知识证明来建立全新的订单簿…

6个月、21天,GoldenDB分布式数据库核心系统落地中移动

近日&#xff0c;2023“鼎新杯”数字化转型应用大赛入围名单公示&#xff0c;山东移动基于GoldenDB分布式数据库的CRM&BOSS核心系统自主创新实践成功入选。该项目是中兴通讯与中国移动在数据库关键领域的又一个合作范例。 核心系统业务量大&#xff0c;分布式转型迫在眉睫 …

C语言指针进阶-1

本篇文章带来 1. 字符指针 2. 数组指针 3. 指针数组的相关知识详细讲解&#xff01; 如果您觉得文章不错&#xff0c;期待你的一键三连哦&#xff0c;你的鼓励是我创作的动力之源&#xff0c;让我们一起加油&#xff0c;一起奔跑&#xff0c;让我们顶峰相见&#xff01;&#…