【MYSQL】从零基础到快速入门(1)

一、MySQL数据库基础

1.为什么要存在数据库

对于数据存储,我们可以接使用文件,但是为什么要存在数据库,因为文件存储数据有很大的缺点:

  • 文件不利于数据查询和管理
  • 文件存储数据不安全
  • 文件在程序中控制不安全
  • 文件不利于存放海量数据

为了解决上面的一些问题,一些大牛们设计出了各类数据库用来存储和管理数据,存储介质主要有磁盘和内存。

2.目前主流的数据库

sql server: 微软的数据库,适用于中大型项目
Oracle :全球最大的数据库使用量,java程序员必学,适合处理复杂业务,收费的
MySql:sun公司产品,现在也属于甲骨文,并发性好,不适合复杂的业务,免费的,主要 用在电商,SNS,论坛。对简单的SQL处理效果好。
DB2 :IBM公司,处理海量数据,功能强悍
informix:IBM公司,安全非常强

3.MTSQL的基本使用
3.1 MYSQL的安装
  • centos 7.0下直接执行yum -y install mysql-server进行安装
3.2 MYSQL的启动和关闭
  • 启动:service mysqld start
  • 关闭:service mysqld stop
3.3 连接到MYSQL
  • mysql [-h 主机] -u 用户 -p

说明:

  • -h: 如果没有写-h 127.0.0.1默认是连接本地 。如果需要登录到另外一个mysql,则需要修改配置,一般情况不让远程登录
  • -u:表示登录的用户,一般是root
  • -p:表示登录密码,刚开始如果自己没有设置,默认是空,直接跳过即可
  • 出现下面的界面,说明已经连接到数据库
    在这里插入图片描述
3.4 数据库服务器、数据库和表的关系

安装数据库服务器,只是在机器上安装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。一个数据库服务器可以存在多个数据库,而一个数据库也可以存在多个表。

3.5 创建库和表

创建库:create database 库名
使用库:use 库名
创建表: 表是在库里创建的,所以要先选择库才能创建表

-- 创建表
create table 表名(    
字段1 列类型1,    
字段2 列类型2,    
...    
字段n 列类型n 
);

向表中插入数据:

insert into 表名(字段名1, 字段2, ...) values(values1, value2);

查看表中的数据

select * from 表名

例如:创建一个person表,并插入一条记录

-- 创建表
create table person( name varchar(30), id int);
-- 插入记录
insert into person values('zhangsan',123);
-- 查看表中的数据
-- select * from person
3.6 SQL分类

数据定义语言,用来维护存储数据的结构
DDL:create drop alter
数据操作语言,操作表中的内容
DML:insert delete update
数据查询语言
DQL:select
数据控制语句,负责权限管理和事务
DCL:grant revoke commit

二、库的操作

1.创建数据库

语法

create database [if not exists] db_name 
[createspecification][createspecification]
-- createspecification:
		-- CHARSET(字符集,一般指定为utf8)
		-- COLLATE(校验规则,数据库字符集的比较方式,默认utf8_ general_ ci,一般不指定)
1.1 字符集和校验规则

字符集:是一套表示字符的符号和这些的符号的底层编码
校验规则: 是在字符集内用于比较字符的一套规则如在某个字符集“X”的A与a,他们的底层编码分别是A=0,a=100。这里符号“A”“a”和底层编码“0”“100”就是字符集的概念范围。假设我们要比较A与a的大小,我们得到a>A,因为我们是根据其底层编码进行比较的,这就是这个字符集“X”的一种校验规则“Z”(根据底层编码来比较)。假设,现在有另外一种校验规则,是先取其相反数,然后再比较大小,那么就很显然的得到a<A,这就是字符集“X”的另外一种校验规则“Z1”。由此可见,一种字符集可能存在多个与之对应的校验规则(一对多关系)

-- 创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
-- a A b B (排序)
mysql> create database x1 collate utf8_general_ci; 
-- 创建一个数据库,校验规则使用utf8_ general_ bin[区分大小写]
-- A B a b(排序)
 create database x2 collate utf8_bin;

查看系统默认字符集以及校验规则

show variables like 'character_set_database'; -- 字符集
show variables like 'collation_database';  -- 校验规则

创建库的各种情况

create database company1; -- 系统默认的字符集和校验规则
create database company2 charset=utf8; -- 指定为utf8字符集建库
create database company3 charset=utf8 collate utf8_general_ci; -- 指定字符集为utf8和校验规则为utf8_general_ci
2.操纵数据库
2.1 查看现在存在哪些数据库

show databases;

2.2 显示数据库创建语句
mysql> show create database mytest; 
+----------+------------------------------------------------------------+   | Database | Create Database                                            | 
+----------+----------------------------------------------------------+ | 
mytest     | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */| +----------+----------------------------------------------------------+
 

说明:

  • 1) MySQL 建议我们关键字使用大写,但是不是必须的。
  • 2) 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
  • 3)/*!40100 default.... */这个不是注释,表示当前mysql 版本大于4.01版本,就执行这句话
2.3 删除数据库
DROP DATABASE [IF EXISTS] db_ name; 
-- []代表可存在也可不存在
-- 删库操作一定要慎重使用
-- 数据库内部看不到对应的数据库 
-- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
2.4 查看当前MySQL数据库的连接情况
  show processlist 
  -- 可以查出当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。如果发现自己数据库比较慢时,可以用这个指令来看看数据库连接情况。 

在这里插入图片描述

2.5 备份和恢复数据库

备份语法mysqldump -u(以哪个用户去备份) -p(密码) 数据库名 > 数据库存放路径

-- 退出mysql,在shell下执行对数据库进行备份
mysqldump -u root -p  msg > ./msg.bk
-- 然后进入mysql中删除原来的库
drop database msg
-- 要恢复数据库,必须先创建一个空的数据库。好和以前的数据库名字一致
create database msg
use msg
source ./msg.bk
-- 这样即可恢复原来的数据库

备份的不是数据库中的一张表,而是数据库

-- 备份到当前目录下
mysqldump -u root -p密码 数据库名 表名1  表名2  > ./msg.bk 
-- 恢复
source 备份的文件路径及文件名

备份多个数据库

mysqldump -u root -p密码 -B 数据库名1  数据库名2 ... > 数据库存放路径 
-- 同时恢复多个数据库  
source 备份的文件 

注意点:

  • 在使用source 恢复数据时,保证use对应的数据库
    当我们备份一个数据库时,也带上-B参数,在恢复数据库时,不需要再创建空数据库
2.6 修改库

修改库的语法:

ALTER DATABASE [IF EXISTS] db_name [alter_spacification ],[alter_spacification]

-- 对数据库的修改主要指的是修改数据库的字符集,校验规则
alter_spacification:   
	[DEFAULT] CHARACTER SET charset_name   
	[DEFAULT] COLLATE collation_name 

例如:

-- 修改msg库的字符集为utf8
alter database msg charset=utf8

查看msg库的字符集:
在这里插入图片描述

三、表的操作

1.创建表

创建表的语法:

CREATE TABLE table_name (  
field1 datatype,  
field2 datatype,  
field3 datatype 
) character set 字符集 collate 校验规则 engine 存储引擎; 
说明:
-- field 表示列名 
-- datatype 表示列的类型
-- character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准 
--collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

创建一张学生表

 create  table  stu1 (      
 	id int comment '学号',      
 	name varchar(20) comment '姓名'
 ) character set utf8 engine MyISAM; 

不同的存储引擎,创建表的文件不一样:
在这里插入图片描述

查看表的结构

desc 表名

例如:查看学生表示stu1的表结构
在这里插入图片描述

2. 修改表

修改表一般指的是修改某个表的结构,比如字段名字字段大小字段类型,表的字符集类型,表的存储引擎添加字段删除字段等等

3. 修改表结构
-- 添加列
alter table 表名 add (filed datatype) 

-- 默认插入到最后一列
alter table user add addr varchar(60);

-- after name 表示插入到name后边,但是不能用before
alter table user add gender varchar(2) after name;

-- in first 表示插入到第一列
alter table user add class int first;

-- 改变列的类型
alter table 表名 modify 列名 新类型名
alter table user modify name varchar(60)

-- 删除某列,这一列的数据全部没有,尽量不要这么做
alter table user drop 列名;

-- 改表名
alter table user rename to 新表名;

-- 修改表的字符集
alter table user charset=gbk;

-- 修改列的字符集
alter table user modify name varchar(60) charset utf8;

-- 将name列修改为xingming
alter table user change name xingming varchar(30);
  • :在MYSQL中的各类语句一般使用大写,在本篇博文中,由于大写写起来比较难看懂,所以就采用小写。
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页