数据库
数据库就是以一定格式进行组织的数据的集合
特点
持久化存储
读写速度极高
保证数据的有效性
对程序支持性非常好,容易扩展
数据库的分类
-
关系型数据库
使用二维表格这种形式存储数据
mysql orcle sqlite sqlserver
-
非关系型数据库
强调Key-Value 的方式存储数据
数据库管理系统
简称DBMS 为管理数据库而设计的软件系统
- 数据库文件 后缀名一般都是.db
- 服务端 服务端负责操作db数据库文件
- 客户端 发送操作指令(SQL语句)给服务端 控制数据库文件
sql
SQL(Structured Query Language)是结构化查询语言,是一种用来操作RDBMS的数据库语言。当前几乎所有关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库。
关系型数据库中的核心元素
字段:一列数据类型相同的数据
记录:一行记录某个事物的完整信息的数据
数据表:有若干字段和记录组成
数据库:由若干数据表组成
mysql环境搭建
-
安装服务端
sudo apt-get install mysql-server
启动服务端服务
sudo service mysql start
关闭服务端服务
sudo service mysql stop
-
客户端安装
sudo apt-get install mysql-client
-
登录服务端
mysql -uroot -pmysql
配置文件 配置文件目录为/etc/mysql/mysql.cnf
4.查看状态
ps -ajx | grep mysql
navicat
图形化客户端
mysql数据类型
整型类型
有符号 signed
无符号 unsigned
TINYINT 1字节 -128到-127或0-255
SMALLINT 2字节 -215-215-1或0-2^16-1
INT 4字节 -231-231-1或0-2^32-1
BIGINT 8字节 -263-263-1或0-2^64-1
浮点型
float 保留6位小数
double 保留16位小数
decimal 保留特定小数
字符串类型
char:最多255个字符(固定长度 有可能浪费内存)
varchar:最多有65535个字符(存储多少 占用多少 建议使用)
text:65535个字符
枚举类型
数据只有指定的几种值 男 女
enum(‘男’,‘女’)
时间类型
数据完整性和约束
完整性
数据完整性用于保证数据的正确性
ps: 年龄使用tinyint 数值最大为 127
约束
约束作用是保证数据的完整性和一致性
ps: 把性别字段设置为default “保密”, 当不输入张三性别信息时,依然用”保密”保证张三信息的完整
约束类型 | 约束说明 |
---|---|
NOT NULL | 非空约束 |
PRIMARY KEY | 主键约束(唯一) |
UNIQUE KEY | 唯一约束 |
DEFAULT | 默认值 |
FOREIGN KEY | 外键约束 |
登录和退出数据库
-
登录数据库
mysql -uroot -pmysql
-
退出登录
exit/quit/ctrl+D
-
显示版本
select version();
-
显示时间
select now();
数据库操作
显示所有的数据库
show databases;
默认有四张表
| information_schema |
| mysql |
| performance_schema |
| sys
命令 | 作用 | 示例 |
---|---|---|
show databases; | 查看所有数据库 | show databases; |
select database(); | 查看当前使用的数据库 | select database(); |
create database 数据库名 charset=utf8; | 创建数据库 | create database python charset=utf8; |
use 数据库名; | 使用数据库 | use python; |
drop database 数据库名; | 删除数据库-慎重 | drop database python; |
show create database 数据库名 | 查看创建数据库 |
数据库表的基本操作
命令 | 作用 |
---|---|
create table 表名(字段 数据类型 约束); | 创建数据表 |
show tables; | 查看当前数据库中所有表 |
desc 表名; | 查看表结构 |
show create table 表名; | 查看表的创建语句-详细过程 |
drop table 表名; | 删除表 |
操作表:use 数据库; 需要进入数据库之后才能操作表
数据库表的修改命令
命令 | 作用 |
---|---|
alter table 表名 add 列名 类型; | 添加字段 |
alter table 表名 change 原名 新名 类型及约束; | 重命名字段 |
alter table 表名 modify 列名 类型及约束; | 修改字段类型 |
alter table 表名 drop 列名; | 删除字段 |
命令总结
数据库的创建和删除
create database 数据库名称 charset=utf8;
drop database 数据库名称;
use 数据库;
select database();
数据表的创建和删除
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) not null,
age int unsigned default 0,
high decimal(5,2),
gender enum("男","女"),
cls_id int unsigned
);
drop table 表名;
desc 表名;
数据表的字段的增加 删除 修改
alter table 表名 add 列名 类型;
alter table 表名 change 原名 新名 类型及约束;
alter table 表名 modify 列名 类型及约束;
表数据的增加
命令 | 作用 |
---|---|
insert into 表名 values (…); | 全列插入:值的顺序与表结构字段的顺序完全一一对应 |
insert into 表名 (列1,…) values(值1,…); | 部分列插入:值的顺序与给出的列顺序对应 |
insert into 表名 values(…),(…)…; | 一次性插入多行数据 |
insert into 表名(列1,…) values(值1,…),(值1,…)…; | 部分列多行插入 |
修改和查询数据
命令 | 作用 |
---|---|
select * from 表名 where 条件; | 查询所有列数据 |
select 列1,列2,… from 表名 where 条件; | 查询指定列数据 |
update 表名 set 列1=值1,列2=值2… where 条件; | 修改数据 |
删除数据
命令 | 作用 |
---|---|
delete from 表名 where 条件; | 删除数据 |
物理删除
逻辑删除
alter table students add is_delete bit default 0;
update students set is_delete=1 where id=1;
指令总结
数据库的创建和删除
create database 数据库名 charset=utf8;
drop database 数据库名;
数据库表的创建和删除
create table students(
字段 类型 约束,
);
drop table 表名;
数据库表的列的修改和添加
-- 添加字段
alter table 表名 add 字段名 类型 约束;
-- 删除字段
alter table 表名 drop 字段;
-- 修改字段
alter table 表名 change 原列名 新列名 类型 约束;
alter table 表名 modify 列名 类型 约束;
数据操作
-
增加
-- 全字段添加 insert into 表名 values(0,"小花",18,166.66,"男",110); -- 选择字段添加 insert into 表名(列1,列2...) values(列1value,列2value...);
-
删除
-- 按照条件删除 delete from 表名 where 条件; -- 逻辑删除 增加字段标识是否删除
-
修改
-- 按照条件修改 update 表名 set 列=值 where 条件;
-
查询
-- 查询所有的列 select * from 表名 where 条件; -- 查询某些列 select 列1,列2 from 表名 where 条件; -- 查询时给列起别名 select 列1 as 别名1,列2 as 别名2 from 表名 where 条件;
-- 按照条件删除
delete from 表名 where 条件;
-- 逻辑删除
增加字段标识是否删除
-
修改
-- 按照条件修改 update 表名 set 列=值 where 条件;
-
查询
-- 查询所有的列 select * from 表名 where 条件; -- 查询某些列 select 列1,列2 from 表名 where 条件; -- 查询时给列起别名 select 列1 as 别名1,列2 as 别名2 from 表名 where 条件;