Fork me on GitHub

MySQL:初识数据库

一、数据库管理软件的由来

  基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上。

  如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题。

  很不幸,这些假设都是你自己想出来的,上述假设存在以下几个问题。。。。。。

1、程序所有的组件就不可能运行在一台机器上

    因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,
而一台机器机器的性能总归是有限的,
    受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。
    于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分
布于多台机器去执行。

2、数据安全问题

 

    根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,
言外之意,所有组件的数据还是要共享的。
    但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。
    于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网
络去访问这台机器上的文件(用socket实现),
    即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。

 

3、并发

 

  根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:

1.远程连接(支持并发)
2.打开文件
3.读写(加锁)
4.关闭文件

4,总结:

 

    我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序
(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,
这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,
还有查询效率,安全性等一系列问题,
    总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。

 二,数据库概述

1,什么是数据库(Data)

  描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机

  在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容,如:

1 james,male,30,1989,美国,NBA,2003-2018,职业运动员

  

单纯的一条记录并没有任何意义,如果我们按逗号作为分隔,依次定义各个字段的意思,相当于定义表的标题

1 name,sex,age,birth,born_addr,professional,work_time,major #字段

2 james,male,30,1989,美国,NBA,2003-2018,职业运动员

  这样我们就可以了解james,性别为男,年龄30岁,出生于1989年,出生地为美国,2003-2018年效力于NBA。

2,什么是数据库(Database)

    数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的

    过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用

    数据库是长期存放在计算机内、有组织、可共享的数据即可。

    数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩
展性,并可为各种 用户共享

  

3,什么是数据库管理系统(DataBase Management System 简称DBMS

  在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键

  这就用到了一个系统软件---数据库管理系统

  如MySQL、Oracle、SQLite、Access、MS SQL Server

  mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
  oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
  sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。

三,MySQL介绍

  MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

1,MySQL是什么?

mysql就是一个基于socket编写的C/S架构的软件

客户端软件
  mysql自带:如mysql命令,mysqldump命令等
  python模块:如pymysql

 

2,数据库管理软件分类

分两大类:
  关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用
  非关系型:mongodb,redis,memcache

可以简单的理解为:
    关系型数据库需要有表结构
    非关系型数据库是key-value存储的,没有表结构

四,MySQL的安装

(关于MySQL的安装,具体见下面博客:http://www.cnblogs.com/wj-1314/p/7573242.html

五,统一MySQL字符编码

1,在windows下,为mysql服务指定配置文件

强调:配置文件中的注释可以有中文,但是配置项中不能出现中文

#在mysql的解压目录下,新建my.ini,然后配置
#1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1


#解压的目录
basedir=E:\mysql-5.7.19-winx64
#data目录
datadir=E:\my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据



#2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123

#3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
[mysql]
;port=3306
;default-character-set=utf8
user=egon
password=4573


#!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准

 

2,统一字符编码

#1. 修改配置文件
[mysqld]
default-character-set=utf8 
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8

#mysql5.5以上:修改方式有所改动
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

#2. 重启服务
#3. 查看修改结果:
\s
show variables like '%char%'

六,初识sql语句

  有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写

  mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Language 即结构化查询语言)

  SQL语言主要用于存储数据,查询数据,更新数据和管理关系数据库系统,SQL语言由IBM开发,SQL语言分为三种类型:

1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER

2、DML语句    数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT

3、DCL语句    数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
#1. 操作文件夹
        增:create database db1 charset utf8;
        查:show databases;
        改:alter database db1 charset latin1;
        删除: drop database db1;


#2. 操作文件
    先切换到文件夹下:use db1
        增:create table t1(id int,name char);
        查:show tables
        改:alter table t1 modify name char(3);
              alter table t1 change name name1 char(2);
        删:drop table t1;


#3. 操作文件中的内容/记录
        增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
        查:select * from t1;
        改:update t1 set name='sb' where id=2;
        删:delete from t1 where id=1;

七,对系统数据库的认识

information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,
如用户表信息、列信息、权限信息、字符信息等

performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器
性能参数,记录处理查询请求时发生的各种事件、锁等现象

mysql: 授权库,主要存储系统用户的权限信息

test: MySQL数据库系统自动创建的测试数据库

  

 八,数据库中库的相关操作

1,创建数据库

1.1 语法

可以在MySQL中输入(help create database)查找相关语法

创建数据库:

CREATE DATABASE 数据库名 charset utf8;

1.2 数据库命名规则:

可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位

  

2,数据库相关操作

查看数据库
show databases;
show create database db1;
select database();
选择数据库
USE 数据库名
删除数据库
DROP DATABASE 数据库名;
修改数据库
alter database db1 charset utf8;

3,添加表字段& 删除表字段

# 修改表的字段   将 name1 改为  name2  (表名为test1)

alter table test1 change  name1  name2  varchar(20);


# 新增一条表的字段    字段名字为  name3    表名为test1

alert table test1 add name3  varchar(20)


# 删除一条表的字段   名字为 name3   表名为test1

alert table test1 drop  name3;

  

 

八,MySQL常用命令

show databases;                //列出 MySQL Server 数据库。

show tables [from db_name]     //列出数据库数据表。

SHOW CREATE TABLES tbl_name //导出数据表结构。

SHOW TABLE STATUS [FROM db_name]          //列出数据表及表状态信息。

SHOW COLUMNS FROM tbl_name [FROM db_name] //列出资料表字段

SHOW FIELDS FROM tbl_name [FROM db_name],DESCRIBE tbl_name [col_name]。

SHOW FULL COLUMNS FROM tbl_name [FROM db_name]  //列出字段及详情

SHOW FULL FIELDS FROM tbl_name [FROM db_name] //列出字段完整属性

show index from tbl_name [FROM db_name] //列出表索引。

show status    //列出 DB Server 状态。

show variables    //列出 MySQL 系统环境变量。

show variables  like '%char%' ;  // 查看MySQL的字符编码

show processlist  //列出执行命令。

SHOW GRANTS FOR user //列出某用户权限

修改数据库的字符编码:alert database test1 dafault character set utf8;

修改表的字符编码:alert table t1 dafault character set utf8;

修改表中字段的字符编码:alert table t1 convert to character set utf8 collate utf8_general_ci;

九,MySQL快捷命令

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'

?         (\?) Synonym for `help'.
帮助的意思
clear     (\c) Clear the current input statement.
清除当前输入语句
connect   (\r) Reconnect to the server. Optional arguments are db and host.
重新连接到服务器。可选参数是dB和主机。
delimiter (\d) Set statement delimiter.
设置语句分隔符。
ego       (\G) Send command to mysql server, display result vertically.
向MyS QL服务器发送命令,垂直显示结果。
exit      (\q) Exit mysql. Same as quit.
退出MyS QL
go        (\g) Send command to mysql server.
向MyS QL服务器发送命令。
help      (\h) Display this help.
显示此帮助。
notee     (\t) Don't write into outfile.
不要写入输出文件。
print     (\p) Print current command.
打印当前命令。
prompt    (\R) Change your mysql prompt.
更改mysql提示符。
quit      (\q) Quit mysql.
退出mysql。
rehash    (\#) Rebuild completion hash.
重建完成哈希。
source    (\.) Execute an SQL script file. Takes a file name as an argument.
执行SQL脚本文件。以文件名作为参数。
status    (\s) Get status information from the server.

tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.

use       (\u) Use another database. Takes database name as argument.

charset   (\C) Switch to another charset. Might be needed for processing 
binlog with multi-byte charsets.

warnings  (\W) Show warnings after every statement.

nowarning (\w) Don't show warnings after every statement.

  

 

posted @ 2018-06-11 22:07  战争热诚  阅读(656)  评论(0编辑  收藏  举报