• 周日. 5月 26th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

msql 初识数据库

admin

11月 28, 2021

一 数据库管理软件的由来

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

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

但是这只是个假设的存在, 事实上是不可能的。

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

因为这台机器一旦挂掉,则意味着整个软件的崩溃,并且程序的执行效率依赖于它的硬件。而一台机器的性能总归是有限 的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。

于是我们只能通过水平扩展来增强我们系统的整体性能, 这就需要我们将程序的各个组件分布于多态机器去执行。

2:数据安全问题

根据1 的描述,我们将程序的各个组件分布到各台机器,但仍需知各个组件仍然是一个整体,言外之意,所有组件的数据还是要共享的, 但是每台机器上的组件都只能操作本机的文件, 这就导致了数据的必然不一致。

于是我们想到了将数据与应用程序分离, 把文件存放于一台机器, 然后将多态机器通过网络去访问这台机器上的文件(用socket 实现),即共享这台机器上的文件,共享则意味着竞争, 会发生数据不安全, 需要加锁处理。

3:并发

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

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

总结:

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

二 数据库概述

1 什么是数据(data)

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

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

1 ZXX,male,18,1999,江苏,计算机系,2017,oldboy

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

1 name,sex,age,birth,born_addr,major,entrance_time,school #字段
2 zxx,male,18,1999,江苏,计算机系,2017,oldboy #记录

这样我们就了解了 zxx性别为男,年龄18岁,出生于1999年,出生地为江苏,2017年考入老男孩计算机系。

2:什么是数据库(DataBase ,简称DB)

数据库即存放数据的仓库, 只不过这个仓库是在计算机存储设备上, 而且数据是按照一定的格式存放的,过去人们将数据存放在文件柜里, 现在数据量庞大 已经不在适用

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

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

3:什么是数据库管理系统(DataBase Managenment System 简称DBMS)

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

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

如mysql,oracle,sqlite,acess,mssql server

mysql主要用于大型门户, 例如搜狗,新浪等,他的主要优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。

orcle 主要用于银行,铁路,飞机场等, 该数据库功能强大, 软件费高, 也是甲骨文公司的产品。

sql server  是微软公司的产品, 主要用于大中型企业, 如联系,方正等。

4:数据库服务器,数据管理系统,数据库, 表与记录的关系

记录:1 刘海龙  324245234 22(多个字段的信息组成一条记录,即文件中的一行内容)

表:student,scholl,class_list(即文件)

数据库:oldboy_stu(即文件夹)

数据库管理系统:如mysql(是一个软件)

数据库服务器:一台计算机(对内存要求比较高)

总结:

数据库服务器-:运行数据库管理软件

数据库管理软件:管理-数据库

数据库:即文件夹, 用来组织文件/表

表:即文件,用来存放多行内容、多条记录

三 mysql介绍

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

mysql 是什么

mysql 就是一个基于socket编写的c/s架构的软件
客户端软件
    mysql自带:如mysql 命令, mysqldump 命令等
    python模块 如pymysql

数据库管理软件分类

分两大类:
  关系型:如sqllite ,db2,oracle,access,sql,server, Mysql  注意:sql语句通用。

非关系型:mongodb,redis,memcache



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

四 下载安装

Linux 版本

#二进制rpm包安装
yum -y install mysql-server mysql

源码安装mysql

1.解压tar包
cd /software
tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21

2.添加用户与组
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql mysql-5.6.21

3.安装数据库
su mysql
cd mysql-5.6.21/scripts
./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data

4.配置文件
cd /software/mysql-5.6.21/support-files
cp my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql   #若mysql的安装目录是/usr/local/mysql,则可省略此步
修改文件中的两个变更值
basedir=/software/mysql-5.6.21
datadir=/software/mysql-5.6.21/data

5.配置环境变量
vim /etc/profile
export MYSQL_HOME="/software/mysql-5.6.21"
export PATH="$PATH:$MYSQL_HOME/bin"
source /etc/profile

6.添加自启动服务
chkconfig --add mysql
chkconfig mysql on

7.启动mysql
service mysql start

8.登录mysql及改密码与配置远程访问
mysqladmin -u root password 'your_password'     #修改root用户密码
mysql -u root -p     #登录mysql,需要输入密码
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;     #允许root用户远程访问
mysql>FLUSH PRIVILEGES;     #刷新权限

源码安装mariadb

1. 解压
tar zxvf  mariadb-5.5.31-linux-x86_64.tar.gz   
mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需这样,很多脚本或可执行程序都会直接访问这个目录

2. 权限
groupadd mysql             //增加 mysql 属组 
useradd -g mysql mysql     //增加 mysql 用户 并归于mysql 属组 
chown mysql:mysql -Rf  /usr/local/mysql    // 设置 mysql 目录的用户及用户组归属。 
chmod +x -Rf /usr/local/mysql    //赐予可执行权限 

3. 拷贝配置文件
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf     //复制默认mysql配置 文件到/etc目录 

4. 初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql          //初始化数据库 
cp  /usr/local/mysql/support-files/mysql.server    /etc/init.d/mysql    //复制mysql服务程序 到系统目录 
chkconfig  mysql on     //添加mysql 至系统服务并设置为开机启动 
service  mysql  start  //启动mysql

5. 环境变量配置
vim /etc/profile   //编辑profile,将mysql的可执行路径加入系统PATH
export PATH=/usr/local/mysql/bin:$PATH 
source /etc/profile  //使PATH生效。

6. 账号密码
mysqladmin -u root password 'yourpassword' //设定root账号及密码
mysql -u root -p  //使用root用户登录mysql
use mysql  //切换至mysql数据库。
select user,host,password from user; //查看系统权限
drop user ''@'localhost'; //删除不安全的账户
drop user root@'::1';
drop user root@127.0.0.1;
select user,host,password from user; //再次查看系统权限,确保不安全的账户均被删除。
flush privileges;  //刷新权限

7. 一些必要的初始配置
1)修改字符集为UTF8
vi /etc/my.cnf
在[client]下面添加 default-character-set = utf8
在[mysqld]下面添加 character_set_server = utf8
2)增加错误日志
vi /etc/my.cnf
在[mysqld]下面添加:
log-error = /usr/local/mysql/log/error.log
general-log-file = /usr/local/mysql/log/mysql.log
3) 设置为不区分大小写,linux下默认会区分大小写。
vi /etc/my.cnf
在[mysqld]下面添加:
lower_case_table_name=1

修改完重启:#service  mysql  restart
源码安装mariadb
 

Window 版本

#1、下载:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/

#2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:mysql-5.7.16-winx64

#3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
 
#4、初始化
mysqld --initialize-insecure

#5、启动MySQL服务
mysqld # 启动MySQL服务

#6、启动MySQL客户端并连接MySQL服务
mysql -u root -p # 连接MySQL服务器

安装

五  mysql 软件基本 管理

1:登录设置密码

初始状态下,管理员root,密码为空,默认只允许从本机登录localhost
设置密码
[root@egon ~]# mysqladmin -uroot password "123"        设置初始密码 由于原密码为空,因此-p可以不用
[root@egon ~]# mysqladmin -uroot -p"123" password "456"        修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码

命令格式:
[root@egon ~]# mysql -h172.31.0.2 -uroot -p456
[root@egon ~]# mysql -uroot -p
[root@egon ~]# mysql                    以root用户登录本机,密码为空:2:

2:在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]为准

3:统一字符编码

#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 服务端软件即mysql 帮我嗯管理好文件夹以及文件, 前提是作为使用者的我们, 需要下载mysql 的客户端,或者其他模块来连接到mysqld,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql语法。

SQL 语言主要用于存取数据, 查询数据,更新数据和管理关系数据库系统,SQL语言由IBM 开发, SQL 语言分为3种类型:
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 latinl;
删除: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;

清空表:
delete from t1;如果有自增id,新增的数据仍然是以删除前的最后一样作为起始。

truncate table t1;数据量大, 删除的速度比上一条快,且直接从零开始


auto_increment表示自增

primary key 表示约束(不能重复且不能为空); 加速查找

《msql 初识数据库》有134个想法
  1. Wow, fantastic weblog layout! How lengthy have
    you ever been running a blog for? you made blogging glance easy.
    The total look of your web site is excellent, as well as the content!
    You can see similar here sklep

  2. Hi there! Do you know if they make any plugins to help with SEO?
    I’m trying to get my blog to rank for some targeted keywords but I’m not seeing very good gains.
    If you know of any please share. Cheers! You can read similar blog here: Link Building

  3. A mesothelioma lawyer can help a victim receive compensation. They have
    extensive database of industry resources as well as proprietary
    databases of jackson asbestos Law firm (Vimeo.com) that they utilize to link mesothelioma cases to past exposure.

  4. Thanks for sharing your thoughts. I truly appreciate your efforts and
    I am waiting for your next post thank you once
    again.

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注