操作数据库>操作数据库中的表>操作数据库中的表的数据
mysql关键字不区分大小写
一、操作数据库
-
创建数据库
CREATE DATABASE [IF NOT EXISTS] test1
-
删除数据库
DROP DATABASE [IF EXISTS] test1
-
使用数据库
use `school` -- 如果表名或字段名是一个特殊字符,就需要带``加以区分
-
查询所有数据库
SHOW DATABASES -- 查看所有数据库
最后要对照SQLyog可视化操作
二、数据库的属性类型
数值
类型 | 描述 | 字节 |
---|---|---|
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 |
时间日期
java.util.Date
- date YYYY-MM-DD , 日期
- time HH:mm:ss ,时间
- datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
- timestamp 时间戳 , 1970.01.01到现在的毫秒数 也较为常用
- year 年份表示
三、数据库的字段属性(重点)
1、Unsigned:
- 无符号的整数
- 规定该列数据不能声明成负数
2、zerofill:
- 该列数据,不足的位数使用0来填充(int(3) ,5 -> 005)
3、自增:
- 自动在上一条基础上+1(默认)
- 通常用来设置唯一的主键~ index,必须是整数类型
- 可以自定义设计主键自增的起始值和步长
4、非空:
- 假设设置为not null,如果不给它赋值,就会报错
- null,如果不填写,默认值为null
5、默认(default)
- 设置默认的值
- 如果不指定该列的值,则会由默认的值
四、创建数据库表(SQl创建)
/*
目标:创建一个school数据库中的student表
创建student表(列,字段) 使用SQL创建
内容:学号int 登陆密码varchar(20) 姓名,性别,出生日期,家庭住址,email
注意点:使用英文(),表的名称 和 字段用 `` 括起来
Auto_INCREMENT 自增
字符串使用英文单引号''括起来
所有语句后面加英, 最后一句不用加
PRIMARY KEY 主键,一般最后加(明显)
*/
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(5) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`sex` VARCHAR(3) NOT NULL COMMENT '性别',
`birthday` DATE DEFAULT NULL COMMENT '出生日期',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`address` VARCHAR(30) DEFAULT NULL COMMENT '住址',
`email` VARCHAR(30) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
格式:
CREATE TABLE [IF NOT EXISTS] `表名`(
`字段名` 列表型 [属性] [索引] [注释comment],
`字段名` 列表型 [属性] [索引] [注释comment],
...
`字段名` 列表型 [属性] [索引] [注释comment],
[PRIMARY KEY(`主键名`)]
)[表类型] [字符集设置] [注释]
逆向操作查看创建语句
SHOW CREATE DATABASE school -- 查看创建数据库的语句
-- CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8 */
SHOW CREATE TABLE student -- 查看创建表的语句
DESC student -- 显示表的结构
五、数据表的类型(引擎)
-- 关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用
*/
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持(表锁定) | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表的空间大小 | 较小 | 较大(约两倍) |
优点 | 节约空间,速度较快 | 安全性高,支持事务的处理和多表多用户操作 |
在物理空间上的存储
所有的数据库文件都存在data目录下,一个目录就对应一个数据库
本质还是文件的存储
MySQL 引擎在物理文件上的区别
- INNODB 在数据库中只有一个*.frm文件,以及上级目录下的 ibdata1 文件
- MYISAM 对应文件
- *.frm:表结构的定义文件
- *.MYD:数据文件(data)
- *.MYI:索引文件(index)
六、修改和删除表及其字段
修改
ALTER TABLE teacher RENAME AS teacher1 -- 修改表名
ALTER TABLE teacher1 ADD age INT (3) -- 增加表的字段
-- 修改表的字段(重命名和修改约束 change和modify)
ALTER TABLE teacher1 MODIFY age VARCHAR(11) -- 修改约束
ALTER TABLE teacher1 CHANGE age age1 INT(11) -- 字段重命名
-- 注意区分modify和change的区别
删除
ALTER TABLE teacher1 DROP age1 -- 删除表的字段
DROP TABLE IF EXISTS teacher1 -- 删除表