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

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

一、数据库操作

1.1、创建数据库

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

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

CREATE DATABASE 数据库名;

MySql005——使用SQL创建数据库和表_第1张图片

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 设置后,无法插入负数。
*/

MySql005——使用SQL创建数据库和表_第2张图片

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');

MySql005——使用SQL创建数据库和表_第3张图片

2.3、删除数据表

MySQL数据表的通用语法:

DROP TABLE table_name ;

与君共享

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

《MySQL数据库学习》

你可能感兴趣的:(#,MySql,数据库,sql,oracle)