MySQL-02-操作数据库
2.1 对数据库的操作
-
创建数据库
CREATE DATABASE (IF NOT EXISTS) brucexu;
-
删除数据库
DROP DATABASE (IF EXISTS) brucexu;
-
使用数据库
-- 如果使用的表明/字段名/数据库名称是一个特殊字符,需要加上``进行修饰 USE 'brucexu';
-
查看数据库
SHOW DATABASES;
2.2 数据库常见的数据类型
-
数值类型
数据库中的类型 占用空间(字节) 对应的Java类型 int 4 int float 4 float double 8 double decimal 以字符串形式存储的浮点类型,常用于金融计算 BigDecimal -
字符串类型
数据库中的类型 用处 长度 对应的Java类型 char 储存字符串 0~255 String varchar 储存字符串 0~65535 String text 储存大型文本内容 2^16-1 String -
时间日期
- 日期格式:YYYY-MM-DD,date
- 时间格式:HH-MM-SS,time
- 数据库常用的时间类型
- 日期时间 datetime,YYYY-MM-SS HH:MM:SS
- 时间戳格式 1970.01.01到现在为止的毫秒数
-
NULL,表示没有值,未知,使用NULL进行运算得到的结果均为NULL
2.3 数据字段属性
-
UnSigned
- 无符号的
- 声明该数据列不允许使用负数
-
ZEROFILL
- 若数据不满足设置长度,则用0进行填充
- 如int(5),5则为00005
-
自增
- 自动增长,每添加一条新的数据之后,自动在上一条记录上+1
- 通常用于设置主键,且数据类型必须为int
- 可以自定义步长和起始值
-
NOT NULL
- 数据不能为空
-
DEFAULT
- 用于设置数据的默认值
- 在没有设置指定值的情况下,该数据的值即为默认值
-
扩展内容
-
阿里巴巴数据库设计规范中规定了一个表中必须有如下几个字段
- id,id必为主键,类型为unsigned bigint其中、单表时自增、步长为1
- is_delete,标记删除标志,删除数据时不真正删除
- gmt_create,创建日期
- gmt_modified,修改日期
-
2.4 创建一张表
-
格式
CREATE TABLE [IF NOT EXISTS] `表明` ( `字段名` 列类型 [属性] [索引] [注释], `字段名` 列类型 [属性] [索引] [注释], `字段名` 列类型 [属性] [索引] [注释] )[表类型] [字符集设置] [注释];
-
示例
创建一个school数据库,库中包含student表,表中含有id、登录密码、姓名、性别、出生日期、家庭住址、email等字段
CREATE DATABASE IF NOT EXISTS `school`; USE `school`; CREATE TABLE IF NOT EXISTS `student` ( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` VARCHAR(5) NOT NULL DEFAULT '张三' COMMENT '姓名', `password` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', `sex` VARCHAR(2) NOT NULL DEFAULT '男性' COMMENT '性别', `birthday` DATETIME DEFAULT NULL COMMENT '出生日期', `address` VARCHAR(40) DEFAULT NULL COMMENT '地址', `email` VARCHAR(20) DEFAULT NULL COMMENT '电子邮箱', PRIMARY KEY(`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8;
-
常用命令
-- 查看数据库创建语句 SHOW CREATE DATABASE school; -- 查看建表语句 SHOW CREATE TABLE student; -- 描述表的结构 DESC `student`;
2.5 数据库表的类型
-
MySQL常用的表的类型主要有:MyISAM , InnoDB , HEAP , BOB , CSV
-
MyISAM和InnoDB的对比
名称 MyISAM InnoDB 事务处理 不支持 支持 数据行锁定 不支持 支持 外键约束 不支持 支持 全文索引 支持 不支持 占用空间 较小 较大,约2倍 -
总结
- MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键,如果执行大量的select,insert MyISAM比较适合。
- InnoDB:支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。
2.6 修改数据表
-
修改表名
语法: ALTER TABLE 旧表名 RENAME AS 新表名; 示例: ALTER TABLE student RENAME AS student1;
-
添加字段
语法: ALTER TABLE 表名 ADD 字段名 列属性[属性] 示例: ALTER TABLE student ADD `weight` INT(4);
-
修改字段
语法: -- modify用于修改列的属性,change用于修改字段名 ALTER TABLE 表名 MODIFY 字段名 列类型 [属性]; ALTER TABLE 表名 CHANGE 旧字段名 新字段名 属性; 示例: ALTER TABLE student MODIFY `weight` VARCHAR(20) DEFAULT '10'; ALTER TABLE student CHANGE `weight` `height` INT;
-
删除
语法: -- 删除表中的某个字段 ALTER TABLE 表名 DROP 字段名; -- 删除某个表 DROP TABLE [IF EXISTS] 表名; 示例: ALTER TABLE student DROP weight; DROP TABLE IF EXISTS student;