数据库和mysql的使用

一、数据库

在开发中,为了保存大量的数据,我们经常会使用到数据库,那么数据库是什么呢?简而言之,数据库就是一种特殊的文件,其中存储着需要的数据。

它具有如下特点:
- 持久化存储
- 读写速度极高
- 保证数据的有效性
- 对程序支持性非常好,容易扩展

当前主要使用两种类型的数据库:关系型数据库、非关系型数据库,所谓的关系型数据库RDBMS(Relational Database Management System),是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

关系型数据库的主要产品有:
- oracle:在以前的大型项目中使用,银行,电信等项目
- mysql:web时代使用最广泛的关系型数据库
- ms sql server:在微软的项目中使用
- sqlite:轻量级数据库,主要应用在移动平台

关系型数据库核心元素有:
- 数据行(记录)
- 数据列(字段)
- 数据表(数据行的集合)
- 数据库(数据表的集合)

那么RDBMS和数据库的关系是什么呢?
- 其实RDBMS分为客户端和服务端,我们通过编写SQL语句,把SQL语句交给服务端去执行,然后服务端会到它管理的数据库、数据表里面进行相应的操作。

那么什么是SQL语句呢?
- SQL(Structured Query Language)是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库。
- SQL语句主要分为:
DQL:数据查询语言,用于对数据进行查询,如select
DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete
TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
DCL:数据控制语言,进行授权与权限回收,如grant、revoke
DDL:数据定义语言,进行数据库、表的管理等,如create、drop
CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
SQL 是一门特殊的语言,专门用来操作关系数据库,并且它是不区分大小写的。

那么MySQL又是什么呢?
- MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品。

它具有如下特点:
- 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
- 支持多种操作系统,如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris等
- 为多种编程语言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等
- 优化的SQL查询算法,有效地提高查询速度
- 大型的数据库。可以处理拥有上千万条记录的大型数据库
- 支持多种存储引擎
- MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库
- MySQL使用标准的SQL数据语言形式
- Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统
当然最主要的还是因为它是开源、免费的,使用范围广,跨平台支持性好,提供了多种语言调用的 API,是学习互联网公司数据库的首选。

二、mysql安装

2.1 服务器端
  1. 安装服务器端:在终端中输入如下命令,回车后,然后按照提示输入
    sudo apt-get install mysql-server
  2. 启动服务
    sudo service mysql start
  3. 查看进程中是否存在mysql服务
    ps ajx|grep mysql
  4. 停止服务
    sudo service mysql stop
  5. 重启服务
    sudo service mysql restart
  6. 配置文件目录
    /etc/mysql/mysql.conf.d/mysqld.cnf,可以通过vi命令进入此文件查看mysql配置的选项。
2.2 客户端

客户端为开发人员与dba(数据库管理员)使用,通过socket方式与服务端通信,常用的有navicat、命令行mysql。
1. 图形化界面客户端navicat可以到navicat官网下载安装:navicat官网
2. 命令行方式
安装:
sudo apt-get install mysql-client
查看帮助文档:
mysql –help
连接命令:
mysql -u root -p,回车后输入密码。
退出命令:
ctrl+d、quit 、exit。

三、数据类型

  1. 数据完整性
    一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中,在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束。
  2. 数据类型

    • 可以通过查看帮助文档查阅所有支持的数据类型。
    • 使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。
    • 常用数据类型如下:
      – 整数:int,bit
      – 小数:decimal
      – 字符串:varchar,char
      – 日期时间: date, time, datetime
      – 枚举类型(enum)
      特别说明的类型如下:
      – decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位;
      – char表示固定长度的字符串,如char(3),如果填充’ab’时会补一个空格为’ab ‘;
      – varchar表示可变长度的字符串,如varchar(3),填充’ab’时就会存储’ab’;
      – 字符串text表示存储大文本,当字符大于4000时推荐使用;
      – 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径。
  3. 约束
    – 主键primary key:物理上存储的顺序
    – 非空not null:此字段不允许填写空值
    – 惟一unique:此字段的值不允许重复
    – 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
    – 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
    说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制。

四、数据库、数据表操作

  • 数据库操作
打开终端
-- 进入mysql:
mysql -uroot -p  回车后输入密码,进入mysql

-- 查看版本:
select version();

-- 显示当前时间:
select now();

-- 修改输入提示符:
 prompt python>

-- 查看所有数据库:
show databases;

-- 使用数据库:
use 数据库名;

-- 查看当前使用的数据库:
select database();

-- 创建数据库:
create database 数据库名 charset=utf8;

-- 删除数据库:
drop database 数据库名;
  • 数据表操作
-- 查看当前数据库中所有表:
show tables;

-- 查看表结构:
desc 表名;

-- 创建表:
auto_increment表示自动增长
CREATE TABLE table_name(
    column1 datatype contrai,
    column2 datatype,
    column3 datatype,
    .....
    columnN datatype,
    PRIMARY KEY(one or more columns)
);

-- 修改表-添加字段
alter table 表名 add 列名 类型;
例:
alter table students add birthday datetime;

-- 修改表-修改字段:重命名版
alter table 表名 change 原名 新名 类型及约束;
例:
alter table students change birthday birth datetime not null;

-- 修改表-修改字段:不重命名版
alter table 表名 modify 列名 类型及约束;
例:
alter table students modify birth date not null;

-- 修改表-删除字段
alter table 表名 drop 列名;
例:
alter table students drop birthday;

-- 删除表
drop table 表名;
例:
drop table students;

-- 查看表的创建语句
show create table 表名;
例:
show create table classes;
  • 数据的增删改查(curd)
    – curd的解释: 代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)
1. 查询:
查询所有列:
select * from 表名;
例:
select * from classes;

查询指定列
可以使用as为列或表指定别名
select 列1,列2,... from 表名;
例:
select id,name from classes;


2. 增加:
格式:INSERT [INTO] tb_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
说明:主键列是自动增长,但是在全列插入时需要占位,通常使用0或者 default 或者 null 来占位,插入成功后以实际数据为准
全列插入:值的顺序与表中字段的顺序对应
insert into 表名 values(...)
例:
insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');

部分列插入:值的顺序与给出的列顺序对应
insert into 表名(列1,...) values(值1,...)
例:
insert into students(name,hometown,birthday) values('黄蓉','桃花岛','2016-3-2');

全列多行插入:值的顺序与给出的列顺序对应
insert into 表名 values(...),(...)...;
例:
insert into classes values(0,'python1'),(0,'python2');
insert into 表名(列1,...) values(值1,...),(值1,...)...;
例:
insert into students(name) values('杨康'),('杨过'),('小龙女');


3. 修改:
格式: UPDATE tbname SET col1={expr1|DEFAULT} [,col2={expr2|default}]...[where 条件判断]

update 表名 set 列1=值1,列2=值2... where 条件
例:
update students set gender=0,hometown='北京' where id=5;


4. 删除:
DELETE FROM tbname [where 条件判断]

delete from 表名 where 条件
例:
delete from students where id=5;
逻辑删除,本质就是修改操作
update students set isdelete=1 where id=1;
  • 数据备份和恢复
1. 备份:
运行mysqldump命令
mysqldump –uroot –p 数据库名 > python.sql;
按提示输入mysql的密码

2. 恢复:
连接mysql,创建新的数据库
退出连接,执行如下命令
mysql -uroot –p 新数据库名 < python.sql
根据提示输入mysql密码
  • 逻辑删除
    – 对于重要数据,并不希望物理删除,一旦删除,数据无法找回
    – 删除方案:设置is_delete的列,类型为bit,表示逻辑删除,默认值为0
    – 对于非重要数据,可以进行物理删除
    – 数据的重要性,要根据实际开发决定
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值