在数据库中,表是最重要、最基本的对象,是存储数据的基本单位。数据表从哪里来呢?数据表由关系模式转换而来。但不是简单的转换。

在设计表结构时要考虑下面几个方面:

  • 字段名要通俗易懂且具有代表性,字段名不允许重复,为了编程序方便,尽量使用英文名字。
  • 字段类型选择的原则是:根据需求选择合适的字段类型,在满足需求的情况下字段类型尽可能小。不参加数学计算的数字定义为字符串型,如学号、电话号码等。
  • 字段长度是指能容纳该字段值的最大数量,如学号为12位数字,长度设置为12;课程名可能包含10个汉字,长度就要设置为10。
  • 字符集编码选择:含有中文字符时统一采用utf8或gbk类型,以避免乱码情况的发生。

SQL语句中关键字做一些说明:

  • PRIMARY KEY用于定义主键。也可以使用多字段来定义主键。
  • COMMENT注释该字段的含义。
  • NOT NULL是非空约束。
  • DEFAULT为该字段加默认值,可以减少输入次数。
  • AUTO_INCREMENT为自增型属性,一般用作主键,数值会自动加1。
  • 当表中有外键字段时用CONSTRAINT设置外键。
  • ENGINE=InnoDB是设置该表的存储引擎,DEFAULT CHARSET=utf8是设置该表的默认字符集。
teacher

Teacher_id

Teacher_name

age Enter_time professional
10101   潘多拉 18 2018-2-1 讲师
10102 普罗米修斯 27 2018-3-5 教授
10103  波塞冬 29 2015-9-10 副教授
Department
字段名 数据类型 长度

是否空值

是否主键外键

默认值 备注
Department_id char 3 NOT NULL 主键   学校编号
Department_name varchar 10 NOT NULL     学校名称
use course;
create table department(
Department_id char(3) NOT NULL PRIMARY KEY COMMENT '学院编号',
Department_name varchar(10) NOT NULL COMMENT '学院名称'
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
teacher
字段名 数据类型 长度

是否空值

是否主键外键

默认值 备注
Teacher_id char 5 NOT NULL 主键   教师编号
teacher_name varchar 4 NOT NULL     教师姓名

Department_id char 3 NOT NULL 外键   学校编号
gender char 1 NOT NULL   性别
CREATE TABLE teacher(
Teacher_id char(5) NOT NULL PRIMARY KEY COMMENT '教师编号',
Teacher_Name varchar(4) NOT NULL COMMENT '教师姓名',
Department_id char(3) NOT NULL COMMENT '学院编号',
Gender char(1) NOT NULL DEFAULT '男' COMMENT '性别',
CONSTRAINT teacher_department FOREIGN KEY (Department_id)
REFERENCES department(Department_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
course
字段名 数据类型 长度

是否空值

是否主键外键

默认值 备注
Course_id char 4 NOT NULL 主键   课程号
course_name varchar 10 NOT NULL     课程名

capacity tinyint 4 NOT NULL    60 人数上限
Teacher_id char 5 NOT NULL  外键   教师编号
CREATE TABLE course(
Course_id char(4) NOT NULL PRIMARY KEY COMMENT '课程号',
Course_name varchar(10) NOT NULL COMMENT '课程名',
Capacity tinyint(4) NOT NULL DEFAULT 60 COMMENT '人数上限',
Teacher_id char(5) NOT NULL COMMENT '教师编号',
CONSTRAINT course_teacher FOREIGN KEY (Teacher_id)
REFERENCES teacher (Teacher_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Classes
字段名 数据类型 长度

是否空值

是否主键外键

默认值 备注
class_id char NOT NULL 主键   班级编号
class_name varchar 8 NOT NULL     班级名
Year smallint 4 NOT NULL     年度
Department_id char 3 NOT NULL  外键   学院编号
CREATE TABLE classes(
Classe_id char(8) NOT NULL PRIMARY KEY COMMENT '班级编号',
Class_name varchar(8) NOT NULL COMMENT '班级名',
Year smallint(4) NOT NULL COMMENT '年度',
Department_id char(3) NOT NULL COMMENT '学院编号',
CONSTRAINT class_department FOREIGN KEY (Department_id)
REFERENCES department (Department_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
students
字段名 数据类型 长度

是否空值

是否主键外键

默认值 备注
students_id char 12 NOT NULL 主键   学号
students_name varchar 4 NOT NULL     姓名
class_id char 4 NOT NULL  外键   班级编号
phone varchar 18  NOT NULL     电话
CREATE TABLE students(
Student_id char(12) NOT NULL PRIMARY KEY COMMENT '学号',
Student_name varchar(4) NOT NULL COMMENT '姓名',
Class_id char(4) NOT NULL COMMENT '班级编号',
Phone varchar(18) NOT NULL COMMENT '电话',
CONSTRAINT student_class FOREIGN KEY (Class_id) REFERENCES
classes (Classe_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
choose
字段名 数据类型 长度

是否空值

是否主键外键

默认值 备注
Choose_id char 11 NOT NULL 主键   auto_increment
student_id varchar 12 NOT NULL     学号
Course_id char 4 NOT NULL  外键   课程号
choose_time datetime   NOT NULL     选课时间
report int       0 成绩
CREATE TABLE choose(
Choose_id int(11) NOT NULL PRIMARY KEY
AUTO_INCREMENT,
Student_id char(12) NOT NULL COMMENT '学号',
Course_id char(4) NOT NULL COMMENT '课程号',
Choose_time datetime NOT NULL COMMENT '选课时间',
report int DEFAULT 0 COMMENT '成绩',
CONSTRAINT choose_course FOREIGN KEY (Course_id)
REFERENCES course (Course_id),
CONSTRAINT choose_student FOREIGN KEY (Student_id)
REFERENCES students (Student_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

显示表结构的命令,两种方式:

  1. DESCRIBE/DESC 表名SHOW CREATE TABLE 表名 查看表的详细信息

    • 使用DESCRIBE table_name可显示指定表的结构
    • DESCRIBE也可用DESC替代

查看数据列表命令:

show tables;

复制一个表结构有两种实现方法:

create table 新表名 like 源表
create table 新表名 select * from 源表

修改表名语法格式如下:

rename table 旧表名 to 新表名
或者:
alter table 旧表名 rename 新表名

删除表的SQL语法格式为:

drop table 表名;

注意:如果表之间存在外键约束关系,应先删除外键约束条件,再删除表,或者先删子表,再删父表。

mysql数据库 创建、查看、重命名、复制和删除的基本操作的更多相关文章

  1. ASP FSO操作文件(复制文件、重命名文件、删除文件、替换字符串)

    ASP FSO操作文件(复制文件.重命名文件.删除文件.替换字符串)FSO的意思是FileSystemObject,即文件系统对象.FSO对象模型包含在Scripting 类型库 (Scrrun.Dl ...

  2. 4.mysql数据库创建,表中创建模具模板脚本,mysql_SQL99标准连接查询(恩,外部连接,全外连接,交叉连接)

     mysql数据库创建,表创建模等模板脚本 -- 用root用户登录系统,运行脚本 -- 创建数据库 create database mydb61 character set utf8 ; -- ...

  3. ( 转)Ubuntu下创建、重命名、删除文件及文件夹,强制清空回收站方法

    Ubuntu下创建.重命名.删除文件及文件夹,强制清空回收站方法 mkdir 目录名 ——创建一个目录 rmdir 空目录名 ——删除一个空目录 rm 文件名 文件名 ——删除一个文件或多个文件 rm ...

  4. VS2012、2013使用Mysql数据库创建EF的AOD.NET实体模型

    VS2012.2013使用Mysql数据库创建EF的AOD.NET实体模型: 1.关闭VS,首先安装mysql-connector-net-6.8.3.(安装后EF创建实体模型时就可以找到Mysql的 ...

  5. 项目重命名&复制项目&删除项目

          项目重命名&复制项目&删除项目 CreateTime--2016年10月15日17:25:43 Author:Marydon 1.修改项目名或者复制的项目名 第一步: my ...

  6. MySql数据库创建表

    3.3.MySql数据库创建表 创建5个表: UserInfo用户基础表 Role 角色表 MenuInfo 菜单即控制表 Relation_Role_Menu 角色对应菜单关系表 RelaTion_ ...

  7. php简单实用的操作文件工具类(创建、移动、复制、删除)

    php简单实用好用的文件及文件夹复制函数和工具类(创建.移动.复制.删除) function recurse_copy($src,$dst) {  // 原目录,复制到的目录 $dir = opend ...

  8. MySQL数据库创建视图

    视图可以说是一种虚拟表,建立在基本表的基础上,通过关联一个表或者多个表来获取多个表中需要的字段,视图只是用来查询数据并不能用来存储数据信息. 我有以下几张表: -------image表---- -- ...

  9. Java创建、重命名、删除文件和文件夹(转)

    Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方 ...

  10. mysql数据库备份并且实现远程复制

    一.实现ssh 远程登陆 机器环境: 192.167.33.108 clent 用户:crawler 192.167.33.77 server 用户:crawler 1.客户端 生成密钥 /home/ ...

随机推荐

  1. 两种方法设置MMDVM静态组

    方法一.进入BM页面设置静态组 1.仪表盘配置页面点击下图所示进入BM 2.或是点击链接进入https://brandmeister.network 3..进入页面后点击My hotspots,显示你 ...

  2. 运维、python、docker视频教程

    https://space.bilibili.com/97139894/?spm_id_from=333.788.b_7265636f5f6c697374.13 https://www.bilibil ...

  3. CentOS8.1操作系下使用通用二进制包安装MySQL8.0(实践整理自MySQL官方)

    写在前的的话: 在IT技术日新月异的今天,老司机也可能在看似熟悉的道路上翻车,甚至是大型翻车现场!自己一个人开车过去翻个车不可怕,可怕的是带着整个团队甚至是整个公司一起翻车山崖下,解决办法就是:新出现 ...

  4. mysql基础之-mysql锁和事务(七)

    0x01 MySQL锁: 执行操作时施加锁的模式 读锁:用户在读的时候施加的锁,为防止别人修改,但是用户可以读,还被称为共享锁 不会对其他用户进行阻塞 理解: ----->(这里的不阻塞,是可以 ...

  5. Prometheus监控Docker Swarm集群(一)

    Prometheus监控Docker Swarm集群(一) cAdvisor简介 为了解决容器的监控问题,Google开发了一款容器监控工具cAdvisor(Container Advisor),它为 ...

  6. 微信小程序实现连续扫码功能(uniapp)

    注:本文使用的是 uniapp 语法. 微信小程序提供了扫码API:wx.scanCode,但它只能扫一次码,想要实现连续扫码,需要借用 camera 组件.camera 组件不仅能拍照,还具有扫码功 ...

  7. 说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别。

    Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派 遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当 ...

  8. EIGRP-14-EIGRP的命名模式

    从IOS 15.0(1)M版本开始,工程师可以在路由器上使用命名模式(Named Mode)配置EIGRP进程.按照IPv4和IPv6,通过AS号来配置EIGRP进程的做法称为经典模式(Classic ...

  9. C语言视频教程下载(百万年薪程序员录制,免费公开)

    <C/C++语言高性能服务开发基础>您可以自由下载.传播.发布或其它商业用途. 视频文件共13.6G,提供了QQ群文件和百度网盘两种方法,建议采用QQ群文件下载,速度较快. 一.下载方法 ...

  10. 小孩学习编程的绝佳游戏——CodeMonkey

    CodeMonkey于2014年1月在以色列成立.它的愿景是建立一个全球性的学习平台,让孩子们通过游戏的方式学习.发现.创造和分享,同时在此过程中获得编程这一项21世纪必备的技能. 通常提到CodeM ...