操作数据库
操作数据库
操作数据库 > 操作数据库中的表 > 操作数据库中表的数据
mysql关键字不区分大小写
操作数据库
创建数据库
create database if not exists yt;
删除数据库
drop database if exists yt;
使用数据库
-- ` 键 在tab 键的上面,如果你的表名或字段名是一个特殊字符,就需要带``
use `yt`;
查看数据库
show databases; -- 查看数据库
学习思路:
- 对照sqlyog可视化历史记录查看sql
- 固定的语法或关键字必须要强行记住!
数据库的列类型
数值
类型 | 备注 | 大小 |
---|---|---|
tinyint | 十分小的数据 | 1个字节 |
smallint | 较小的数据 | 2个字节 |
mediumint | 中等的数据 | 3个字节 |
int | 标准的整数(常用) | 4个字节 |
bigint | 较大的数据 | 8个字节 |
float | 浮点数 | 4个字节 |
double | 浮点数(精度问题) | 8个字节 |
decimal | 字符串形式的浮点数 |
字符串
类型 | 备注 | 大小 |
---|---|---|
char | 字符串固定大小 | 0~255 |
varchar | 可变字符串(常用) | 0~65535 |
tinytext | 微型文本 | 2^8-1 |
text | 文本串(保存大文本) | 2^16-1 |
时间日期
类型 | 备注 | 格式 |
---|---|---|
date | 日期 | YYYY-MM-DD |
time | 时间 | HH:mm:ss |
datetime | 最常用的时间格式 | YYYY-MM-DD HH:mm:ss |
timestamp | 时间戳(常用) | 1970.1.1到现在的毫秒数 |
null
- 没有值,未知
- 注意,不要使用NULL进行运算,结果为NULL
数据库的字段属性(重点)
Unsigned:
- 无符号的整数
- 不能申明为负数
zerofill:
- 0填充的
- 不足的位数,使用0来填充
自增:
- 通常理解为自增,自动在上一条记录的基础上+1(默认)
- 通常用来设计唯一的主键~ index ,必须是整数类型
- 可以自定义设计主键自增的起始值和步长
非空:
- 假设设置为 not null ,如果不给它赋值,就会报错!
- null,如果不填写,默认是null!
默认:
- 设置默认的值!
- 如果不指定该列的值,则会有默认的值!
扩展:
/*每一个表,都必须存在以下五个字段!未来做项目用的,表示一个记录存在意义!
id 主键
version 乐观锁
is_delete 伪刪除
gmt_create 创建时间
gmt_update 修改时间
*/
操作数据库表
创建数据库表(重点)
格式:
create table [if not exists] `表名`(
`字段名` 列类型 [属性] [索引] [注释],
`字段名` 列类型 [属性] [索引] [注释],
`字段名` 列类型 [属性] [索引] [注释],
......
`字段名` 列类型 [属性] [索引] [注释],
)[表类型] [字符集设置] [注释]
例子:
-- 注意:使用英文(),表的名字和字段尽量使用``括起来
-- 所有语句后面加,(英文的),最后一个不用加
--
-- NOT NULL 不为空
-- AUTO_INCREMENT 自增
-- DEFAULT 默认值
-- COMMENT 注释
create table if not exists `student`(
`id` int(10) 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 '家庭住址',
`email` varchar(50) default null comment '邮箱',
primary key (`id`)
)engine =innodb default charset=utf8
常用命令:
show create database school -- 查看创建数据库的语句
show create table student -- 查看创建数据库表的语句
desc student -- 显示表的结构
数据库表的类型
数据库引擎
- InnoDB 默认使用
- MyISAM 早些年使用
MyISAM | InnoDB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约2倍 |
常规使用操作:
- MyISAM:节约空间、速度较快
- InnoDB:安全性高、事物的处理、多表多用户 操作
在物理空间存在的位置
所有的数据库文件都存在data目录下,本质还是文件的存储!一个数据库对应一个文件夹!
MySQL引擎在物理文件上的区别
-
InnoDB:所有的表都保存在同一个数据文件中,在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1 文件
-
MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。
-
.frm(文件存储表定义)
-
MYD(MYData,存储数据文件)
-
MYI(MYIndex,存储索引文件)
-
设置数据库表的字符集编码
charset=utf8
不设置的话,会是mysql默认的字符集编码 (不支持中文)
MySQL的默认编码是Latin1,不支持中文
在mysql的安装目录下找到my.ini,打开my.cnf以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭。
修改删除表
修改
-- 修改表名
alter table 旧表名 rename as 新表名
-- 增加表的字段
alter table 表名 add 字段名 列属性
-- 修改表的字段 (重命名,修改约束)
alter table 表名 modify 字段名 列属性 -- 修改约束
alter table 表名 change 旧字段名 新字段名 [列属性] -- 重命名
-- 删除表的字段
alter table 表名 drop 字段名
删除
-- 删除表(如果表存在再删除)
drop table if exists 表名
所有创建和删除操作尽量加上判断,以免报错。
注意:
- ` ` 字段名,使用这个包裹起来
- 注释 -- /**/
- sql关键字大小写不敏感,建议大家写小写
- 所有的符号全部用英文!