MySQL(2)— 数据库的基本操作
二、数据库
2-1、操作数据库(了解)
1、创建数据库
CREATE DATABASE [IF NOT EXIST] myDatabase;
2、删除数据库
DROP DATABASE `myDatabase`; -- 加反引号,表示字符串,防止和 mysql 关键字冲突
3、使用数据库
USE myDatabase;
4、查看数据库
SHOW myDatabase;
2-2、数据库的列类
数值
-
tinyint 十分小的数据 1个字节
-
smallint 较小的数据 2个字节
-
mediumint 中等大小的数据 3个字节
-
int 标准的整数 4个字节 (常用的java中的int)
-
bigint 较大的数据 8个字节
-
float 浮点数 4个字节
-
double 浮点数 8个字节 (精度问题)
-
decimal 字符串形式的浮点数 金融计算的时候使用
字符串类型
-
char 字符串,固定大小的 0-255
-
varchar 可变字符串,0-65535 常用的 String
-
tinytext 微型文本 2^8-1
-
text 大型文本 2^16-1
时间日期
java.util.Date
- data YYYY-MM-DD 日期格式
- time HH : mm : ss 时间格式
- datetime YYYY-MM-DD HH : mm : ss 最常用的时间格式
- timestamp 时间戳,1970-1-1 到当前时间的毫秒值
- year 年份表示
null
- 没有值,未知
- 不要使用NULL进行运算,结果为NULL
2-3、数据库的字段属性(重点)
Unsigned:
- 无符号整数
- 声明了该列的值,不能为负数
zerofill:
- 零填充
- 不足的位数,用0 填充。例如: int(3) , 5 — 005
自增:
- 自动在上一条记录的基础上加1(默认)
- 通常用于设计唯一的主键 id,必须是整数类型
- 可以自定义主键自增的起始值和步长
非空:
- 设置了非空 not null,则意味着不给赋值,会报错
- null,不写默认是null
默认:
- 设置默认的值
- 例如性别:不指定的话,给个默认的性别
2-4、数据库表的创建(DDL)
-- 注意事项:表的名称 和 字段,尽量用反引号 `` 包起来,防止和mysql 关键字冲突,也方便自己阅读
-- auto_increment 自增 , not null 不为空,default 默认值 , comment 注释
-- 字符串使用 单引号 \'\' ,和java不同
-- primary key (\'id\') 写在最后,可读性高
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 \'家庭住址\',
`email` VARCHAR(50) DEFAULT NULL COMMENT \'邮箱\',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8 -- 使用 innodb引擎,utf-8字符集
格式
CREATE TABLE [IF NOT EXIST] `表名`(
`字段名` 列类型 [字段属性] [索引] [注释],
)[表类型][字符集][注释]
常用命令
SHOW CREATE DATABASE `数据库名` -- 显示创建语句
SHOW CREATE TABLE `表名` -- 显示创建语句
DESC `表` -- 查看表的具体结构
2-5、数据库表的类型
-- 关于数据库引擎
-- MYISAM 早期
-- INNODB 现在默认使用
MYIAM | INNODB | |
---|---|---|
事务 | 支持(以前不支持) | 支持 |
数据行的锁定 | 不支持(表级锁) | 支持(行级锁) |
外键 | 不支持 | 支持 |
全文索引 | 支持 | 支持(从MySQL5.6版本开始支持) |
表空间大小 | 较小 | 较大,约为MYISAM的两倍 |
常规使用操作:
- MYISAM : (1)做很多count的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。
- INNODB : (1)可靠性要求比较高,或者要求事物;(2)表更新和查询都相当频繁,并且行锁定的机会比较大的情况。
设置数据库表的字符集编码
- 建表的时候,CHARSET=UTF8(推荐,通用性高)
- 在 my.ini 中设置默认的字符集编码
2-6、数据库表的修改
-- 修改表名 ALTER TABLE `旧表名` RENAME AS `新表名`
ALTER TABLE `STUDENT` RENAME AS `STUDENT1`
-- 表中添加字段 ALTER TABLE `表名` ADD 字段名 列属性(约束)
ALTER TABLE `STUDENT` ADD age INT(10)
-- 修改表 约束 ALTER TABLE `表名` MODIFY 字段名 列属性(约束)
ALTER TABLE `STUDENT` MODIFY age VARCHAR(10)
-- 修改表 字段名,约束 ALTER TABLE `表名` CHANGE 旧字段名 新字段名 [列属性(约束)]
ALTER TABLE `STUDENT` CHANGE age age1 INT(10)
-- 删除表 字段名 : ALTER TABLE `表名` DROP 字段名
ALTER TABLE `STUDENT` DROP age1
CHANGE 既可以改字段名又可以改约束,MODIFY 只能改约束!
2-7、数据库表的修改
删除
DROP TABLE IF EXIST `表名`
注意点:
- 字段名,表名,最好用 “ 包裹
- 删除,创建操作,尽量加上 IF EXIST ,防止报错,类似于Java的 if ( xxx != null )
- sql 关键字不区分大小写,但是我们用小写,还是一眼能认识
- 所有符号用英文,同Java