MySQL---操作数据库
操作数据库--->操作数据库中的表--->操作数据库中表的数据
1.操作数据库
1.1、创建数据库
create database [if not exists] database_name;
1.2、删除数据库
drop database if exists database_name;
1.3、使用数据库
-- 如果你的表名或者字段名是一个特殊字符,就需要带 ``这个符号
use `school`
1.4、查看数据库
show databases; -- 查看所有的数据库
2.数据库的列类型
2.1、数值
-
tinyint:十分小的数据 1个字节
-
smallint:较小的数据 2个字节
-
mediumint:中等大小的数据 3个字节
-
int:标准的整数 4个字节 常用的
-
bigint : 较大的数据 8个字节
-
float:单精度浮点数 4个字节
-
double:双精度浮点数 8个字节
-
decimal:字符串形式的浮点数 金融计算的时候一般使用这个类型
注意:对于int类型,int(M),这个M指示的是最大显示宽度,并不是限制你只能插入规定的长度为M的数据,比如Int(1),可以插入1,也可插入100、1000。
2.2、字符串
-
char:字符串的大小固定 0-255
-
varchar:可变字符串 0-65535 对应Java中的String
-
tinytext:微型文本 2^8-1
-
text:文本串 2^16-1 保存大的文本
2.3、时间日期
java.util.Data
-
date YYYY-MM-DD,日期格式
-
time HH:mm:ss,时间格式
-
datatimw YYYY-MM-DD HH:mm:ss ,最常用的时间格式
-
timestamp 时间戳,1970.1.1到现在的毫秒数
-
year 年份表示
2.4、null
-
没有值,未知
-
注意,不要使用NULL进行计算,结果为NULL
3.数据库的字段属性
Unsigned:
-
无符号的整数
-
声明了该列不能声明为负数
zerofill:
-
0填充
-
不足的位数,使用0来填充,比如 定义int(3) , 5 ---- 005
自增:
-
通常理解为自增,自动在上一条记录的基础上+1(默认)
-
通常用来设计唯一的主键,必须是整数类型
-
可以自定义设计主键自增的起始值和步长
非空:
-
假设设置为 not null,如果不给它赋值,就会报错
默认:
-
设置默认的值
-
如果不指定该列的值,则会有默认的值
4.拓展
每个表都必须存在以下五个字段,做项目要用的,表示一个记录存在的意义:
id 主键
`version` 乐观锁
id_delete 伪删除
gmt_create 创建时间
gmt_updat 修改时间
5.创建数据库表
书写创建数据库表的语句的时候需要注意:
-
使用英文的圆括号"()"
-
表的名称和字段尽量使用 `` 括起来
-
字符串使用单引号或者双引号括起来
-
所有的语句后面加 "," 注意这个逗号应该是英文的,最后一个语句不用加
-
auto_increment表示自增
-
primary key 表示主键,最好放在最后面,能够让人一眼看到哪个属性是主键
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 '' 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
格式:
create table [if not exists] `表名` ( `字段名1` 列类型 [属性] [索引] [注释], `字段名2` 列类型 [属性] [索引] [注释], `字段名3` 列类型 [属性] [索引] [注释], …… `字段名` 列类型 [属性] [索引] [注释] )[表类型][字符集设置][注释]
6.三个常用的命令
show create database school; show create table student; desc student;
1.查看创建数据库的语句
show create database school; CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8 */'
2.查看创建数据库表的语句
show create table student; CREATE TABLE `student` (\n `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` varchar(30) NOT NULL DEFAULT '' COMMENT '姓名', `pwd` varchar(20) NOT NULL DEFAULT '' 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
3.显示表的结构:
desc student; 'id', 'int(4)', 'NO', 'PRI', NULL, 'auto_increment' 'name', 'varchar(30)', 'NO', '', '', '' 'pwd', 'varchar(20)', 'NO', '', '', '' 'sex', 'varchar(2)', 'NO', '', '', '' 'birthday', 'datetime', 'YES', '', NULL, '' 'address', 'varchar(100)', 'YES', '', NULL, '' 'email', 'varchar(50)', 'YES', '', NULL, ''
7.数据表的类型
-- 关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用
*/
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为MYISAM的2倍 |
常规的使用操作:
-
MYISAM 节约空间,速度较快
-
INNODB 安全性高,事务的处理,多表多用户操作
在物理空间存在的位置:
-
所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库
-
本质还是文件的存储
MySQL引擎在物理文件上的区别:
-
InnoDB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
-
MYISAM对应的文件
-
*.frm文件 - 表结构的定义文件
-
*.MYD - 数据文件(data)
-
*.MYI - 索引文件(index)
-
设置数据库表的字符集编码:
CHARSET=utf8
不设置的话,会是mysql的默认字符编码(不支持中文)
8.修改删除表
修改
-- 修改表名 alter table table_old_name rename as table_new_name -- 增加表的字段 alter table table_name add 字段名 列属性 -- 给表的字段增加外键约束 alter table table_name add constraint 约束名称 foreign key (`字段名称`) references table_name (`字段名称`) -- 修改表的字段(重命名、修改约束) alter table table_name modify 字段名字 [字段属性] alter table teacher modify age varchar(11) -- 修改约束 alter table table_name change 旧的字段名 新的字段名 [字段属性] alter table teacher change age age1 int(1) -- 字段重命名 -- 删除表的字段 alter table table_name drop 字段名 alter table teacher1 drop age1
change用于字段重命名
modify用来修改字段类型和约束
删除
drop table if exists table_name
所有的创建和删除操作尽量加上判断 ,以免报错
注意点:
-
`` 字段名,使用这个反引号括起来
-
注释 -- /**/
-
-
所有的符号用英文符号,不要用中文符号。