1.什么是mysql
1.1 什么是数据库(DateBase DB)
利用数据结构村塾数据的仓库
1.2 数据库管理系统(DBMS)
操纵和管理数据库的一套系统软件
1.3 数据库管理系统分类
-
关系型的数据库管理系统(RDBMS)
处理结构化数据库(可以用行和列来表示)
- Oracle:oracle公司大型的分布式RDBMS
- Mycql:开源免费
- sqlserver/db2
-
非关系型的数据库(Nosql)
数据多样性
关系的复杂性
高并发和高lo操作
redis/HBase/mongoDB/Neo4j
1.4 Mysql简介
开源免费的关系型数据库管理系统。
利用表(数据库表)存储和管理数据,行称为记录,列称为字段。
管理多喝数据库,每个数据库中管理多张表。
支持千万级的数据量。
支持GPL许可证。
1996年由Mysql AB公司开发完成;
2000年正式开源;
2008年 mysql被sun公司以10亿美元收购;
2009年 sun被oracle以74亿美元收购。
2. Mysql的安装和使用
2.1 mysql的下载和安装
https://www.oracle.com/index.html
https://www.mysql.com/
3.Mysql的使用
3.1 连接数据库
mysql -uroot -p密码
3.2 常见命令
show databases ; 显示数据库
use 数据库名字 ; 切换数据库
show tables ; 显示表
3.3 图形化界面工具
客户端: 利用图形界面来展示数据(比较友好) navicat sqlyog 等等
4. SQL
结构化查询语言。 关系型数据库的通用语言。
结束标识是;
字符串数据用引号;
大小写不敏感
4.1sql的分类
-
DDL:数据定义语言(结构)
实现数据库对象(数据库,表,视图,索引等)的操作(创建,修改和销毁)
create / alter / drop
-
DML:数据操纵语言(数据)
增删改
insert / delete / update
-
DQL:数据查询语言
select
-
TCL:事物控制语言
comit(提交) / rollback(回滚)
-
DCL:数据控制语言(授权)
grant(授权) / revoke(取消授权)
4.2 DDL
数据的定义语言,用于操作数据库对象的结构
-
数据库的创建和销毁
#创建数据库 create database [if not exists] dbname; #销毁数据库 drop database [if exists] dbname;
-
表的创建,修改和销毁
1 创建表 create table Student( sid int, sname varchar(20), age int, gender varchar(10) ); #查看表的状态 desc Student; 2 修改结构(添加字段,销毁字段,修改字段(字段名称,类型,长度,位置,约束等)) alter table tname add/drop/change/modify colname coltype... * 添加字段 追加字段 alter table Student add email varchar(20); 添加到首列 alter table Student add phone char(11) first; 添加到指定位置 alter table Student add card char(18) after sid; * 销毁字段 alter table Student drop card; * 修改字段 alter table Student modify colname 类型 约束; alter table Student change 旧字段名称 新字段名称 类型 约束; # 修改字段名称 alter table Student change email semail varchar(20); # 修改字段类型和长度 alter table Student modify sname varchar(50) # 修改位置 alter table Student modify semail varchar(20) after sname; 3 销毁表 drop table Student; 4 修改表的名字 rename table Student to stu; 5 清空表(只清空数据,不改变结构) truncate table stu; delate truncate 和drop 的区别? truncate 结构不变 数据清空 drop 整个表都删除rename table Student to stu;
-
数据类型(仅限mysql)
数值类型: 整数: int / bigint 浮点数: float(10,2) :长度是10,小数点后的位数是2 double(16,4) :长度为16,小数后的位数是4 decimal(m,n): 涉及到数据时必须使用decimal 字符串类型:必须指明长度 char(m): 固定长度 varchar(m): 可变长度 日期类型: date:日期 time:时间 datetime:日期和时间 yyyy-MM-dd hh:mm:ss 0000-9999年 timestamp: 时间戳 yyyy-MM-dd hh:mm:ss 1970-2038年 其他类型: text: 文本类型 blob: 二进制数据类型 (图片) enum() / set() / json()
-
4.3 数据完整性
数据的准确性和可靠性
-
实体完整性
实体指的就是记录,实例完整性就是保证记录是准确的,不重复的
-
主键约束:唯一而且不能为空(primary key)
# 场景1:创建表的同时添加约束 create table Student( sid int primary key, sname varchar(20) ); create table Student( sid int, sname varchar(20), primary key(sid) ); # 场景2:表已经存在(主键字段绝对不能存在重复的数据) alter table stu add constraint PK_ID primary key(sid); # 注意: 1.每张表必须有主键,但是有且只能有一个,允许有联合主键 2.主键字段一般数据类型和长度要尽可能的小 3.主键字段不要使用业务字段
-
唯一约束:字段的值必须唯一
create table Student( card char(18) unique ); alter table stu add constraint UQ_CARD unique (card);
-
主键自增:
auto_increment 默认主键自增
-
-
域的完整性
域:字段
类型约束
not null: 非空约束
default:默认值
-
引用完整性
其中一张表的字段取值需要依赖于另一张表
外键约束
alter table emp add constraint FK_DEPTNO foreign key(deptno) references dept(deptno);