在《MySql000——MySql数据库的下载、安装以及使用图形化工具创建数据库和表》中,我们使用图形化工具MySQL
Workbench创建数据库和表,下面我们将使用SQL来实现这一过程
使用 create 命令创建数据库,语法如下:
CREATE DATABASE 数据库名;
要使用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的标准写法。
DROP DATABASE <数据库名>;
USE <数据库名>;
数据库和表之间的关系是:一个数据库中包含多张表。
使用 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 设置后,无法插入负数。
*/
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
:可选的列约束,如NULL
、NOT NULL
、DEFAULT
等。CONSTRAINT constraint_name PRIMARY KEY
:指定主键约束。INDEX index_name
(可选):为指定的列创建索引。FOREIGN KEY
(可选):指定外键约束,并指定参考的表和列。ENGINE engine_name
:指定表使用的存储引擎,如InnoDB
、MyISAM
等。DEFAULT CHARSET character_set_name
(可选):指定表的默认字符集。关于什么是主键约束、外键约束、索引、存储引擎(参考1、参考二)后续在学习,这里主要掌握通用写法,了解规范写法
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');
MySQL数据表的通用语法:
DROP TABLE table_name ;
最后,有兴趣的小伙伴可以点击下面链接,这里有我整理的MySQL学习博客内容,谢谢~
《MySQL数据库学习》