列类型指规定数据库中该列存放的数据类型
MySQL允许“不严格”语法,任何标点符号都可以作为日期部分之间的间隔符,如“24-01-03”、“24.01.03”、“24/01/03”都可以写入数据表
MySQL属于关系型数据库管理系统,其他包括数据库以及数据库访问管理的接口系统。数据库负责存储数据,接口系统负责管理数据库
由于不同用户对数据的容量、访问速度、数据安全性有不同的要求,为了满足不同用户的业务需求,MySQL数据库采用多种存储引擎进行数据存储。表的存储引擎也称为表类型
MySQL5.5支持的存储引擎有MyISAM、InnoDB 、HEAP、BOB、CSV等
名称 | MyISAM | InnoDB |
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约2倍 |
数据库采用多种方法来保证数据完整性,包括约束、规则和触发器
数据库主键指的是一个列或多列的组合,其值能唯一的标识表中的每一行,通过它可强制表的实体完整性
注意:
CREATE DATABASE IF NOT EXISTS MYSCHOOL;
USE MYSCHOOL;
#1.创建学生表
CREATE TABLE IF NOT EXISTS STUDENT(
STUDENTNO INT(4) UNSIGNED NOT NULL COMMENT '学号',
LOGINPWD VARCHAR(20) NOT NULL COMMENT '密码',
STUDENTNAME VARCHAR(50) NOT NULL COMMENT '学生姓名',
SEX CHAR(1) NOT NULL DEFAULT '男' COMMENT '性别',
GRADEID INT(4) UNSIGNED COMMENT '年级编号',
PHONE VARCHAR(50) COMMENT '联系电话',
ADDRESS VARCHAR(255) DEFAULT '地址不详' COMMENT '家庭住址',
BORNDATE DATETIME COMMENT '出生年月',
EMAIL VARCHAR(50) COMMENT '邮箱账号',
IDENTITYCARD VARCHAR(18) COMMENT '身份证号'
)DEFAULT CHARSET=utf8mb4 COMMENT '学生表';
#2.创建年级表
CREATE TABLE IF NOT EXISTS GRADE(
GRADEID INT(4) UNSIGNED NOT NULL COMMENT '年级编号',
GRADENAME VARCHAR(50) NOT NULL COMMENT '年级名称'
) DEFAULT CHARSET=UTF8MB4 COMMENT '年级表';
#3.创建课程表
CREATE TABLE IF NOT EXISTS `SUBJECT`(
SUBJECTNO INT(4) UNSIGNED NOT NULL COMMENT '课程编号',
SUBJECTNAME VARCHAR(50) NOT NULL COMMENT '课程名称',
CLASSHOUR INT(4) UNSIGNED COMMENT '学时',
GRADEID INT(4) UNSIGNED COMMENT '年级编号'
) DEFAULT CHARSET=UTF8MB4 COMMENT '课程表';
#4.创建成绩表
CREATE TABLE IF NOT EXISTS `RESULT`(
STUDENTNO INT(4) UNSIGNED NOT NULL COMMENT '学号',
SUBJECTNO INT(4) UNSIGNED NOT NULL COMMENT '课程编号',
EXAMDATE DATETIME NOT NULL DEFAULT NOW() COMMENT '考试日期',
STUDENTRESULT INT(4) UNSIGNED NOT NULL COMMENT '考试成绩'
) DEFAULT CHARSET=UTF8MB4 COMMENT '成绩表';
#5.创建课程表,设置表类型为MyIsam
CREATE TABLE IF NOT EXISTS `SUBJECT`(
SUBJECTNO INT(4) UNSIGNED NOT NULL COMMENT '课程编号',
SUBJECTNAME VARCHAR(50) NOT NULL COMMENT '课程名称',
CLASSHOUR INT(4) UNSIGNED COMMENT '学时',
GRADEID INT(4) UNSIGNED COMMENT '年级编号'
)ENGINE=myisam DEFAULT CHARSET=UTF8MB4 COMMENT '课程表';
#6.删除课程表
DROP TABLE IF EXISTS `SUBJECT`;
#7.把result表改名为studentresult
ALTER TABLE RESULT RENAME AS STUDENTRESULT;
ALTER TABLE STUDENTRESULT RENAME AS RESULT;
#8.给result表添加一个id字段
ALTER TABLE RESULT ADD ID INT(4) UNSIGNED NOT NULL COMMENT'成绩编号';
#9.修改result表中的id字段,改为字符串类型,允许有符号,允许为空,注释改为成绩编码
ALTER TABLE RESULT MODIFY ID VARCHAR(16) COMMENT '成绩编码';
#10.修改result表中的ID字段,ID名称改为rid,类型为int(4),零填充,默认值1
ALTER TABLE RESULT CHANGE ID RID INT(4) ZEROFILL DEFAULT 1;
#11.删除result表中的id字段
ALTER TABLE RESULT DROP RID;
#12、给学生表的联系电话字段设置为唯一约束
ALTER TABLE STUDENT ADD CONSTRAINT UQ_PHONE UNIQUE(PHONE);
ALTER TABLE STUDENT ADD CONSTRAINT UQ_STUDENTNAME UNIQUE(STUDENTNAME);
#13、给学生表设置主键,主键列为studentno
ALTER TABLE STUDENT ADD CONSTRAINT PK_STUDENTNO PRIMARY KEY(STUDENTNO);
#14、设置组合主键案例:设置课程表中的课程编号和年级编号为组合主键
ALTER TABLE `SUBJECT` ADD CONSTRAINT PK_SUBJECTNO_GRADEID PRIMARY KEY(SUBJECTNO,GRADEID);
#15、删除主键索引,不需要指定名称,因为一个表中只能有一个主键
ALTER TABLE `SUBJECT` DROP PRIMARY KEY;
#16、删除唯一索引,必须指定唯一索引的名称,因为一个表中可以有多个字段的唯一索引
ALTER TABLE `STUDENT` DROP KEY UQ_STUDENTNAME;