一、引言
- 我们经常听到有人讲数据库,那么数据库到底是什么呢?
顾名思义,数据库是存储和管理数据的仓库,即存储数据的容器,而我们时常听到的MySQL、Oracle这些都为数据库管理系统,我们简称为数据库 - 概念
- DB:数据库,存储数据的容器
- DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB
- SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言
- 数据库的优势
- 可以持久化数据到本地
- 结构化查询
- 数据库存储数据的特点
- 数据存放到表中,然后表再放到库中
- 一个库中可以有多张表,每张表具有唯一的表名用来标识自己
- 表中有一个或多个列,列又称为“字段”,相当于java中“属性”
- 表中的每一行数据,相当于java中“对象”
- 常见的数据库管理系统
MySQL、Oracle、DB2、SQL Server
二、MySQL
下面我们着重以MySQL数据库进行讲解
- MySQL的优点
- 开源、免费、成本低
- 性能高、移植性也好
- 体积小,便于安装
- MySQL的服务启动和停止
- 通过命令行
启动:net start 服务名
停止:net stop 服务名- 计算机——右击——管理——服务
- MySQL服务的登录和退出
- 登录:mysql 【-h 主机名 -P 端口号】 -u 用户名 -p密码
- 退出:exit或ctrl+C
三、DDL语言
下面介绍下数据库的管理和数据表的管理
- 数据库的管理
- 创建库
create database 【if not exists】 库名【 character set 字符集名】
- 修改库
alter database 库名 character set 字符集名
- 删除库
drop database 【if exists】 库名
- 数据表的管理
- 创建表
create table 【if not exists】 表名( 字段名 字段类型 【约束】, 字段名 字段类型 【约束】, ..... 字段名 字段类型 【约束】 )
- 修改表
- 添加列
alter table 表名 add column 列名 类型 【first|after 字段名】
- 修改列的类型或约束
alter table 表名 modify column 列名 新类型 【新约束】
- 修改列名
alter table 表名 change column 旧列名 新列名 类型
- 删除列
alter table 表名 drop column 列名
- 修改表名
alter table 表名 rename 【to】 新表名
- 删除表
drop table【if exists】 表名
- 复制表
- 复制表的结构
create table 表名 like 旧表
- 复制表的结构+数据
create table 表名 select 查询列表 from 旧表【where 筛选
- 数据类型
- 数值型
整型 | tinyint | smallint | mediumint | int(integer) | bigint |
---|---|---|---|---|---|
字节大小 | 1 | 2 | 3 | 4 | 8 |
特点
- 都可以设置无符号和有符号,默认有符号,通过unsigned设置无符号
- 如果超出了范围,会报out or range异常,插入临界值
- 长度可以不指定,默认会有一个长度
长度代表显示的最大宽度,如果不够则左边用0填充,但需要搭配zerofill,并且默认变为无符号整型
定点数 | 浮点数 | 浮点数 | |
---|---|---|---|
浮点型 | decimal(M,D) | float(M,D) | double(M,D) |
字节大小 | M默认为10,D默认为0 | 4 | 8 |
特点
- M代表整数部位+小数部位的个数,D代表小数部位
- 如果超出范围,则报out or range异常,并且插入临界值
- M和D都可以省略,但对于定点数,M默认为10,D默认为0
- 如果精度要求较高,则优先考虑使用定点数
- 字符型
- char、varchar、binary、varbinary、enum、set、text、blob
- char:固定长度的字符,写法为char(M),最大长度不能超过M,其中M可以省略,默认为1
- varchar:可变长度的字符,写法为varchar(M),最大长度不能超过M,其中M不可以省略
- 日期型
- year 年
- date 日期
- time 时间
- datetime 日期+时间 8
- timestamp 日期+时间 4 比较容易受时区、语法模式、版本的影响,更能反映当前时区的真实时间