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



