数据库简介

  • 人类在进化的过程中,创造了数字、文字、符号等来进行数据的记录,但是承受着认知能力和创造能力的提升,数据量越来越大,对于数据的记录和准确查找,成为了一个重大难题
  • 计算机诞生后,数据开始在计算机中存储并计算,并设计出了数据库系统
  • 数据库系统解决的问题:持久化存储,优化读写,保证数据的有效性
  • 当前使用的数据库,主要分为两类
    • 文档型,如sqlite,就是一个文件,通过对文件的复制完成数据库的复制
    • 服务型,如mysql、postgre,数据存储在一个物理文件中,但是需要使用终端以tcp/ip协议连接,进行数据库的读写操作

E-R模型

  • 当前物理的数据库都是按照E-R模型进行设计的
  • E表示entry,实体
  • R表示relationship,关系
  • 一个实体转换为数据库中的一个表
  • 关系描述两个实体之间的对应规则,包括
    • 一对一
    • 一对多
    • 多对多
  • 关系转换为数据库表中的一个列 *在关系型数据库中一行就是一个对象

三范式

  • 经过研究和对使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式
  • 第一范式(1NF):列不可拆分
  • 第二范式(2NF):唯一标识
  • 第三范式(3NF):引用主键
  • 说明:后一个范式,都是在前一个范式的基础上建立的

安装

  • 安装
sudo apt-get install mysql-server mysql-client
然后按照提示输入

管理服务

  • 启动
service mysql start
  • 停止
service mysql stop
  • 重启
service mysql restart

允许远程连接

  • 找到mysql配置文件并修改
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address=127.0.0.1注释
  • 登录mysql,运行命令
grant all privileges on *.* to 'root'@'%' identified by 'mysql' with grant option;
flush privileges;
  • 重启mysql

数据完整性

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

字段类型

  • 在mysql中包含的数据类型很多,这里主要列出来常用的几种
  • 数字:int,decimal
  • 字符串:varchar,text
  • 日期:datetime
  • 布尔:bit

约束

  • 主键primary key
  • 非空not null
  • 惟一unique
  • 默认default
  • 外键foreign key

使用图形窗口连接

  • 下发windows的navicat
  • 点击“连接”弹出窗口,按照提示填写连接信息,如下图

  • 连接成功后,会在连接名称下面显示出当前的数据库
  • 双击选中数据库,就可以编辑此数据库
  • 下次再进入此软件时,通过双击完成连接、编辑操作

数据库操作

  • 在连接的名称上右击,选择“新建数据库”,弹出窗口,并按提示填写

  • 在数据库上右击,选择“删除数据库”可以完成删除操作

表操作

  • 当数据库显示为高亮时,表示当前操作此数据库,可以在数据中创建表
  • 一个实体对应一张表,用于存储特定结构的数据
  • 点击“新建表”,弹出窗口,按提示填写信息

  • 主键的名称一般为id,设置为int型,无符号数,自动增长,非空
  • 自动增长表示由mysql系统负责维护这个字段的值,不需要手动维护,所以不用关心这个字段的具体值
  • 字符串varchar类型需要设置长度,即最多包含多少个字符
  • 点击“添加栏位”,可以添加一个新的字段
  • 点击“保存”,为表定义名称

数据操作

  • 表创建成功后,可以在右侧看到,双击表打开新窗口,如下图

  • 在此窗口中可以增加、修改、删除数据

逻辑删除

  • 对于重要数据,并不希望物理删除,一旦删除,数据无法找回
  • 一般对于重要数据,会设置一个isDelete的列,类型为bit,表示逻辑删除
  • 大于大量增长的非重要数据,可以进行物理删除
  • 数据的重要性,要根据实际开发决定

使用命令连接

  • 命令操作方式,在工作中使用的更多一些,所以要达到熟练的程度
  • 打开终端,运行命令
mysql -uroot -p
回车后输入密码,当前设置的密码为mysql
  • 连接成功后如下图

  • 退出登录
quit或exit
  • 退出成功后如下图

  • 登录成功后,输入如下命令查看效果
查看版本:select version();
显示当前时间:select now();
  • 注意:在语句结尾要使用分号;

远程连接

  • 一般在公司开发中,可能会将数据库统一搭建在一台服务器上,所有开发人员共用一个数据库,而不是在自己的电脑中配置一个数据库
  • 运行命令
mysql -hip地址 -uroot -p
  • -h后面写要连接的主机ip地址
  • -u后面写连接的用户名
  • -p回车后写密码

数据库操作

  • 创建数据库
create database 数据库名 charset=utf8;
  • 删除数据库
drop database 数据库名;
  • 切换数据库
use 数据库名;
  • 查看当前选择的数据库
select database();

表操作

  • 查看当前数据库中所有表
show tables;
  • 创建表
  • auto_increment表示自动增长

    create table 表名(列及类型);
    如:
    create table students(
    id int auto_increment primary key,
    sname varchar(10) not null
    );
  • 修改表

alter table 表名 add|change|drop 列名 类型;
如:
alter table students add birthday datetime;
  • 删除表
drop table 表名;
  • 查看表结构
desc 表名;
  • 更改表名称
rename table 原表名 to 新表名;
  • 查看表的创建语句
show create table '表名';

数据操作

  • 查询
select * from 表名
  • 增加
全列插入:insert into 表名 values(...)
缺省插入:insert into 表名(列1,...) values(值1,...)
同时插入多条数据:insert into 表名 values(...),(...)...;
或insert into 表名(列1,...) values(值1,...),(值1,...)...;
  • 主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准
  • 修改
update 表名 set 列1=值1,... where 条件
  • 删除
delete from 表名 where 条件
  • 逻辑删除,本质就是修改操作update
alter table students add isdelete bit default 0;
如果需要删除则
update students isdelete=1 where ...;

备份与恢复

数据备份

  • 进入超级管理员
sudo -s
  • 进入mysql库目录
cd /var/lib/mysql
  • 运行mysqldump命令
mysqldump –uroot –p 数据库名 > ~/Desktop/备份文件.sql;
按提示输入mysql的密码

数据恢复

  • 连接mysqk,创建数据库

  • 退出连接,执行如下命令

mysql -uroot –p 数据库名 < ~/Desktop/备份文件.sql
根据提示输入mysql密码

MysQL使用一创建库与表的更多相关文章

  1. mysql语句1-创建库和表

    一.DDL数据定义语言 就是对书库内部的对象进行创建.删除.修改等操作的语言. 关键字:create  drop  alter 1.连接数据库 mysql -u用户名 -p -h指定主机(不指定默认是 ...

  2. Mysql基础(四):库、表、记录的详细操作、单表查询

    目录 数据库03 /库.表.记录的详细操作.单表查询 1. 库的详细操作 3. 表的详细操作 4. 行(记录)的详细操作 5. 单表查询 数据库03 /库.表.记录的详细操作.单表查询 1. 库的详细 ...

  3. Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)

    前言:MySQL是一个数据库管理系统,也是一个关系数据库.它是由Oracle支持的开源软件,MySQL可以在各种平台上运行UNIX,Linux,Windows等.可以将其安装在服务器甚至桌面系统上. ...

  4. flask 使用Flask-SQLAlchemy管理数据库(连接数据库服务器、定义数据库模型、创建库和表)

    使用Flask-SQLAlchemy管理数据库 扩展Flask-SQLAlchemy集成了SQLAlchemy,它简化了连接数据库服务器.管理数据库操作会话等各种工作,让Flask中的数据处理体验变得 ...

  5. [mysql,2018-02-28] bat安装、启动mysql,并创建数据库、表

    @echo off f: cd F:\mysql-win32 @echo off&setlocal enabledelayedexpansion cd bin echo ###### 停止当前 ...

  6. MySQL基础(创建库,创建表,添加数据)

    CREATE DATABASE 数据库名; CREATE TABLE student2(sno VARCHAR(20) NOT NULL PRIMARY KEY COMMENT"学号&quo ...

  7. (笔记)Mysql实例:建库建表并插入数据1

    drop database if exists school;  // 如果存在school则删除create database school;  // 建立库schooluse school;  / ...

  8. MySQL 同一实例不同库之间表同步(Otter 应用)

    1 需求 在同一台服务器同一MySQL实例中的source库和target库都存在student表.如果source库中该表发生增删改操作时,也需要体现到target库的student表中: 2 解决 ...

  9. (笔记)Mysql实例:建库建表并插入数据2

    drop database if exists school;  // 如果存在SCHOOL则删除create database school;  // 建立库SCHOOLuse school;  / ...

随机推荐

  1. 进击的RecyclerView入门三(要是能拖动就好了)

    还是接着上一讲"进击的RecyclerView入门二(来点小装饰?)",在上一讲中我们学到了怎么给不同的Item定制不同的外观,但貌似那个蓝色的框实在太丑了,咱还是把它干了吧. @ ...

  2. eclipse中设置在编译运行项目之前自动保存修改的文件

    Window -> Preferences -> General -> Workspace -> “Save automatically before build” Windo ...

  3. win10系统下把Oracle卸载干净

    我和大家一样,遇到了一个问题,就是如何把Oracle从自己的电脑卸载干净,很多人都觉得很难把Oracle卸载干净,于是选择重装系统,因为解决不了Oracle没有卸载干净之后,重装不了的问题,有时候真的 ...

  4. 论OI中无穷大(INF)的取值

    水 为什么我的Floyd会输出负数啊? 为什么我的代码写对了却全都爆零了啊? 那么很可能是你的INF取大/小了! 那么inf到底应该取什么值呢? 首先,inf应该要比一般的题目中出现的数据要大,但是又 ...

  5. JavaScript学习(6)-文档对象模型基础

    JavaScript学习6-文档对象模型基础 1.节点方法 节点对象方法(W3C DOM Level2) 方法 说明 appendChild(newChild) 添加子节点到当前节点的末端 clone ...

  6. The Personal Touch Client Identification 个性化接触 客户识别

    w服务器要知道和谁在交谈. HTTP The Definitive Guide Web servers may talk to thousands of different clients simul ...

  7. mysql json

    SELECT name, profile->"$.twitter" AS `twitter` FROM `user` WHERE profile->"$.tw ...

  8. 重装系统后Myeclipse遇到的项目配置问题--一个菜鸟的经历!

    电脑不知道为什么流量突然变大了. 一查svchost.exe后台下载老多系统.某某安全卫士根本么用,运维说用某企鹅管家. 结果一个鸟样.. 之前是系统是32位的win7  4G内存用不完.又打算升级内 ...

  9. Linux系统内核参数优化

    Linux服务器内核参数优化 cat >> /etc/sysctl.conf << EOF # kernel optimization net.ipv4.tcp_fin_tim ...

  10. Spotlight 连接SuSE11 linux报错的解决方法

    1. 在客户端安装spotlight: 2.在SuSE11中建立新用户,并且安装了sysstat包: 3.使用spotlight连接服务器,连接时提示    errorcode:3114   reas ...