数据库分类
关系型数据库:(SQL)
- MySQL,Oracle,Sql Server,DB2,SQLlite
- 通过表和表之间,行和列之间的关系进行数据的存储,学员信息表,考勤表。。
非关系型数据库:(NoSQL) Not Only
- Redis,MongDB
- 非关系型数据库,对象存储,通过对象的自身的属性来决定
DBMS(数据库管理系统)
- 数据库的管理软件,科学有效的管理我们的数据。维护和获取数据;
- MySQL,数据库管理系统
MySQL简介
MySQL是一个关系型数据库管理系统
MySQL是最好的RDBMS(关系数据库管理系统)应用软件之一。
开源的数据库软件
连接数据库
命令行连接数据库
mysql -uroot -p123456 --连接数据库
----------------------------------------
所有的语句都使用;结尾
show databases; --查看所有的数据库
mysql>use school --切换数据库 use 数据库名
Database changed
show tables; -- 查看数据库中所有的表
describe student; -- 显示数据库中表的信息
create database bai; --创建一个名称为bai的数据库
exit; --退出连接
-- 单行注释
/*
多行注释
*/
** 数据库xxx语言**
DDL 定义
DML 操作
DQL 查询
DCL 控制
2.1操作数据库
操作数据库>操作数据库中的表>操作数据库中表的数据
mysql关键字不区分大小写
- 创建数据库 create
CREATE DATABASE school;
为了以防万一可以写
CREATE DATABASE IF NOT EXISTS school;
- 删除数据库 drop
DROP DATABASE IF EXISTS school
- 使用数据库 use
-- tab键上面的,如果你的表明或者字段名是一个特殊字符,就需要带
USE school
- 查看数据库 show
SHOW DATABASES --查看所有数据库
2.2数据库的列类型
数值
- tinyint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- int 标准的整形 4个字节 (常用的)
- bigint 较大的数据 8个字节
- float 浮点数 4个字节
- double 浮点数 8个字节
- decimal 字符串形式的浮点数 金融计算的时候,一般使用decimal
字符串
- char 字符串固定大小的 0~255
- varchar 可变字符串 0~65535 (常用的)string
- tintext 卫星文本 2^8-1
- text 文本串 2^16-1 (保存大文本)
时间日期
java.util.Data
- data YYYY-MM-DD 日期格式
- time HH:MM:SS 时间格式
- datatime YYYY-MM-DD HH:MM:SS (最常用的时间格式)
- timestamp 时间戳,1970.1.1到现在的毫秒数!
- year 年份表示
null
- 没有值,未知
- 注意 不要使用NULL 进行运算,结果为NULL
2.3数据库的字段属性(重点)
Unsigned:
- 无符号的整数(只有类型为int类型 才能勾选)
- 声明了该列不能为负数
zerofill
- 0填充
- 不足的位数,使用0填充,int(3),5 会变成 005
自增
- 通常理解为自增,自动在上一条记录的基础上+1(默认)
- 通常用来设计唯一的主键~index,必须是整数类型
- 可以自定义设计主键自增的起始值
非空
- 假设设置为not null,不赋值就会报错
默认
- 设置默认的值
2.4创建数据库表
--注意点,使用英文(),标的名称和字段尽量使用` `括起来
-- 字符串使用单引号括起来!
-- 所有语句后面加, 最后一个不用加,
CREATE TABLE `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 NULL DEFAULT NULL COMMENT '家庭住址' ,
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
格式
CREATE TABLE [IF NOT EXISTS] `表名`(
'字段名' 列类型 [属性] [索引] [注释],
'字段名' 列类型 [属性] [索引] [注释],
...
'字段名' 列类型 [属性] [索引] [注释]
) [表类型] [字符集设置] [注释]
逆向查看创建数据库的语句或者数据库表的语句
SHOW CREATE DATABASE school --查看创建数据库的语句
显示:
CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8 */
SHOW CREATE DATABASE student -- 查看创建表的语句
显示:
CREATE TABLE `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 '家庭住址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
DESC student --显示表的结构
显示:
2.5数据表的类型
-- 关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用的
InnoDB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
设置数据库表的字符集编码
CHARSET=utf8 创表的时候加上
2.6修改表,删除表
-- 修改表名: ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE student RENAME AS student1
-- 增加表的字段: ALTER TABLE 表名 ADD 字段名 列属性
ALTER TABLE student ADD age INT(11)
-- 修改表的字段(重命名,修改约束!)
-- ALTER TABLE 表名 MODIFY 字段名 列属性[]
ALTER TABLE student MODIFY age VARCHAR(11) --修改约束
-- ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性[]
ALTER TABLE student CHANGE age age1 INT(11) --字段重命名
-- 删除表的字段: ALTER TABLE student DROP age1
ALTER TABLE student DROP age1
--删除表(如果表存在)
DROP TABLE IF EXISTS student
所有的创建和删除操作尽量加上判断,以免报错