在数据库中,数据表是最重要、最基本的操作对象,是数据存储的基本单位。
数据表被定义为列的集合,数据在表中按照行和列的形式来组织和存储。每一行代表一条唯一的记录。
创建数据表
创建数据表的过程,是定义数据表结构的过程。包括数据表名、字段名、字段数据类型、字段约束条件、默认值、存储引擎、字符集等。
创建数据表的语法如下:
CREATE TABLE 表名 ( 字段名1 字段1数据类型 [字段1约束条件1] [字段1约束条件2] ..., 字段名2 字段2数据类型 [字段2约束条件1] [字段2约束条件2] ..., 字段名3 字段3数据类型 [字段3约束条件1] [字段3约束条件2] ..., ... [表约束条件] )[存储引擎] [字符集] [表注释];
表名:数据表的名称。一般使用英文字母、数字、下划线命名。不区分大小写。最好不要使用SQL语言中的关键字,如果必须使用,需要在表名前后添加反引号`。
字段名:数据表中的列名称。一般使用英文字母、数字、下划线命名。不区分大小写。最好不要使用SQL语言中的关键字,如果必须使用,需要在字段名前后添加反引号`。
字段数据类型:数据表中的列存储的数据类型。常用的数值类型(int、double、decimal等)、字符类型(char、varchar、text等)、日期与时间类型(date、time、datetime等)三大类。
字段约束条件:对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。常见的约束条件有非空约束、默认值约束、主键约束、外键约束、唯一性约束、自增长约束、零填充约束等。同一个字段,可以设置多个约束条件。同一个字段,可以有多个字段约束条件。
表约束条件:对表中的数据作出限制,来确保表的数据的完整性、唯一性。常见的表约束条件有主键约束。同一张表,可以有多个表约束条件。
存储引擎:为表设置数据处理器。不同的数据处理器,提供了不同的特性及功能。常见的存储引擎有MyISAM、InnoDB、MEMORY等。
字符集:字符在数据库中的存储格式,比如占多少空间,支持哪些字符等等。常见的字符集有GBK、UTF-8等。
创建数据表示例:
CREATE TABLE `student` ( `student_id` varchar(50) NOT NULL COMMENT '学生编号', `student_name` varchar(100) NOT NULL DEFAULT '' COMMENT '学生姓名', `gender` varchar(10) NOT NULL DEFAULT '' COMMENT '性别', `birth_day` date NOT NULL COMMENT '生日', `age` int NOT NULL DEFAULT 0 COMMENT '年龄', `class_id` varchar(50) NOT NULL DEFAULT '' COMMENT '班级编号', `score` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '数学成绩', `teacher_id` varchar(20) COMMENT '老师编号', PRIMARY KEY (`student_id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='学生';
表名
表名使用规范:
- 不区分大小写;
- 以字母开头,由字母、数字、下划线(_)组成;
- 长度一般不超过64位(MySQL8.0);(不同数据库类型、同一类型数据库不同版本有不同的要求)
- 表名尽量不要使用数据库的关键字;(如果要使用,需要在表名两边添加`)
- 表名尽量不要使用中文;
- 表名一般支持修改,但也建议在创建前要慎重,不到万不得已尽量不修改;
- 同一数据库下不可重复,不同数据库之间可以重复(使用数据库作为前缀区分);
- 例如:teacher、teacher1、school_teacher1、teacher_2022;
字段名
字段名使用规范:
- 不区分大小写;
- 以字母开头,由字母、数字、下划线(_)组成;
- 长度一般不超过64位(MySQL8.0);(不同数据库类型、同一类型数据库不同版本有不同的要求)
- 字段名尽量不要使用数据库的关键字;(如果有使用,需要在字段名两边添加`)
- 字段名尽量不要使用中文;
- 字段名一般支持修改,但也建议在创建前要慎重,不到万不得已尽量不修改;
- 同一张表内不可重复,不同表之间可以重复;
- 例如:teacherid、teacher_id、TeacherId2022;
复制表
方法一:完整复制表结构,不包括数据。
create table school.student_bak like school.student;
方法二:复制表结构(不包括主外键、索引)及数据。
create table school.student_bak as select * from school.student;
方法三:复制表结构(不包括主外键、索引)。
create table school.student_bak as select * from school.student where 1=2;
本站所有内容均为原创,本站保留所有权利。仅允许非商业用途的转载,但必须注明来源网站、作者、来源链接!否则,由此造成的一切后果,由转载方承担!
干货分享、技术提升、面试笔试、学习交流,欢迎关注公众号:xuesql。QQ学习交流群:209942678。