一、什么是数据库?
按照数据结构储存和管理数据的仓库
二、数据库的类型
关系型数据库:MySql、Oracle、SqlServer --->建立在数据的紧密关系基础上
非关系型数据库:Redis、MongoDB、Solr --->建立在数据松散关系基础上
三、关系型数据库MySql
3.1 早期数据库建立在数据的紧密关系基础之上,称为关系型数据库;现今数据库建立在数据松散关系基础之上,称为非关系型数据库。
关系型数据库以行和列形式储存数据,这一系列的行和列组成一张表,一组表组成了数据库;一个关系型数据库就是由二维表及其之间的关系组成的一个数据集合。
3.2 MySql服务端: 维护数据,保存磁盘 MySql客户端: 对数据的CRUD,新增、删除、修改、查询
四、MySql客户端
4.1 DOS窗口
使用 mysql -uroot -proot 进入数据库
4.2 可视化工具Navicat for MySQL
五、数据结构
六、SQL语句
6.1 定义
structured query language结构化查询语言;用于查询、更新、管理数据库,同时也是数据库脚本文件的扩展名
6.2 分类
- DML (Data Manipulation language) 数据操纵语言
如:insert 、delete、select、update,简称CRUD
- DDL (data definition language)数据库定义语言
如:create table 之类
扩展:truncate属于DDl操作,不产生rollback segment;rollback segment回滚段就是数据修改之间的值,所以操作有大量数据的表时会产生大量回滚段
- DCL (data control language)数据库控制语言
如: grant、deny、revoke等,只有管理员才有操作权限
- DQL (data query language)数据查询语言
七、数据库常用操作
- 建库 create database 库名
- 查看所有库 show databases
- 删库 drop database 库名
- 使用指定库 use 库名
八、表常用操作
- 建表 create table 表名(字段1 字段类型(长度)·····)
- 查看表结构 desc 表名
- 查看所有表 show tables
- 修改表 alter table 表名 add column 字段名 numeric(7,2) ---> 字段类型为numeric长度为7,保留小数2位
九、表记录的常用操作
- 插入记录 insert into user(id,name,age) values(100,'数据库天才周炎',23)
- 查询记录 select * from user
- 修改记录 update user set name='虎丘小霸王周炎' where id=100
- 删除记录 delete from user
&&注意:delete from user只删除表记录,而不删除表;而dorp table user会把整张表删除
十、数据类型
10.1 命名规则
- 字段名必须以字母开头,不要使用拼音
- 长度不能超过30i
- 不能使用SQL的保留字
- 只能使用字符:小写a-z、大写A-Z、0~9、$等
- MySql习惯全小写
- 多个单词用下划线隔开,而非java语言的驼峰规则
10.2 字符
- char长度固定,不足的用空格填充,最多容纳2000个字符;查询速度快但浪费空间
- varchar可变长度字符串,最多容纳4000个字符;查询稍慢,但不浪费空间
- 大文本,大量文字使用varchar代替char
&&注意:varchar(10),其中的10指的是字符数,而不是字节数
10.3 数字
整数类型
- tinyint: 占用一个字节,相当于java中的byte
- smallint: 占用两个字节,相当于java中的short
- int: 占用4个字节,相当于java中的int
小数类型
- float: 占用4字节
- double: 占用8字节
- numeric(5,2)、decimal(5,2)表示长度为5,可以有两位小数
- numeric 和 decimal 表示精确的整数数字
日期
- date 包含年月日
- time 时分秒
- datetime 包含年月日时分秒
- timestamp 时间戳不是日期,而是1970.1.1到指定日期的毫秒数
图片
- blob二进制数据,可以存放图片、声音,容量4g;目前主流不会直接储存这样的数据,只储存其访问路径,文件放在磁盘;因为备份缓慢,数据库庞大,迁移慢
十一、六种约束
- 主键约束 primary key auto_increment
- 唯一约束 unique
- 非空约束 not null
- 外键约束 foreign key(主表id) references 子表(id)
- 默认约束 default
- 检查约束 check(age>0 and age<100)