MYSQL快速入门(1)

版权声明:本文为博主原创文章,欢迎转载,转载请声明出处! https://blog.csdn.net/hansionz/article/details/84111426

一、MySQL数据库基础

1.为什么要存在数据库

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

  • 文件不利于数据查询和管理
  • 文件存储数据不安全
  • 文件在程序中控制不安全
  • 文件不利于存放海量数据
    为了解决上面的一些问题,一些大牛们设计出了各类数据库用来存储和管理数据,存储介质主要有磁盘和内存

2.目前主流的数据库

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

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.5 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. 修改表

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

# 修改表结构
-- 添加列
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中的各类语句一般使用大写,在本篇博文中,由于大写写起来比较难看懂,所以就采用小写

猜你喜欢

转载自blog.csdn.net/hansionz/article/details/84111426