MySQL基础03
-- 容易发生的错误情况:设置了null还设置 DEFAULT(设置了空并添加默认值)
-- 一些括号,`号,以及逗号都得切换英文
-- 一行一行的检查
SHOW CREATE DATABSE school -- 查看创建数据库的语句
CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8 */
SHOW CREATE TABLE student -- 查看student数据表的定义语句
CREATE TABLE `student` (
`id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` varchar(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`sex` varchar(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` datetime DEFAULT NULL COMMENT '出生日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
DESC student -- 显示表的结构
2.5数据表的类型
InnoDB 默认使用
MyISAM 早些年使用的
MyISAM | INNODB | |
---|---|---|
实务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为前者的两倍 |
常规使用操作:
- MyISAM 节约空间,速度较快
- INNODB 安全性高,支持事务的处理,多表多 用户操作
在物理空间存在的位置
所有的数据库文件都存在data目录下
本质还是文件的存储
MySQL引擎在物理文件下的区别
- INNODB在数据库表中只有一个*.frm文件,以及上级目录的ibdata1文件
- MYISAM对应文件
- *.frm 表结构的定义文件
- MYD 数据文件(data)
- MYI 索引文件(index)
设置数据库表的字符集编码
CHARSET=utf8
不设置的话,会是mysql默认的字符集编码(不支持中文)
2.6修改删除表
修改、删除
ALTER TABLE teacher RENAME AS LTT -- 修改表名
-- teacher旧表名
-- LTT新表名
-- 增加表的字段
ALTER TABLE LTT ADD age INT(11)
-- age 字段名
-- (11)列属性
-- 修改表的字段(重命名 修改约束)
ALTER TABLE LTT MODIFY age varchar(11)-- 修改约束
ALTER TABLE LTT CHANGE age age1 INT(1)-- 字段重命名
字段重命名,修改字段类型和约束
-- 修改表的字段
ALTER TABLE LTT DROP age1
-- 删除表
DROP TABLE [IF EXISTS] LTT
-- 所有的创建和删除操作尽量加上判断,以免报错
3.MySQL数据管理(重点)
3.1外键(了解)
方式1,在创建表的时候,增加约束(麻烦,比较复杂)
删除有外键关系的表的时候,必须要先删除引入别人的表(从表),再删除被引用的表
CREATE TABLE `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`gradeid` INT(10) DEFAULT NULL COMMENT '学生的年级',
`birthday` DATETIME DEFAULT 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`)
-- ADD CONSTRAINT添加约束
-- FOREIGN KEY外键(作为外键的字段)
-- REFERENCES引用
以上的操作都是物理外键,数据库级别的外键,我们不建议使用(避免数据库过多造成困扰,这里了解即可)
最佳实践:
- 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
- 想使用多张表的数据,想使用外键(程序去实现)
3.2 DML语言(全部记住)
- 即数据库操作语言
- 数据库意义:数据存储,数据管理
3.3添加
- insert 添加
-- 插入语句(添加)(十分常用的话)
INSERT INTO 表名([字段名1,字段名2])VALUES('值1'),('值2')
INSERT INTO `grade`(`gradename`) VALUES('12')
-- 在已有的字段名中添加
-- 由于主键自增我们可以省略(如果不写表的字段,他就会一一匹配)
INSERT INTO 表名 VALUES('值1'),('值2')
-- 一般写插入语句,我们一定要数据和字段一一对应
-- 插入多段字符
INSERT INTO `grade`(`gradename`) VALUES('大一'),('大二'),('大三'),('大四')
INSERT INTO `student`(`name`,`sex`,`gradeid`)VALUES('张三','男','001'),('张1','男','002'),('张2','男','003')
注意事项:
- 字段是可以省略的,但是后面的值必须要一一对应,不能少
- 可以同时插入多条数据
3.4修改
- update 修改
update 修改谁 (条件) set 原来的值=新值
-- 修改数据
UPDATE `student` SET `name`='傻逼' WHERE id='1';
-- 所有的name全改了
UPDATE `student` SET `name`='傻逼'
-- 修改多个属性
UPDATE `student` SET `name`='傻逼',`sex`='女' WHERE id='1';
操作符 | 含义 | 范围 | 结果 |
---|---|---|---|
= | 等于 | ||
<>或者!= | 不等于 | ||
> | |||
< | |||
>= | |||
<= | |||
BETWEEN…and… | 在某个范围内 | [2,5] | |
AND | &&和 | ||
OR | ||或 |
-- 通过多个条件定位数据
UPDATE `student` SET `name`='傻逼',`sex`='女' WHERE `name`='张三' AND sex='女'
- 数据库的列尽量加上 ` 符号
- 条件,筛选的条件,如果没有指定则会修改所有的列
- value是一个具体的值,也可以是一个变量
- 多个设置的属性之间,使用英文逗号隔开