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 : 数据库查询语言)