初识mysql

一、概述

1、什么是数据库?

  

数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。(文件系统)

 

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。

 

数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。

 

数据库:存储、维护和管理数据的集合。

2、什么是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ?
 答:他们均是一个软件,都有两个主要的功能:

  • a. 将数据保存到文件或内存
  • b. 接收特定的命令,然后对文件进行相应的操作

    PS:如果有了以上软件,无须自己再去创建文件和文件夹,而是直接传递 命令 给上述软件,让其来进行文件操作,他们统称为数据库管理系统(DBMS,Database Management System)

3、什么是SQL ?
 答:上述提到MySQL等软件可以接受命令,并做出相应的操作,由于命令中可以包含删除文件、获取文件内容等众多操作,对于编写的命令就是是SQL语句。SQL􏰉􏵮􏵯􏰟,是􏵱􏰚􏵲􏵳􏵴􏰇􏰈􏵱􏰚􏵲􏵳􏵴􏰇􏰈结构化语言(Structured Query Language􏰕􏰐􏵵􏰯)的缩写,SQL􏰜􏰖􏰩􏰽􏵶􏱥􏲲􏰄􏰫􏰬􏰭􏵁􏵷􏰐􏰇􏰈是一种专门用来与数据库通信的语言。

 

如果没有数据库我们的数据只是保存在自己的设备中中不能共享给其他的pc就会造成很大的麻烦,我们通过把所有需要很多人公用的数据放在数据库中  以便于大家更好的对数据的维护,不在是单单的存储在了文件中了

 

二、下载安装

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

想要使用MySQL来存储并操作数据,则需要做几件事情:
  a. 安装MySQL服务端
  b. 安装MySQL客户端
  b. 【客户端】连接【服务端】
  c. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)

 

 

下载

        https://www.mysql.com/
安装
        windows:
            点点点
        Linux:
            yum install mysql-server
        Mac:
            点点点

 

windows和mac一般就直接点击下一步下一步就可以了

 

 

windows版本;

下面我们来试如果你下载的是压缩包的话 我们通过命令来按照数据库

1、下载

下载地址:

1
2
3
https://www.mysql.com/
 
http://dev.mysql.com/downloads/mysql/

 

window版本

1、官网去下载

 

2、针对操作系统的不同下载不同的版本

 

 

3.解压

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

4.添加环境变量

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

 

5.初始化

 

1
mysqld --initialize-insecure

 

 6.启动mysql服务

mysqld #启动MySQL服务

 

7.启动mysql客户端并连接mysql服务端(新开一个cmd窗口)

mysql -u root -p # 连接MySQL服务器

 

上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题,即将MySQL服务制作成windows服务

复制代码
注意:--install前,必须用mysql启动命令的绝对路径
# 制作MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.6.40-winx64\bin\mysqld" --install

# 移除MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove


注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
# 启动MySQL服务
net start mysql

# 关闭MySQL服务
net stop mysql
复制代码

 

8.让用户去加载权限,以管理员身份进入cmd,查看当前mysql进程

1
tasklist |findstr mysql  #查看当前mysql的进程

 

9.杀死当前的进程,执行如下命令

taskkill /F /PID 6052  # 杀死当前的进程pid

 

2、解压

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

3、初始化

MySQL解压后的 bin 目录下有一大堆的可执行文件,执行如下命令初始化数据:

1
2
3
cd c:\mysql-5.7.16-winx64\bin
 
mysqld --initialize-insecure

因为mysqld是你的客户端你要把它给执行起来  

 

、启动MySQL服务

执行命令从而启动MySQL服务

1
2
3
4
5
# 进入可执行文件目录
cd c:\mysql-5.7.16-winx64\bin
 
# 启动MySQL服务
mysqld

 

 

5、启动MySQL客户端并连接MySQL服务

由于初始化时使用的【mysqld --initialize-insecure】命令,其默认未给root账户设置密码

1
2
3
4
5
6
7
# 进入可执行文件目录
cd c:\mysql-5.7.16-winx64\bin
 
# 连接MySQL服务器
mysql -u root -p
 
# 提示请输入密码,直接回车

输入回车,见下图表示安装成功:

到此为止,MySQL服务端已经安装成功并且客户端已经可以连接上,以后再操作MySQL时,只需要重复上述4、5步骤即可。但是,在4、5步骤中重复的进入可执行文件目录比较繁琐,如想日后操作简便,可以做如下操作。

 

 

a. 添加环境变量

将MySQL可执行文件添加到环境变量中,从而执行执行命令即可

1
2
3
4
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
 
如:
C:\Program Files (x86)\Parallels\Parallels Tools\Applications;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Python27;C:\Python35;C:\mysql-5.7.16-winx64\bin

如此一来,以后再启动服务并连接时,仅需:

1
2
3
4
5
# 启动MySQL服务,在终端输入
mysqld
 
# 连接MySQL服务,在终端输入:
mysql -u root -p

 

b. 将MySQL服务制作成windows服务

上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:

1
2
3
4
5
# 制作MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
 
# 移除MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove

注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:

1
2
3
4
5
# 启动MySQL服务
net start mysql
 
# 关闭MySQL服务
net stop mysql

 

 

Linux上安装:

 

编译安装,编译安装有个好处我们可以指定文件存放地址

先安装 wget

yum install wget

 

然后执行

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-要安装的数据库版本.tar.gz

下面是安装5.6.19版本

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.19.tar.gz

 

 

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

 

 

三、sql概述

SQL:Structure Query Language。(结构化查询语言)

SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。

 

各数据库厂商都支持ISO的SQL标准。普通话

各数据库厂商在标准的基础上做了自己的扩展。方言

四、Sql的分类

DDL**(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;       CREATE、 ALTER、DROP

DML***(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);        INSERT、 UPDATE、 DELETE

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

DQL*****(Data Query Language):数据查询语言,用来查询记录(数据)。

SELECT

* 注意:sql语句以;结尾

 
也就是说sql语句就是专业管理数据库的语言 但是呢  很多厂商都是在这个基础上进行了一些自己的基础
如果你回了sql那么学习其他的数据库就会很简单了
 
 
 

数据库操作:

DDL:操作数据库、表、列等

使用的关键字:CREATE、 ALTER、 DROP

 

下面是通过sql语句来对数据库的操作:

 

数据库中的所有的命令后面都必须加;分号

 

数据库其实就是一个存放数据的容器 你在这个容器内创建数据库就是创建一个文件夹来保存文件  创建表就是在文件夹内创建一个文件来保存具体的数据

 

 

显示数据库(就是查看你的数据库软件中建立了几个数据库)

1
SHOW DATABASES;

 

创建数据库:

在数据库软件中创建你需要的数据库:

创建数据库

1
2
3
4
5
# utf-8
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
 
# gbk
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
 

为了让你的数据库发生乱码  可以指定编码:create database + 创建数据库名字 default charset utf8; 或者  create  database +数据库名字 character set gbk;

 

 下面是两种创建数据库的方式 只不过创建的命令不一样而已:

创建的时候加上你创建的编码是为了你在对这个数据库增加内容的时候输入中文会造成你的中文的乱码

 

create database db2 default charset utf8;  这是创建了一个utf8的数据库

create database db2 character set utf8;    这也是创建一个utf8的数据库

 

 

1、显示数据库

1
SHOW DATABASES;

默认数据库:
  mysql - 用户权限相关数据
  test - 用于用户测试数据
  information_schema - MySQL本身架构相关数据

2、创建数据库

1
2
3
4
5
# utf-8
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
 
# gbk
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

3、使用数据库

1
USE db_name;

显示当前使用的数据库中所有表:SHOW TABLES;

4、用户管理

1
2
3
4
5
6
7
8
9
10
创建用户
    create user '用户名'@'IP地址' identified by '密码';
删除用户
    drop user '用户名'@'IP地址';
修改用户
    rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
修改密码
    set password for '用户名'@'IP地址' = Password('新密码')
  
PS:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)

5、授权管理

1
2
3
show grants for '用户'@'IP地址'                  -- 查看权限
grant  权限 on 数据库.表 to   '用户'@'IP地址'      -- 授权
revoke 权限 on 数据库.表 from '用户'@'IP地址'      -- 取消权限

 一般的数据库创建的时候都是默认为utf8的编码

如果你的数据库创建的时候没有指定编码或者需要改编码 就用:

alter database +数据库名 character set +要修改的编码

 

alter database db4 character set gbk;   把db4这个数据库的编码改为gbk

 

            all privileges  除grant外的所有权限
            select          仅查权限
            select,insert   查和插入权限
            ...
            usage                   无访问权限
            alter                   使用alter table
            alter routine           使用alter procedure和drop procedure
            create                  使用create table
            create routine          使用create procedure
            create temporary tables 使用create temporary tables
            create user             使用create userdrop user、rename user和revoke  all privileges
            create view             使用create view
            delete                  使用delete
            drop                    使用drop table
            execute                 使用call和存储过程
            file                    使用select into outfile 和 load data infile
            grant option            使用grant 和 revoke
            index                   使用index
            insert                  使用insert
            lock tables             使用lock table
            process                 使用show full processlist
            select                  使用select
            show databases          使用show databases
            show view               使用show view
            update                  使用update
            reload                  使用flush
            shutdown                使用mysqladmin shutdown(关闭MySQL)
            super                   􏱂􏰈使用change master、kill、logs、purge、master和set global。还允许mysqladmin􏵗􏵘􏲊􏲋调试登陆
            replication client      服务器位置的访问
            replication slave       由复制从属使用
关于权限
 对于目标数据库以及内部其他:
            数据库名.*           数据库中的所有
            数据库名.表          指定数据库中的某张表
            数据库名.存储过程     指定数据库中的存储过程
            *.*                所有数据库
对于数据库
            用户名@IP地址         用户只能在改IP下才能访问
            用户名@192.168.1.%   用户只能在改IP段下才能访问(通配符%表示任意)
            用户名@%             用户可以再任意IP下访问(默认IP地址为%)
对于用户和IP
grant all privileges on db1.tb1 TO '用户名'@'IP'

            grant select on db1.* TO '用户名'@'IP'

            grant select,insert on *.* TO '用户名'@'IP'

            revoke select on db1.tb1 from '用户名'@'IP'
示例

 

 

 

 

 

 

 创建完数据库后 就相当于创建了文件夹 你下面要创建文件把内容存进去  文件就是表

你要先切换到你想要存储的数据库内进行创建

use + 数据库名/表名   切换到你要进入的数据库或者表内

use  myself;   切换到myself这个数据库下
use db1; 切换到myself 这个数据库下

 

 

查看数据库内的所有的表的名称:

 

show  tables;   查看当前数据库下 所有的表

 

 

show  databases;  查看所有的库名
select database(); 查看当前所在的库

show tables; 查看库中所有的表名

show table from 库名; 查看库中的所有表

use + 库名/表名;切换进库或者表

desc  表名  查看表结构

 

 

 

创建表

 

数据库其实就是一个存放数据的容器 你在这个容器内创建数据库就是创建一个文件夹来保存文件  创建表就是在文件夹内创建一个文件来保存具体的数据

 

创建数据库(文件夹):create database +数据库名字

 

1
2
3
4
create table 表名(
    列名  类型  是否可以为空,
    列名  类型  是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8

当你查看完这个数据库中的表之后就可以增加你自己的需要的表了:  create  table  +要增加的表名(列  列的类型)  default charset=utf8;

create table t1(age int) engine=innodb default charset=utf8; 创建一个t1的表 然后表中有一个age的列 这个列是int类型的

 

 

其中个的engine=innodb写上是为了防止你的数据会因为在传输的时候突然断开连接没有传输完毕造成的紊乱,如果写上engine=innodb 这个是支持事物 innodb好比你的数据库在发送消息  对方正在准备接收,数据库在传输的时候传输一半的时候由于一些不定因素,突然就断开了连接如果没有innodb的话 数据库可能会说我已经传输完毕 而对方会说我没接收就造成了数据的紊乱了  所以我们要加上innodb

create table t3(id int auto_increment,name char(10))engine=innodb default charset=utf8  这个是创建一个t3表然后这个表内增加一个id自增的列 然后name列的最大字节是10

 

 

create table t1(
列名 类型 null,
列名 类型 not null,
列名 类型 not null auto_increment primary key,
id int,
name char(10)
)engine=innodb default charset=utf8;

 

 

还有一种如果你想要在前面加上序列号  并且让座合格序列号会随着你增加的内容而增加 那么就在这个列的后面规定

    auto_increment  表示:自增

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

    not null 是否为空

 

        是否可空,null表示空,非字符串
            not null    - 不可空
            null        - 可空
是否可以为空

 

   默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
            create table tb1(
                nid int not null defalut 2,
                num int not null
            )
默认值

 

 

 

既然我们创建了表那么我们要想一下 万一创建的表出错了怎么办呢?欲知后事请看下面

删除表:

  drop table 表名

  

drop table t2;  删除t2这个表

 

清空表:

1
2
delete from 表名
truncate table 表名

 

 

 

delete from是清空这个表之后 再继续添加表内的信息就会接着删除的继续开始添加,如果你以前增加到第4条开始删除的那么现在再添加就是从第5条开始

truncate table 这个清空表之后再重新插入的信息就会从头开始

 

增加表中的列:

如果想在一个已经建好的表中添加一列,可以用诸如:

alter table t1 add column addr varchar(20) not null;  不可以为空的时候

alter table t1 add column addr varchar(20);  可以为空

这条语句会向已有的表t1中加入一列addr,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用:

alter table t1 add column addr varchar(20) not null after user1;不可以为空

alter table t1 add column addr varchar(20) after user1   可以为空的状态

注意,上面这个命令的意思是说添加addr列到user1这一列后面。如果想添加到第一列的话,可以用:

alter table t1 add column addr varchar(20) not null first;

alter table t1 add column addr varchar(20)not null null;  在表t1的最后中增加一个addr列 这个列的最大可以支持20个字节输入


alter table t1 add column addt varchar(20)not null first;  在t1表中的第一列增加一个addt


alter table t1 add column att varchar(20) not null after age; 在表t1的age列后增加一个att的列
增加列

增加的列可以设置为可以为空或者不可以为空 如果设置不可以为空的话你增加信息的时候就会报错 因为你要记得数据库的列在一起他的行会随着其中的一个列的增加而增加你这个列增加但是其中有一个是不可以为空 那么就会出错

 

 

删除列:

alter table 表名  drop column 要删除的列;

alter table yusheng drop column def ;  将  t1表中的def列给删除了

 

 

显示当前使用的数据库中所有表:SHOW TABLES;

 

创建完你的数据库和表之后就可以增加内容了

 

mysql在表的某一位置增加一列、删除一列、修改列名

如果想在一个已经建好的表中添加一列,可以用以下代码:

alter table 表名 add column 列名 varchar(20) not null;

这条语句会向已有的表中加入一列,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用:

alter table 表名 add column 列名 varchar(20) not null after user1;

注意,上面这个命令的意思是说添加addr列到user1这一列后面。如果想添加到第一列的话,可以用:

alter table 表名 add column 列名 varchar(20) not null first;


将表yusheng中,列名def改为unit

alter table yusheng change  def unit char;


将表yusheng中,列名def的列删除

alter table yusheng drop column def ;






复制table表
create table 新表名(
select ID,name,number,numberid
from 要复制的表名);


查看表的各种数据类型
describe `student`


查看表的已存数据
select * from 表名 (select id,name,number,numberid from 表名)


添加数据
insert into 表名 (ID,name,number,numberid) values(1,'Logic',220,1),(2,'HTML',160,1),(3,'Java OOP',230,1);


删除数据
delete from 表名 where 条件;


修改数据
update 表名 set numberid=2 where 条件


降序排列
select id,name,number,numberid from 表名 order by id desc;


添加别名
select id(列名) '别名' ,(列名) as '别名' from 表名;
mysql在表的某一位置增加一列、删除一列、修改列名

 

 

 

 

 

插入内容:insert  into:

insert into 表名(要增加内容的列名)  values(增加的内容) ;

插入数据:
insert into t1(id,name) values(1,'alex');

就是给t1这个表中的id和name列增加1和alex信息  

  

删除信息 delete from t1 where id < 6 ;

删除t1表中的id小于6的信息

 

 

    

posted @ 2018-06-03 17:39  可爱的红领巾  阅读(225)  评论(0编辑  收藏  举报