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存储的,没有表结构
Navicat软件
这个软件对MySQL特别友好,是一套适用于MySQL,SQLLite等多个数据库系统的图形化数据库管理,报告以及兼通的工具。
通过这个软件,我们可以演练创建/删除表,查询/删除/修改记录操作的SQL
什么是SQL?
什么是SQL?
SQL(structured query language):结构化查询语言,SQL是一种对关系型数据库中的数据进行定义和操作的语言。
SQL语句又是什么尼?
使用SQL语言编写出来的句子/代码就是SQL语言
在程序中如果想要操作(增删改查 CRUD)数据库中的数据,就必须使用SQL语言
Create ,Retrive,Updata,Delete
SQL语句的特点?
不区分大小写
每条语句都是以分号(;)结尾
数据库的相关概念
- age = 18
- 一个变量 无法描述清楚数据
- 1.称之为一个字段
- age = 18,name = Jack,genger = man
- 一堆变量在一起,可以描述清楚数据
- 2.称之为一条记录 对应着文件中的一行
- 文件需要分门别类 每个文件存储不同的数
- 3.一个文件称之为表
- 文件越来越多 得分文件夹
- 4.一个文件称之为库
- 数据库中包含所有内容:
- 字段(列)
- 记录
- 表
- 库
下载安装
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; #刷新权限
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-winx64\bin\mysqld" --install
- # 移除MySQL的Windows服务,在终端执行此命令:
- "c:\mysql-5.7.16-winx64\bin\mysqld" --remove
- 注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
- # 启动MySQL服务
- net start mysql
- # 关闭MySQL服务
- net stop mysql
Mysql软件基本管理
启动查看
- [root@egon ~]# systemctl start mariadb #启动
- [root@egon ~]# systemctl enable mariadb #设置开机自启动
- Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
- [root@egon ~]# ps aux |grep mysqld |grep -v grep #查看进程,mysqld_safe为启动mysql的脚本文件,内部调用mysqld命令
- mysql 3329 0.0 0.0 113252 1592 ? Ss 16:19 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
- mysql 3488 0.0 2.3 839276 90380 ? Sl 16:19 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
- [root@egon ~]# netstat -an |grep 3306 #查看端口
- tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
- [root@egon ~]# ll -d /var/lib/mysql #权限不对,启动不成功,注意user和group
- drwxr-xr-x 5 mysql mysql 4096 Jul 20 16:28 /var/lib/mysql
- 安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个
- mac mysql error You must reset your password using ALTER USER statement before executing this statement.
- 解决方法:
- step 1: SET PASSWORD = PASSWORD('your new password');
- step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
- step 3: flush privileges;
登录,设置密码
- 初始状态下,管理员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用户登录本机,密码为空
忘记密码
linux平台下,破解密码的两种方式
- [root@egon ~]# rm -rf /var/lib/mysql/mysql #所有授权信息全部丢失!!!
- [root@egon ~]# systemctl restart mariadb
- [root@egon ~]# mysql
- [root@egon ~]# vim /etc/my.cnf #mysql主配置文件
- [mysqld]
- skip-grant-table
- [root@egon ~]# systemctl restart mariadb
- [root@egon ~]# mysql
- MariaDB [(none)]> update mysql.user set password=password("") where user="root" and host="localhost";
- MariaDB [(none)]> flush privileges;
- MariaDB [(none)]> \q
- [root@egon ~]# #打开/etc/my.cnf去掉skip-grant-table,然后重启
- [root@egon ~]# systemctl restart mariadb
- [root@egon ~]# mysql -u root -p123 #以新密码登录
windows平台下,5.7版本mysql,破解密码的两种方式
- 1 关闭mysql
- 2 在cmd中执行:mysqld --skip-grant-tables
- 3 在cmd中执行:mysql
- 4 执行如下sql:
- update mysql.user set authentication_string=password('') where user = 'root';
- flush privileges;
- 5 tskill mysqld #或taskkill -f /PID 7832
- 6 重新启动mysql
- 1. 关闭mysql,可以用tskill mysqld将其杀死
- 2. 在解压目录下,新建mysql配置文件my.ini
- 3. my.ini内容,指定
- [mysqld]
- skip-grant-tables
- 4.启动mysqld
- 5.在cmd里直接输入mysql登录,然后操作
- update mysql.user set authentication_string=password('') where user='root and host='localhost';
- flush privileges;
- 6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了
在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]为准
统一字符编码
- 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语言分为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 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;
- 清空表:
- delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
- truncate table t1;数据量大,删除速度比上一条快,且直接从零开始,
- auto_increment 表示:自增
- primary key 表示:约束(不能重复且不能为空);加速查找
Mysql数据库基础知识的更多相关文章
- MySQL数据库基础知识及优化
MySQL数据库基础知识及优化必会的知识点,你掌握了多少? 推荐阅读: 这些必会的计算机网络知识点你都掌握了吗 关于数据库事务和锁的必会知识点,你掌握了多少? 关于数据库索引,必须掌握的知识点 目录 ...
- 阿里面试官必问的12个MySQL数据库基础知识,哪些你还不知道?
数据库基础知识 1.为什么要使用数据库 (1)数据保存在内存 优点: 存取速度快 缺点: 数据不能永久保存 (2)数据保存在文件 优点: 数据永久保存 缺点: 1)速度比内存操作慢,频繁的IO操作. ...
- Java基础86 MySQL数据库基础知识
本文知识点(目录): 1.MySQL数据库的概述 2.MySQL数据库的管理[对数据库的操作](查询.删除.创建数据库,以及查询和修改数据库的编码模式) 3.表的管理[对数据库 表的操作] ...
- MySQL数据库基础知识复习
现在是2020年寒假,这也是新年写的第一篇博客,用了十几天的时间自学了数据库基础部分,想总结一下得失同时并通过写博客来复习前面学的知识点. 个人: 1.本来是计划一周学完基础部分的178p但没能完成这 ...
- mysql数据库基础知识和认识
mysql 创建一个用户 hail,密码 hail,指定一个数据库 haildb 给 hail mysql -u root -ppassworduse mysql;insert into user(h ...
- [mysql]数据库基础知识
数据库管理系统DBMS 软件 bin config db (保存数据) 写程序: 数据库在本地 找到目录 添加数据 数据库在远程 socket连接上远程机器 socket发送命令 需要做的事情 程序 ...
- python week09 Mysql 数据库基础知识
第一篇:初识数据库 注:<基础概念,不再赘述,点开链接查看> 第二篇:库相关操作 一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些 ...
- Mysql数据库基础知识(全)
前言:本博文为个人笔记,记录了Mysql的一些基本操作,一般掌握本博文就可以了解数据库.表.数据项的增删改查,希望对大家的学习有所帮助. 首先下载PHPSTUDY,将Mysql配置为系统变量. 具体操 ...
- Mysql之基础知识笔记
Mysql数据库基础知识个人笔记 连接本地数据库: mysql -h localhost -u root -p 回车输入数据库密码 数据库的基础操作: 查看当前所有的数据库:show database ...
随机推荐
- ndk http://www.th7.cn/Program/Android/201412/334955.shtml
http://www.th7.cn/Program/Android/201412/334955.shtml http://ruikye.com/2014/08/30/androidstudio_ndk ...
- css3的一个小demo(箭头hover变化)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HDU5033 building 单调栈+计算几何
正解:单调栈 解题报告: 哇生气辽QAQ本来打了半天feel good都快调出来了然后说换题了QAQ(所以可能那题的代码会过一阵子再放上来了QAQ 不过还是大爆手速打了一通拿到首杀了嘻嘻 美滋滋辽 然 ...
- python2.X编码
1.Python文件的编码 在Python文件中,可以在第一或第二行指定文件的编码格式(以注释的形式加),这也是Python语法规定的,见http://www.python.org/peps/pep- ...
- python中url解析 or url的base64编码
目录 from urllib.parse import urlparse, quote, unquote, urlencode1.解析url的组成成分:urlparse(url)2.url的base6 ...
- json数据处理:读取文件中的json字符串,转为python字典
方法1: 读取文件中的json字符串, 再用json.loads转为python字典 import json str_file = './960x540/config.json' with open( ...
- spring boot 自定义过滤器链
spring boot 会按照order值的大小,从大到小的顺序来依次过滤. 贴下代码: package com.osp.ucenter; import org.springframework.boo ...
- CentOS6.5安装RHadoop
1.首先安装依赖包(各个节点都要安装) [root@Hadoop-NN-01 ~]$ yum install gcc-gfortran #否则报”configure: error: No F77 co ...
- apply、map、applymap、Dropna
DataFrame常用易混淆方法 apply && map && applymap 1.apply():作用在一维的向量上时,可以使用apply来完成,如下所示 2.m ...
- Django实现cookie&session以及认证系统
COOKIE&SESSION 知识储备 由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内 ...