MySQ数据库介绍和基本使用

一 概述

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

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

二 数据对象

表,视图,函数,存储过程,索引等。

就是存储数据的,里面有一条条的记录,记录是由字段组成的。每个字段都有自己的字段名、字段值、字段类型(数据类型)。字段是存储数据的基本单元。类似Java中的对象,用于存储数据。

表(table)是一种结构化的文件,可以用来存储特定类型的数据,如:学生信息,课程信息,都可以放到表中。另外表都有特定的名称,而且不能重复。表中具有几个概念:列、行、主键。 列叫做字段(Column),行叫做表中的记录,每一个字段都有:字段名称/字段数据类型/字段约束/字段长度

学生信息表

学号(主键)

姓名

性别

年龄

00001

张三

20

00002

李四

20

视图

我们可以理解为一张虚表(它在物理磁盘上并不真实存在)。视图是基于select语句查询生成的结果集。当一条select语句比较复杂而且调用的频率也比较高时,我们不想再写一遍语句,这时候可以把这条select语句创建为一个视图。每次使用视图的时候,就可以把它当成一张表来用。

函数

通常是一个功能的实现,我们大部分使用的是系统函数(MYSQL提供的),我们也可以自定义函数。它的调用套路通过使用select 函数名(参数1,参数2..);来调用。它只有一个返回值。

存储过程

也是一个功能的实现。我们所说的数据库编程,SQL语句编程,就主要是指自定义一个存储过程。调用存储过程是使用exec 存储过程名 参数1等来调用。它是可以返回多个值,也可以没有返回值。

索引

我们之前接触过,它就像一本书的目录一样,是为了加快我们查询速度而建立的。

表结构

表名称:dept

描述:部门信息表

英文字段名称

中文描述

类型

DEPTNO

部门编号

INT(2)

DNAME

部门名称

VARCHAR(14)

LOC

位置

VARCHAR(13)

表名称:emp

描述:员工信息表

英文字段名称

中文描述

类型

EMPNO

员工编号

INT (4)

ENAME

员工姓名

VARCHAR(10)

JOB

工作岗位

VARCHAR(9)

MGR

上级领导

INT (4)

HIREDATE

入职日期

DATE

SAL

薪水

DOUBLE(7,2)

COMM

津贴

DOUBLE (7,2)

DEPTNO

部门编号

INT(2)

注:DEPTNO字段是外键,DEPTNO的值来源于dept表的主键,起到了约束的作用

表名称:salgrade

描述:薪水等级信息表

英文字段名称

中文描述

类型

GRADE

等级

INT

LOSAL

最低薪水

INT

HISAL

最高薪水

INT

三 数据类型

刚才创建创建表的时候,我们用到了数据类型,类型目的就是限制数据的类型,那么接下来我们看一下常用的几种类型

整型,浮点型,字符型,日期时间型等。

数值型

MySQ数据库介绍和基本使用_第1张图片

时间类型

MySQ数据库介绍和基本使用_第2张图片字符串型

MySQ数据库介绍和基本使用_第3张图片

数据库/SQL的数据类型也是挺多的,但是我们掌握几个常用的就是,比如整型int浮点型decimal(18,2)(共18位,16位整数部分与2位小数部分),字符型就是字符串类型varchar(100)(可以存储100个字符),日期时间型datetime('2018-05-23 15:00:00')。当然还有其他的具体类型,但是我们在基础阶段就先知道这些就可以了。 

 char与varchar的区别。简单来说char 是定长,varchar是变长.比如char(100)类型的字段一旦定义,不管里面是否真的有值,它就固定会占用100个字符对应的存储空间,这种类型对空间的利用率其实并不高。varchar(100)类型的字段定义后,它所占用的空间就是里面存储内容占用的空间,但是最大不会超过100个字符,这种类型对空间的利用率是很高的。

四 SQL的分类

数据查询语言(DQL-Data Query Language)  

代表关键字:select

数据操纵语言(DML-Data Manipulation Language)

代表关键字:insert,delete,update

数据定义语言(DDL-Data Definition Language)

代表关键字:create ,drop,alter,

事务控制语言(TCL-Transactional Control Language)

代表关键字:commit ,rollback;

数据控制语言(DCL-Data Control Language)

代表关键字:grant,revoke.

五 MySQL的基本使用

5.1 DCL-用户创建和授权

在mysql中,内置一个超级管理员,就是root,在安装的时候已经指定了root的密码

但是在开发的时候,不会让我们使用root用户,这样权限太大,一般都会帮我们创建一个用户,并且我们这个用户只能操作我们相关的数据

 注意: 在Navicat 中新建一个查询的步骤

MySQ数据库介绍和基本使用_第4张图片

  注意:在Navicat中运行查询语句的方式有两种 :

                1 点击工具栏中的绿色箭头,运行全部语句

MySQ数据库介绍和基本使用_第5张图片

                2 在查询中选中要运行的部分,点击右键运行

注意: 不能每次都点全部运行,否则查询表中的所有语句会重复执行

# 创建用户语句

# CREATE USER '用户名'@'host' IDENTIFIED BY '密码';

@host代表

eg: create user 'user1'@ '127.0.0.1' identified by '111';

# 表示创建一个用户名为user1 密码为111的用户

注意: 数据库中不区分大小写,host:指定在哪个主机上可以登录,本机可用localhost,也可以用

127.0.0.1表示本机

# 授权

# GRANT 权限 on 数据库.表 to '用户名'@'host' IDENTIFIED BY '密码';

# 刷新权限

#FLUSH PRIVILEGES;

# test.* 是test数据库下所有表  *.* 表示所有数据库下所有表

# 权限 : all privileges 所有权限 select 查询 update 更改 insert 添加 delete 删除 drop 删除表 create 创建表

eg: GRANT SELECT on test.student to 'user1'@'127.0.0.1' IDENTIFIED BY '111';

FLUSH PRIVILEGES;

# 撤销授权

# grant 授权 revoke 撤销授权 , 语法一样 把to换成from即可

eg:revoke SELECT on test.student from 'user1'@'127.0.0.1' IDENTIFIED BY '111';

# 删除用户 DROP

# DROP USER '用户名'@'host';

eg: drop user 'user1'@'127.0.0.1';

5.2 DDL-数据库创建和删除

5.2.1 创建系统命令

# 注释

-- 单行注释

/*

多行注释

*/

-- 查看当前连接mysql服务的版本号

select version();

-- 查看当前连接的mysql中所有数据库

show databases;

-- 切换到test数据库下

use test;

-- 查看当前数据库下所有的表

show tables;

5.2.2 数据库创建和删除

-- CREATE 创建 DROP 删除

-- USER 用户  database 数据库 table 表

-- 创建数据库

# create datebase 数据库名

create database test1;

--创建test1数据库

在Navicat中新建查询

在Navicat中创建成功显示结果如下:

MySQ数据库介绍和基本使用_第6张图片

这时候可以在左边列表中看到创建的数据库,如果没有就在左边列表中点击鼠标右键-->刷新一下列表如下图:

MySQ数据库介绍和基本使用_第7张图片

MySQ数据库介绍和基本使用_第8张图片

这时候左边列表总就有一个test01数据库了

-- 切换数据库

# use 数据库名 切换数据库

eg: use test1;

就切换到test1数据库下了

-- 删除数据库

# drop 数据库名

eg: drop database test1;

执行完删除语句后,还是要点击一下刷新,才能看见test1数据库不见

5.3 表的创建和删除

-- 创建表

-- create table 表名 (

-- 列名 类型,

-- 类名 类型,

-- .....

-- );

eg: 

-- 创建数据库test1
-- 创建数据库
create database test1;
-- 切换到数据库test1下
use test1;
-- 创建表 学生表
create table student(
	-- id为整数
 	id int,
	-- 姓名为字符串 并且20个字符
 	name varchar(20),
	-- 成绩 小数,共5位 其中2位小数3位整数
	score decimal(5,2)
);

运行结果为: 

MySQ数据库介绍和基本使用_第9张图片

还是一样,在左侧表中右键 刷新 就可以看到刚才创建的表 student

也可以查看已经存在的表的建表语句

-- 查看建表语句

show create table student_info;

-- 删除表

drop table 表名

eg : drop table `student `;

建议所有的表名和列名 都加反引号 `` (也就是~~键)

比如 table是建表关键字,如果我们想把表名弄成table,那么此时就需要加反引号括起来

但是不建议使用关键字,因为这样的话,我们所有对该表的操作,都必须加反引号

-- 假如已经有了这个表了,在创建就会报错  Table 'student_info' already exists

-- 可以这样解决 如果不存在就创建,存在就不创建,不创建就不会报错

5.4  DML-数据操作

5.4.1 Insert : 添加数据

-- INSERT 用于向数据库中 添加数据

-- 格式 : insert into 表名(列名,列名....) values(值,值.....);

-- 格式 : insert into 表名 values(值,值.....); 用于所有的列都添加数据

-- 注意 : 字符串需要加引号

eg :    

insert into student(id,name,score) values(1,'张三',100);

执行结果:

 

5.4.2 Update : 更新数据

 注意 下面这种写法,是整个表的操作,会把表中所有数据全部更改

-- 格式 : update 表名 set 列名=值,列名=值...;

-- 如果不是全表操作,就必须使用where 进行行判断

-- 格式 : update 表名 set 列名=值,列名=值... where 列名=值;

update student_info set score = 60 where id = 1;

eg:

update student set name='李四' where id=1;

运行结果:

 

5.4.3 Delete : 删除数据

-- delete : 删除数据

-- 下面代码,没有使用where,就把表中所有数据都删除

-- 格式 : delete from  表名 ;

-- 只要不是把所有数据都删除,就需要使用where 筛选要删除的数据

-- 格式 : delete from  表名 where 列名= 值;

为了方便看结果,我们再先表里插入一条语句

MySQ数据库介绍和基本使用_第10张图片 

eg:

delete from student where id=1;

结果为:

 

5.5  DQL-数据查询

Select : 查询数据

-- select : 数据查询

-- 格式 : select 列限定 from 表限定 where 行限定;

-- 表限定 : 你要查询那个表

-- 行限定 : 你要那些数据行

-- 列限定 : 你要得到那些列

 需求: 查询id=2 的学生的信息

select * from student where id=2;
-- * 代表全部信息

结果为:

MySQ数据库介绍和基本使用_第11张图片

如果只是查询的的一个列,比如说名字

select name from student where id=2;

 结果为:

MySQ数据库介绍和基本使用_第12张图片

 

 

 

你可能感兴趣的:(数据库,数据库,mysql,database)