23 MySql基础及其入门

237 阅读9分钟

1 数据库的基本概念

数据库就是存储和管理数据的仓库,其本质上就是一个文件系统,还是以文件的方式,将数据存储在电脑上。

数据存储方式的比较:

存储方式优点缺点
内存速度快只能临时存储数据
文件数据可以永久存储只能使用IO流操作文件,效率较低
数据库可以永久存储数据,方便存储和管理数据占用资源

从上面不难看出,使用数据库存储数据,用户可以非常方便的对数据库中的数据进行增删改查操作。

在开发中常见的数据库软件有:

数据库名介绍
MySql数据库开源免费的数据库,一般主要用在中小型项目中
Oracle数据库收费的数据库,安全性较高
DB2收费型的超大型数据库,主要用于银行
SQL Server微软公司的收费数据库,只能运行在windows系统上

2 数据库管理系统

数据库管理系统(DBMS)是一种操作和管理维护数据库的大型软件,而MySql就是一个数据库管理软件,安装MySql软件的电脑又被称为数据库服务器。

数据库管理系统的作用:建立、维护和使用数据库,对数据库进行统一的管理。

数据库管理系统、数据库以及表三者之间的关系:MySql中管理着很多数据库,一个数据库就对应一个实际应用,在每个数据库中又存在着多张表,每张表分别对应着各自的实际业务,表中存储的正是业务所需的数据。

数据库表:数据库是以表为单位进行数据的存储,并且每张表都会对应java中一个实体类,每个字段都有对应的数据类型。

3 SQL

SQL是结构化查询语言,是一种特殊的编程语言,是一种数据库查询和程序设计语言,用于存储数据以及查询、更新和管理关系型数据库系统。

SQL的作用:

  • 是所有关系型数据库的统一查询规范,不同的关系型数据库都支持SQL
  • 不同数据库之间的SQL会存在一些小差别

SQL语法格式:SQL语句可以单行或者多行书写,以分号结尾,需要注意的是SQL是不区分大小写的,一般关键字大写,数据库名和列名小写。(小建议在书写SQL语句是可以适当的缩进和空格,便于阅读)

在SQL中写注释的方式:

注释语法说明
--空格单行注释
/* */多行注释
#MySql特有的单行注释

SQL可以细分为四大类:数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)以及数据控制语言(DCL),相关介绍见下表

分类说明
数据定义语言简称DDL,用来定义数据库对象:数据库,表,列等
数据库操作语言简称DML,用来对数据库中表的记录进行更新
数据库查询语言简称DQL,用来查询数据库中表的记录
数据库控制语言简称DCL,定义数据的访问权限和安全级别及创建用户

在这里我们着重学习数据库操作语言DML和数据库查询语言DQL。

4 DDL操作数据库

创建数据库

有两种方式:

  • create database 数据库名;创建指定名称的数据库
  • create database 数据库名 character set 字符集; 创建指定名称的数据库,并且制定了数据库所使用的字符集

实例代码:

create database student;
create database student character set utf8;

查看数据库

命令介绍
use 数据库名;切换数据库
select database();查看当前正在使用的数据库
show database;查看MySql中所有的数据库
show create database 数据库名;查看数据库的定义信息

实例:

use student;
select database();
show databases;
show create database student;

修改数据库

修改数据库的字符集语法格式:alter database 数据库名 character set 字符集;

实例:

alter database student character set gbk;

删除数据库

删除数据库语法格式:drop database 数据库名;

实例:

drop database student;

5 DDL操作数据表

MySql中常见的数据类型有:

类型说明
int整形
double浮点型
varchar字符串型
data日期类型,只有年月日(yyyy-MM-dd)

注意在MySql中表示字符串类型的有varchar和char两种,两者之间的区别是:

  • char是固定长度的,根据定义的字符串长度分配空间
  • varchar不是固定长度的,会根据实际字符串的长度进行空间的分配

因此char类型适合存储长度固定的字符串,而varchar适合存储在一定范围内的,有长度变化的字符串。

创建表

创建表的语法格式:

create table 表名(
  字段名称1 字段类型(长度),
  字段名称2 字段类型   --最后一行不用加逗号
);

实例

use student;
create table category(
    cid int,
    cname varchar(20)
);
create table test1(
    tid int,
    tdate date
);

快速创建一个表结构相同的表(复制表结构)

语法格式:

create table 新表名 like 旧表名

实例

create table test2 like test1;

查看表

查看表有两种方式,语法格式是:

show tables; --查看当前数据库中所有表名
desc 表名; ---查看数据表的结构

实例:

show tables;
desc category;

删除表

删除表有两种方式,语法格式如下:

drop table 表名; --删除表
drop table if exists 表名;  --判断表是否存在,存在就删除,否则就不执行任何操作

实例:

drop table test1;
drop table if exists test1;

修改表

修改表名的语法格式: rename table 旧表名 to 新表名;

实例:

rename table category to cat;

修改表的字符集的语法格式:alter table 表名 character set 字符集;

实例:

alter table cat character set utf8;

向表中添加列,关键字add,具体语法格式:alter table 表名 add 字段名称 字段类型;

实例:

alter table cat add cdesc varchar(20);

修改表中列的数据类型或长度,关键字modify,具体语法格式:alter table 表名 modify 字段名称 字段类型

实例:

alter table cat modify cdesc varchar(30);

修改表中列的名称,关键字change,具体语法格式:alter table 表名 change 旧列名 新列名 类型(长度);

实例:

alter table cat change cdesc desction varchar(50);

删除列,关键字drop,具体语法格式:alter table 表名 drop 列名;

实例:

alter table cat drop desction;

6 DML操作表中数据

SQL中的数据库操作语言DML用于对表中的数据进行增删改操作。

插入数据

想表中插入数据的语法格式:

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

实例:

insert into student (sid, sname, sex, address) values (1,'孙悟空','男','花果山');--插入全部字段,将所有字段值写出来
insert into student values(2,'猪八戒','男','高老庄');--插入全部字段,不写字段名
insert into student (sid,sname,sex) values (3,'沙悟净','男');--插入指定字段的值

注意事项:

  1. 值与字段要一一对应,个数和数据类型都要相同
  2. 值的数据大小,必须在字段指定的长度范围内
  3. varchar char date类型的值必须使用单引括起来(不建议使用双引号)
  4. 插入空值时,可以不写或者插入null
  5. 当要插入指定字段的值,必须写上列名

更改数据

不带条件的修改数据,语法格式:

update 表名  set  列名 = 值;

带条件的修改数据,语法格式是:

update 表名  set  列名 = 值  [where 条件表达式:字段名 = 值];

使用具体实例:

update student set sex='女';
update student set sex='男' where sid=3;
update student set sex='女',address='北京' where  sid=1;

删除数据

删除所有数据的语法格式:

delete from 表名

删除满足条件的数据,语法格式:

delete from 表名 [ where 字段名= 值 ]

实例:

delete from cat;
delete from student where sid=3;

注意删除表中的数据有两种方式:

  • delete from 表名;这种方式不推荐,有多少记录就执行多少次删除操作,效率较低
  • truncate table 表名;推荐这种方式,先删除整张表,然后再创建一张一模一样的表,效率较高

7 DQL查询表中数据

简单查询

查询不会对数据的数据进行修改,只是一种显示数据的方式,具体语法格式是:

select 列名 from 表名

实例

select * from emp;
select eid,ename from emp;

别名查询

别名查询可以将信息查询出来,并将列名改为中文别名,使用关键字 as

实例

select eid as '编号',
       ename as '名字' from emp;

数据去重

将查询出来的数据中的重复部分删除,使用关键字 distinct

实例:

select distinct ename from emp;

条件查询

根据查询条件查询表中符合条件的数据,简单来说就是对表中的数据进行过滤,具体语法格式是:

select 列名 from 表名 where 条件表达式

由于用到了条件表达式,就需要介绍运算符,有比较运算符、逻辑运算符,详细介绍如下:

比较运算符

运算符说明
> < <= >= = < > !=大于、小于、大于(小于)等于、不等于
between ...and...显示在某一区间的值
in(集合)集合表示多个值,是用逗号分隔
in中的每个数据都会作为一次条件,只要满足就显示
like '%张%'模糊查询
is null查询某一列为null的值,特别注意不能写成:=null这种

逻辑运算符

运算符说明
and &&多个条件同时成立
or ||多个条件任意一个成立
not不成立,取反

条件查询实例:

当使用模糊查询时,需要通配符的问题,关于通配符介绍如下:% 表示匹配任意个字符串,而_表示匹配一个字符

模糊查询实例:

select *
from emp where ename='孙悟八';
select *
from emp where salsry=2000;
select * from emp where salsry!=2000;
select * from emp where salsry>2000;
select *
from emp where salsry between 2000 and 8000;
select *
from emp where salsry=2000 or salsry=5000 or salsry=8000;
select *
from emp where ename like '孙%';
select * from emp where ename like '%悟_';
select *
from emp where dept_name is null;