重拾数据库记录

create database `school`
CREATE TABLE IF NOT EXISTS `student`(
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
	`birthdat` DATETIME DEFAULT NULL COMMENT '出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY(`id`) 
)ENGINE = INNODB DEFAULT CHARSET = utf8
SHOW CREATE DATABASE school --查看创建数据库的语句
SHOW CREATE TABLE student --查看student表的定义语句
DESC student --显示表的结构
ALTER TABLE teacher RENAME AS teacher1 --修改表的名称
ALTER TABLE teacher1 ADD age INT(11) --增加表的字段
ALTER TABLE teacher MODIFY age VARCHAR(11)  --修改字段的约束
ALTER TABLE teacher CHANGE age age1 INT(1) --修改字段的名字和约束
ALTER TABLE teacher DROP age1 --删除字段
DROP TABLE IF EXISTS teacher --删除表

CREATE TABLE `grade`(
	`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
	`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
	PRIMARY KEY (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

增加外键

CREATE TABLE IF NOT EXISTS `student`(
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
	`birthdat` DATETIME DEFAULT NULL COMMENT '出生日期',
	`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	`gradeid` INT(10) NOT NULL COMMENT '学生的年级',
	PRIMARY KEY(`id`) ,
	KEY `FK_gradeid` (`gradeid`),
	CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
)ENGINE = INNODB DEFAULT CHARSET = utf8

--创建表时没有外键关系
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

以上操作都是物理外键,数据库级别的外键,我们不建议使用!(避免数据库过多造成困扰!)

最佳实践

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
  • 我们想使用多张表的数据,想使用外键(程序去实现)

insert 添加语句

INSERT INTO `grade`(`gradename`) VALUES('大四')

INSERT INTO `grade`(`gradename`)
VALUES('大二'),('大一')

INSERT INTO `student`
VALUES (5,'李四','asdsa','男','2000-01-01','西安','email',3)

Update 更新语句

UPDATE `student` SET `name`='长江七号' WHERE `name`='张三' AND id BETWEEN 2 AND 5
--- AND OR  AND..BETWEEN <>

Delete 删除语句

DELETE FROM `student`--避免这样写会全部删除
DELETE FROM `student` WHERE id=1

测试delete 和 truncate区别

CREATE TABLE `test`(
	`id` INT(4) NOT NULL AUTO_INCREMENT,
	`coll` VARCHAR(20) NOT NULL,
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO `test`(`coll`) VALUES(`1`),(`2`),(`3`)
DELETE FROM `test` --不会影响自增
TRUNCATE TABLE `test` --自增会归零

DELETE删除的问题,重启数据库,现象:

  • Innodb 自增列会从1开始(存在内从当中的,断电即失)
  • MyISAM 继续从上一个自增量开始(存在文件中的,不会丢失)

DQL查询数据
(Data Query Language : 数据库查询语言)

おすすめ

転載: blog.csdn.net/qq_42650433/article/details/120742702