狂神说MySQL系列连载课程学习笔记
二.操作数据库
1.操作数据库----》2.操作数据库中的表----》3.操作表中数据
2.1操作数据库(了解)
MySQL 关键字不区分大小写
-
创建数据库
-
CREATE [IF NOT EXISTS] DATABASE +名称 --如果不存在才创建,【】里的是表示可选的
-
删除数据库
-
DROP DATABASE [IF EXISTS] westos -
-
使用数据库
use +名称
use `school`
- 查看数据库
show databases; --查看所有的数据库
如果表名或者字段是特殊字段 加``
2.2数据库的列类型
数值 INT(4)
- tinyint 1个字节 非常小的数据
- smallint 2个字节 较小的数据
- mediumint 3个字节 中等的
- int 4个字节 标准的整数
- bigint 8个字节 较大的数据
- float 4 浮点数
- double 8 浮点数
- decimal 字符串的浮点数 金融计算
字符串 - char 大小固定字符串 0~255
- varchar 可变字符串 0~65535 对应String
- tinytext 微型文本 2^8 -1
- text 文本串 2^16 -1 保存大文本
时间日期
- data YYYY-MM-DD
- time HH:mm:ss
- datatime YYYY-MM-DD HH:mm:ss 最长用的时间格式
- timetamp 时间戳 1970.1.1到现在的毫秒数
- year 年份表示
null
- 没有值 空置
- 不要使用null运算
2.3数据库的字段属性(重点)
unsigned:
- 无符号整数
- 作用就是 该列不能为负数
zerofill:
- o填充的
- 不足的位数用0来填充
自增 AUTO_INCREMENT
- 自动在上一条记录上加1(默认)
- 可以用来设置主键 必须是整数类型
- 可以自定义设计主键的起始值和步长
非空 NOT NULL
- 设置为not null ,如果不给它赋值 就会报错
- 如果不填值 默认为null(与这个字段无关)
默认
- 设置默认值
- eg:sex 默认为 男
2.4操作数据库中的表
-
表的名称和字段尽量使用``括起来
-
字符串使用单引号括起来!
-
所有的语句后而加,( 英文的),最后一个不用加
-
PRIMARYKEY主键,–般一个表只有一个唯一-的主键!
-
ENGINE=INNODB 是表类型
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 '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
SHOW CREATE TABLE student --查看创建表的语句
SHOW CREATE DATABASE school–查看创建数据库的语句
DESC student --查看表的结构
1)关于数据库引擎
默认使用 INNODB
早些年使用 MyISAM
MyISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大 |
MyISAM 节约空间 速度快
INNODB 安全行高 事物处理 多表多用户操作
- 物理存在空间
所有数据文件都在data目录
数据库引擎在文件上的区别
- INNODB MySQL-8.0没有.frm表结构文件,并入.ibd文件中了
.frm 表结构定义文件
- MyISAM
.MYD 数据文件
.mYI 索引文件 - 设置数据库字符集编码
默认的字符集编码不支持中文
可以在创表时设置
也可以在my.ini 里配置
2.5修改删除表
修改
alter table student rename stu --修改表名
alter table 表名 add 字段名 列属性 --增加表字段
alter table 表名 modify 字段名 列属性 --修改表的字段的类型和约束 ,不能重命名
ALTER TABLE stu MODIFY age1 VARCHAR(11)
alter table 表名 change 字段名 新字段名 列属性--字段重命名
ALTER TABLE stu CHANGE age1 age INT(1)
alter table 表名 drop age --删除表的字段
ALTER TABLE stu DROP age
删除
drop table [if exists] 表名
- 创建删除 操作 尽量加上判断