一、认识数据库
1.数据库的由来
之前所认识的数据都是存存某一个文件当中,但是一个文件只能存在于一台机子上,但在现实中不可能所有的数据都是存放在一台机子上的。
(1)现实中是不可能将所有的应用程序放在一台机子上的
假设所有的应用程序只安装在一台机子上,若该机子崩掉,则意味着数据永久性的消失,所以除非煞笔,要不然没有人会这么做的。并且一台机子的性能是有限的,有些人就想到了给机子添加硬件,关键是你再怎么添加硬件来提升性能,到最后肯定是会达到一个极限的,所以,将所有的应用程序都安装在一台机子上的做法是不可取的。
(2)数据的安全型没有保障
数据若之存放于单独某一台机子上,数据的共享性就必然不一致了。所以,尽量不要将所有的数据存放于一台机子上。
(3)并发效果
必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:
#1.远程连接(支持并发) #2.打开文件 #3.读写(加锁) #4.关闭文件
总结上述几点:
在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的
处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数
据管理中解脱出来,专注于自己的程序逻辑的编写。
二、数据库概述
1.数据的概念
世界中用来描述一切事物状态的记录符号称之为数据,它可以是图片、视频、文件等等。
2.数据库的概念
数据库即存放所有数据的一个仓库,只是这个仓库是位于计算机上的,并且是按照一定的格式来储存的。
3.数据库管理系统(DataBase Management System-DBMS)
为了科学地组织和存储数据,高效获取和维护数据,这就用到了一个系统软件---数据库管理系统,如MySQL、Oracle、SQLite、Access、MS SQL Server。
4. 数据库服务器、数据管理系统、数据库、表与记录的关系--重点理解
记录:1 张大胖 324245234 22(多个字段的信息组成一条记录,即文件中的一行内容)
表:student,scholl,class_list(即文件)
数据库:oldboy_stu(即文件夹)
数据库管理系统:如mysql(是一个软件)
数据库服务器:一台计算机(对内存要求比较高)
总结:
数据库服务器-:运行数据库管理软件
数据库管理软件:管理-数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多条记录
三、Mysql介绍
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存储的,没有表结构
四、安装
linux版本
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; #刷新权限 源码安装mysql
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
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服务器
上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题: 注意:--install前,必须用mysql启动命令的绝对路径 # 制作MySQL的Windows服务,在终端执行此命令: "c:mysql-5.7.16-winx64inmysqld" --install # 移除MySQL的Windows服务,在终端执行此命令: "c:mysql-5.7.16-winx64inmysqld" --remove 注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令: # 启动MySQL服务 net start mysql # 关闭MySQL服务 net stop mysql
五、软件管理
待更。。
六、初识 sql 语句
mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,
然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Language 即结构化查询语言)
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型: #1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER #2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT #3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
1.登录MySQL数据库
mysql -u root -p
2.库的操作
# charset:给数据库指定编码格式 增: create database db charset utf8; # 查询数据库中所有的库 查: show databases; # 因还未增添数据,故只能修改字符编码 改: alter database db charset gbk; # 删除指定的库 删: drop database db;
3.文件夹的操作
# 首先得切换至需要操作的文件夹下 use db; # 创建文件夹,并指定表字段数据类型 增:create table student(id int,name char); create table db.student(id int,name char); # 查询当前库下的所有文件夹 查:show tables; # 只能改表字段下的数据 改:alter table student modify name char(15); # 更改表字段的同时可以更改表字段下的数据 alter table student change name new_name char(10); 删:drop table student;
4.文件的操作
# 增加数据是最后一个一定不能加逗号 增:insert into student values(1,'Luffy'),(2,'Namy'),(3,'Brooke'); 查: 表格式化:desc student; 指定条件查找:select * from student where id>1; 查所有:select * from student; 改:update student set name='LUFFY' where id =1; 删: # 如果有自增id(即id默认主动增加),新增的数据,仍然是以删除前的最后一条记录作为起始 delete from student where id=1; # 数据量大,删除速度比上一条快,且新增的记录直接从零开始 truncate table student; auto_increment 表示:自增(即在默认情况下,往表格中加一条数据,id会自动加1) primary key 表示:约束(不能重复且不能为空--not null unique);加速查找