数据库简介
理解
-
用于持久化保存数据的管理软件
-
保存数据技术
- 1、将数据保存到内存中:变量、对象、数组、集合
特点:易失性
- 2、持久化保存技术:IO
特点:可操作性比较差,效率低
- 数据库:是一个存储数据的仓库本质上是一个文件系统、可以通过结构化查询语言简称sql对里面的数据进行CRUD(增删改查)
特点
- 可以持久化保存数据
- 保存数据是有组织、有结构
- 以表的形式保存数据 方便操作
- 提供丰富的sql语句 操作数据
数据库分类
-
关系型数据库
-
非关系型数据库
-
区别
- 关系型数据库将数据存储在硬盘、非关系型数据库存储内存中
- 非关系检索效率要远远高于关系型数据库
数据库系统结构
- DB:数据库,存储数据的容器
- DBMS: 数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB
- SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,数据库通用语言
SQL基本分类
结构化查询语言是一门特殊的编程语言
主要用途:用于对数据库中数据增删改查
DDL
DML
-
数据库查询语言:对数据库表中数据 增、删、改、查
-
关键字
DQL
DCL
数据类型
整型
- tinyint/smallint/int/bigint
浮点型
- float(n,m)/double(n,m)/decimal(n,m) 准确值 n和m可以省略
- n:整数位+小数位的个数
- m:小数位的个数
字符型
- varchar(n) 变长字符串 n必选 保存字符串最大个数 性能低
- char(n) 定义字符串 n可选 默认为1 保存字符最大个数 性能高
日期
注意
- mysql中没有boolean类型、通常我们会使用int类型来表示boolean类型 0:false 1:true
DDL
库的管理
-
关键字
- create创建 drop删除 alter修改 show展示 database数据库
-
查看所有的数据库
-
创建数据库
- 语法一:create database 数据库名称;
- 语法二:create database if not exists 数据库名称;
-
删除数据库
- 语法一:drop database 数据库名称
- 语法二:drop database if exists 数据库名称;
-
使用库
-
查看创建数据库语句
- show create database 数据库名称;
表的管理
-
关键字
- show 展示 alter 修改 create 创建 table 表 drop 删除
-
查看所有表
-
创建表
-
语法一
- create table 表名称(
字段名称 数据类型.
字段名称 数据类型,
字段名称 数据类型
...
);
-
语法二
- create table if not exists 表名称(
字段名称 数据类型.
字段名称 数据类型,
字段名称 数据类型
...
);
-
删除表
-
查看表结构(查询表的列数和每列表对应的数据类型)
-
查看创建表语句
表的修改
-
修改表名
- alter table 表名称 rename 新名称;
-
修改列名
- alter table 表名称 change 原列名 新列名 数据类型;
-
修改列类型
-
方式一
- alter table 表名称 modify 列名称 新类型;
-
方式二
- alter table 表名称 change 原列名 新列名 数据类型;
-
添加列
- alter table 表名 add 列名 数据类型;
-
删除列
DML
关键字
插入
-
不指定字段插入
-
指定字段插入
- insert into 表名 (字段1,字段2,字段3,字段n) values(值1,值2,值3,值n);
- 注意:字段和值必须一一对应
-
方式三
- insert into 表名 set 字段1=值1,字段2=值2,字段3=值3,字段N=值N
-
批量插入
- insert into 表名 (字段1,字段2,字段3,字段n) values(值1,值2,值3,值N),(值1,值2,值3,值n),(值1,值2,值3,值n)
删除
-
删除单个
- delete from 表名 [where 条件];
-
删除所有
- delete from 表名;
- truncate table 表名;
-
delete删除和truncate删除的区别
- 方式上:delete会逐行删除、truncate删除整张表、重新创建一个一模一样的表结构
- 效率上:delete效率低、truncate效率高
- 回滚上:delete删除数据可以回滚(找回来)truncate一旦删除数据将无法回滚
- 主键自增序列上:delete删除会保留原有自增序列、truncate删除不会保留
修改
-
修改单个
- update 表名 set 字段1=值1,字段2=值2,字段3=值3,字段N=值N [where 条件]
-
修改全部
- update user set password =‘456‘,sex=‘男‘;
MySQL常见约束
概述
常见约束
- not null被约束的列不能为空
- unique 唯一约束 被约束的列的值不允许重复 null可以有多个
- primary key 主键约束 值不能重复,不能为null
提高查询效率(主键约束默认回给当前列创建一个索引)一个表通常只有一个主键
- default 默认约束 指定默认值
- foreign key 外键约束 描述两个表之间的关系, 从一个表中(从表)某一列的值 来源于另一个表(主表)的主键值
除not null和default都支持表级约束
添加约束
-
方式一:创建表的时候添加约束
create table person(
字段名 字段类型 约束, #列级约束写法
字段名 字段类型 约束
)
-
create table person(
字段名 字段类型 ,
字段名 字段类型 ,
#表级约束写法
约束(约束的字段)
)
-
方式二:给已存在的表上添加约束(注意当前表中数据没有违反约束行为)
alter table 表名 modify 字段名 字段类型 约束;
-
添加主键自增约束:将主键的维护全交给数据进行管理
- 要求当前列必须设置主键
- 主键列必须是int类型
- 自增量为1
- create table person(
字段名 primary key auto_increment,
字段名 字段类型 约束
)
-
万能公式
- alter table 表名 modify 字段名 字段类型 约束;
删除约束
-
删除列级约束
- alter table 表名 modify 列名 数据类型
-
删除表级约束
-
主键约束2步
- 1-1 alter table 表名 drop primary key
- 1-2 alter table 表名 modify 列名 数据类型
-
删除唯一约束
- alter table 表名 drop index 索引名称
MySQL_01
原文:https://www.cnblogs.com/chenglong0201/p/15130492.html