关系型数据库 SQL 非关系型数据库 NoSQL(Not noly sql) 常见:redis, MongDB
每行都必须带;
结尾
-- 进入 mysql -uroot -p -- 修改用户名密码(实际是对存储密码的表的修改) update mysql.user set authentication_string=password('') where user = 'root' and Host = 'localhost'; -- 刷新权限 flush privileges; -- 展示所有数据库 show databases; -- 切换数据库 mysql> use school Database changed -- 展示所有的表 show tables; -- 描述表中的行列等信息 desc student;-- student是表名
DDL, DML, DQL, DCL D...L :数据库 ... 语言
定义,管理,查询, 控制
操作数据库,操作表,操作数据
创建
create database 数据库名 ; -- 加判断 create database if not exists 数据库名 ;
删除
drop database 数据库名 ; drop database if exists 数据库名 ;
使用
-- 切换数据库 use 数据库名 ; -- 如果对象名称为一个特殊字符或字段(和sql系统字段有重复,则增加``) select `user` from student; -- user是student表中的一个属性
查看数据库
show databases;
常用:
int 对应 java中的int
varchar 对应 String
text 用于存储长文本
timestamp 为时间戳,
datetime常用
数据库中int类型,设置的Length只和字段属性中的Zerofill有关(补几个0),设置为int之后,最大数据量就是4字节,和设置的Length无关。
数值
字符串
时间日期
java.util.Date
null
Unsigned:无符号整数,声明不能为负数
Zerofill: 0填充,不足的位数,使用0填充
Auto Incr: 自增, 自动在上一条记录的基础上加1,用来设置唯一主键,理解为index,必须是整数类型,
可以自定义主键的初始值和增量(在sqlyog创建表格的 advanced里设置)
Not null: 当设置为not null时,如果不给该属性赋值,就会报错。
Default:设置默认值
每张表中,必须存在的5个属性(项目阶段):表示一个记录存在的意义
id 主键 `version` 乐观锁 is_delete 伪删除 gmt_create 创建时间 gmt_update 修改时间
-- 字符串使用单引号 -- 所有的语句后加逗号, 最后一个不用加 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 'address', `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8
格式:
create table 表名( 属性名 类型声明(类型长度) 字段属性, primary key (属性名) -- 最后一个没有,号 )表类型 字符编码
查看建好的数据库的定义 SHOW CTEATE TABLE 表明
InnoDB | MyISAM | |
---|---|---|
事务支持 | 支持 | 不支持 |
外键支持 | 支持 | 不支持 |
行级锁 | 支持 | 不支持(表级锁) |
聚集索引 | 支持 | 不支持 |
全文索引 | 不支持 | 支持 |
表空间 | 大,为MyISAM的两倍 | 小 |
全文索引:可以在一篇文章中索引内容
MyISAM:节约空间,速度快
InnoDB: 安全性高,事务处理, 支持多表多用户处理(支持行锁和外键)
所有的数据库都存在于data目录下,本质还是文件存储
存储区别:
InnoDB:生成*.frm
文件, 和上层文件夹中的ibdata1
文件。
MyISAM:
*.frm
表结构的定义文件*.MYD
数据文件data*.MYI
索引文件index如果不设置charset,mysql默认字符集编码。
修改方法:1. 建表时选择charset=utf8;2. 在my.ini 中配置, 添加character-set-server=utf8