数据库的简介和MySQL增删改查

1、数据库的介绍

1.1、数据库概述

数据库的存储方式

Java中创建对象,对象存储在内存中,学习了IO流,可以把数据存储到文件中。

储存位置优点缺点
内存速度快不能永久保存,数据是临时状态
文件数据可以永久保存操作数据不方便,查询某个数据
数据库1)数据可以永久保存
2)查询速度快
3)对数据管理方便
占用资源,需要购买

什么是数据库

1)DB:数据库(Database)即存储数据的仓库,它保存类一系列有组织的数据。

2)本质上是一个文件系统,还是以文件的方式存储在服务器上的

3)所有的关系型数据库都可以使用SQL语句进行管理

4)DBMS (DataBase Management System)数据库管理系统:是一种操作和管理数据库的大型软件,例如:数据库的创建、维护等

5)关系型数据库是目前最普遍的一种数据库类型

1.2、数据库对比

MySQL:开源免费的数据库,小型的数据库,已经被Oracle收购了。MYSQL也有收费版本。Sun公司收购了MySQL,然后Oracle又收购了Sun公司。

Oracle:收费的大型数据库

DB2:IBM公司的数据库产品,收费的,常应用在银行系统中

SQL Server:MicroSoft公司收费的中型数据库,C#、.Net等语言开发常使用

SQLite:嵌入式的小型数据库,应用在移动终端

1.3、为什么选择MySQL

1)免费

2)功能强大

MySQL是一种开放源代码的关系型数据库管理系统,开发者为瑞典MySQL AB公司,在2008年被Sun公司收购,而2009年,Sun又被Oracle收购。目前MySQL被广泛用在Interne上,无论大小企业目前都在很广泛的使用MySQL。由于其体积小、速度快、成本低、尤其开源这一特点,使得很多的互联网公司都选择类MySQL作为数据库。(Facebook,Twitter、YoutuBe、阿里系、去哪儿、携程、腾讯等等)。

阿里系(蚂蚁金服)主要使用两种关系型数据库:OceanBase和MySQL。

关系型数据库:关系型数据库的表采用二维表格来存储数据,是一种按行与列排列的具有相关信息的逻辑组,它类似于Excle工作表。一个数据库可以包含任意多个数据表。表中的一行即为一条记录。数据表中的每一列称为一个字段,表是由其包含的各种字段定义的,每个字段描述了它所含有的数据的意义,数据表的设计实际上就是对字段的设计。创建数据表时,为每个字段分配一个数据类型,定义它们的数据长度和其它属性。行和列的交叉位置表示某个属性值。

1.4、MySQL目录结构

MySQL目录结构描述
bin目录所有mysql的可执行文件,如mysql.exe
include目录本地系统文件
lib所需要的第三方库
share共享文件目录

1.5、数据库管理系统

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

1.6、数据库管理系统、数据库和表的关系

数据库管理系统(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个或多个数据库。为保存应用中实体(对象)的数据,一般会在数据库创建多个表,以保存程序中对象的数据。

1.7、结论

一个数据库服务器可以包含多个数据库

一个数据库可以包含多张表

每张表中都可以存储多条记录

2、SQL

2.1、什么是SQL

Structured Query Language 结构化查询语言,一个专门用来操作关系型数据库的语言。

2.2、SQL作用

是一种所有关系型数据库的查询规范,不同的数据库都支持

通用的数据库操作语言,可以用在不同的数据库中

不同的数据库SQL语句有一些区别

SQL规范就是普通话,MYSQL特有(方言)、Oracle特有(方言)

2.3、 SQL语句的分类

Date Definition Lanuage(DDL 数据定义语言)如,创建数据库,创建表

Data Manipulation Language(DML数据操作语言)如,对表中记录操作增删改

Data Query Language(DQL数据查询语言),如,对表中的数据进行查询操作

Data Control Language(DCL数据控制语言)如:对用户权限设置

2.4、 MySQL的语法

1)每条语句以分号结尾

2)SQL中不区分大小写,关键字大写和小写一样

3)注释

注释语句说明
- -空格单行注释
/**/多行注释
#这是mysql特有的注释方式

2.5、DDL操作数据库

2.5.1、创建数据库

创建数据库:CREATE DATABASE 数据库名;

判断数据库是否已经存在,不存在则创建数据库:CREATE DATABASE IF NOT EXISTS 数据库名;

创建数据库并指定字符集:CREATE DATABASE 数据库名 CHARACTER SET 字符集;

-- 直接创建数据库 db1
create database db1;

-- 判断是否存在,如果不存在则创建数据库db2
CREATE DATABASE IF NOT EXISTS DB2;

-- 创建数据库并且指定字符集为utf8
CREATE DATABASE DB3 default character set utf8;

2.5.2、查看数据库

-- 查看所有的数据库
show databases;

-- 查看某个数据库的定义信息
show create database db3;
show create database db2;

2.5.3、修改数据库

修饰数据库默认的字符集:

ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;

-- 修改数据库默认的字符集
alter database DB3 default character set gbk;

2.5.4、删除数据库

语法:DROP DATABASE 数据库名;

-- 删除数据库
drop database db3;

2.5.5 、使用数据库

查看正在使用的数据库:SELECT DATABASE();

使用/切换数据库:USE 数据库名;

-- 查看正在使用的数据库
select database();

-- 改变要使用的数据库
USE db1;

2.6、DDL操作表结构

前提先使用某个数据库:use 数据库名;

2.6.1、创建表

语法格式:
CREATE TABLE 表名(
   字段名1 字段类型,
   字段名2 字段类型
);

2.6.2、 MYSQL数据类型

分类类型名称类型说明
整数tinyInt微整型,很小的整数(占8位)
smallInt小整型(占16位)
mediumint中整型(占24位)
int(integer)整型(32位)
小数float单精度
double双精度
日期类型time表示时间类型
date表示日期类型
datetime同时可以表示日期和时间类型
字符串char(m)固定长度的
varchar(m)可变长度的字符串,使用几个字符占用几个,m为0-65535之间的数据
大二进制blob允许长度0-65535
longblob
大文本text允许长度0-65535
longtext最大可以存储4G的内容

2.6.3、创建表

创建一个student表,包含id,name,birthday字段

create table student(
 id int,
 name varchar(20),
 birthday date
);

2.6.4、查看表

查看某个数据库中所有的表:show tables

查看表结构:DESC 表名;

查看创建表的SQL语句:show create table 表名;

2.6.5、快速创建一个表结构相同的表(MYSQL特有)

create table 新表名 LIKE 旧表名;

2.6.6、删除表

直接删除表:DROP TABLE 表名;

判断表是否存在,如果存在则删除表:DROP TABLE IF EXISTS 表名;

2.6.7、修改表结构

添加列:ALTER TABLE 表名 ADD 列名 类型;

修改列类型:ALTER TABLE 表名 MODIFY 列名 新的类型;

修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;

删除列:ALTER TABLE 表名 DROP 列名;

修改表名:RENAME TABLE 表名 TO 新表名;

修改字符集:ALTER TABLE 表名 character set 字符集;

2.7、DML操作表中的数据

用于对表中的记录进行增删改操作

2.7.1、插入记录

插入全部字段,所有的字段都写出来:

INSERT INTO 表名(字段名1,字段名2,…) VALUES(值1,值2,…)

值和字段一一对应

不写字段名

INSERT INTO 表名 VALUES(值1,值2,…)

插入部分数据

INSERT INTO 表名(字段1,字段2) VALUES(值1,值2)

insert into students(id,stuName,birthday) values(1001,'zhangsan','2000-10-21');

insert into students values(1002,'lisi','2001-11-05');

insert into students(id,stuName) values(1001,'wangwu');

2.7.2 、更新表记录

更新表中所有相关的数据

UPDATE 表名 SET 列名=更新值,列名=更新值

带条件的修改

UPDATE 表名 SET 列名=更新值,列名=更新值 WHERE 字段名=值;

update students set birthday='2019-01-01';

update students set birthday='2010-10-01' where id=1002;

2.7.3、删除表记录

不带条件删除数据:delete from 表名;

带条件删除数据:delete from 表名 where 字段名=值;

重置表:truncate table 表名

truncate相当于删除表的结构,在创建一张表,实际上就是表的重置

delete from students where id=1002;

delete from students;

truncate table students;

2.8、DQL查询表中的数据

2.8.1、简单查询

查询表中所有行和列的数据:

SELECT * FROM 表名;

查询指定列:

SELECT 字段名1,字段名2,… FROM 表名;

给列指定别名:

SELECT 字段名1 AS 别名,字段名2 AS别名 FROM 表名;

select * from students;

select id ,stuName from students;

select id as '编号',stuName as '姓名' from students;

查询指定列并且结果不出现重复数据

SELECT DISTINCT 字段名 FROM 表名;

select distinct stuName,id from students;

列数据算术运算:

SELECT 列名1+固定值 FROM 表名;

某列数据和其它列数据参与运算:

SELECT 列名1+列名2 FROM 表名;

2.8.2、条件查询

如果没有查询条件,则每次查询所有的行,实际应用中,一般要指定查询条件,对记录进行过滤。

语法:SELECT * FROM 表名 WHERE 条件;

比较运算符:

比较运算符说明
>、<、<=、>=、=、<><>在SQL中表示不等于,在mysql中也可以使用!= 没有==
BETWEEN AND在一个范围内,比如:between 1002 and 1005,包含头和尾
IN(值1,值2,…)匹配值列表就是符合条件的
LIKE ‘规则’模糊查询,_ 代表一个字符,%代表任意字符
IS NULL查询某一列为NULL的值
select * from students where id<>1001;

select * from students where id between 1001 and 1004;

select * from students where id in(1001,1002,1003);

select * from students where stuName like '_h%';
use db1;
update students set age=20;

select * from students where age is null;

逻辑运算符:

逻辑运算符说明
and 或 &&与shu
or 或 II
not 或 !
select * from students where id=1001 and stuName='haha';

select * from students where id=1001 or stuName='haha';

select * from students where age is not null;

select * from students where id not in(1001,1002,1003);

select * from students where id not between 1003 and 1005;

select * from students where stuName not like 'z%';
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值