数据库的介绍和Mysql数据库工具的操作

本文介绍了数据库的基本概念,包括数据库的定义、类型,重点讲解了MySQL数据库的使用,包括数据库的创建与删除、数据类型如整数、定点数、浮点数、字符串、日期、布尔,以及字段约束和SQL操作如增删改查、分页和索引建立。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库的介绍

  1. 什么是数据库
  2. 数据库的类型
  3. MySQL简介
  4. MySQL安装
  5. MySQL的服务管理
什么是数据库

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。

数据库的类型
  1. 关系型数据库
    可以分成各种表

    1. MySQL:小型网站常用
    2. SQL Server
    3. Maria DB 约等于MySQL
    4. PostgreSQL
    5. Oracle:大型网站常用,付费
    6. Sybase
  2. 非关系型数据库
    没有表的概念,所有数据储存在一起

    1. Redis :存储经常修改读取的数据
    2. Mongo DB :存储类型为json,与Python兼容性好
    3. BigTable
    4. Couch DB

MySQL数据库操作

1.数据库的创建与删除
操作命令
创建数据库create database 【数据库名】;
删除数据drop database【数据库名】;
2.使用与查看数据库
操作命令
使用数据库use 【数据库名】;
查看所有的数据库show databases;
查看当前使用数据库selcet database();
3.数据库编码
操作命令
创建数据库并指定编码(utf-8)create database【数据库名】charset=‘utf8’;
修改数据库编码(gbk)alter database 【数据库名】charset=‘gbk’
#查看所有数据库
show databases ;
#查看当前使用数据库
select database();
#删除数据库
drop database db1;
show databases ;
select database();
#创建数据库
create database db3;
show databases ;
#创建数据库并制定编码
create database db4 char set ="utf8";
show databases ;
#修改数据库编码
alter database db4 char set ="gbk";
show databases ;
#使用数据库
use db1;
#创建表结构
create table user1(
    username varchar(16),
    age tinyint
) ;
4.常用数据类型
整数、定点数、浮点数、字符串、日期、布尔
1.整数
关键字含义占用空间
tinyint-27到+27-11 bytes
smallint-215到+215-12 bytes
mediumint-223到+223-13 bytes
int-231到+231-14 bytes
bigint-263到+263-18 bytes
2.定点数
关键字含义
decimal(m,d)总位数<m,小数位=d

说明:1. 数字超过总长度m,会根据四舍五入保存
2. 数字小数位<d,会用0填充

3.浮点数
关键字含义
fioat(m,d)8位精度,总位数<m, 小数位=d
double(m,d)16位精度,总位数<m, 小数位=d

说明:
浮点数指定保证最多8或16的准确性,其余的数字随机填充

4.字符串
关键字含义
char(n)固定字符串长度n
varchar(n)最大字符串长度n
5.日期
关键字含义
datatimeyyyy-mm-dd hh:mm:ss
datayyyy-mm-dd
timehh:mm:ss
6.布尔
关键字含义
booleantrue/false

说明
boolean的类型的本质是tinyint

常用的字段约束
约束类型关键字
主键自增primary key auto_increment
不能重复unique
不能为空not null
默认值default
#创建表结构
create table user2(
    id int primary key auto_increment,
    username varchar(16) not null unique,
    password varchar(16) not null,
    gender tinyint default 0,
    account decimal(12,2) default 0,
    vip boolean default 0
)
mysql 的增删改查
1.插入的三种方式
#插入的三种方式
##插入一条数据
insert into user2 value (1,'name','pass1',1,100,1);
##插入固定字段类型
insert into user2(username,password) value ('name2','pass2');
##插入多条数据
insert into user2(username, password) value ('name3','pass3'),('naame4','pass4');
修改,删除
#修改数据
update user2 set username='name_new',password='pass_new' where id=3;
#删除数据
delete from user2 where id>=2;

更改语句的多样

关键字说明
updata更改表内数据
alter table更改表内结构
rename table更改表名字
#表内新增字段,指定新增字段的类型和约束
alter table user2 add age int not null ;
#表内修改字段,指定被修改的字段和修改后的名字,字段类型与约束
alter table user2 change age age tinyint not null ;
#表内删除字段
alter table user2 drop age;
#修改表的名字
rename table user2 to user3;

3.删除

关键字说明
delete删除表内行数据
drop table删除整个表,可以恢复
truncate删除表内的所有数据,速度快,不可恢复
#删除整个表
drop table user1;
#删除表内所有数据
truncate user3;

4.查找数据
1).查看表内所有数据

#查找所有数据
select *from user3;

2).查看指定字段

#查找指定字段数据
select uesrname,password from user3;

3).比较条件查询

#按条件查询
select password from user3 where uesrname='王伟';
#查询某字段不为空
select * from user3 where createDatetime  is not null;
#查询id大于等于5的创建时间
select createDatetime from user3 where id >=5;
条件命令
相等=
不相等!=
为空is null
不为空is not null
大于(大于等于)>(>=)
小于(小于等于)<(<=)

4).模糊查询

select *from user3 where uesrname like '%秀%';
select *from user3 where uesrname like '王_';
关键字说明
%匹配任意多的字符
_匹配一字符

5).范围查询

#范围查询
select *from user3 where uesrname in ('王伟','李娜');

6.逻辑运算符

关键字说明
and并且
or
#逻辑运算符
select * from user3 where uesrname='王伟'or uesrname='李娜';

7.分组

#分组

select count(*),createDatetime from user3 group by createDatetime having count(*)>3;

说明:
selcet from 【表名】where 【条件】 group by 【字段】
having【条件】;
where是对select
from 的结果进行筛选
having 是对group by 的最后结果进行筛选
count(*)是统计数据条数
8.排序
格式:
select * from 【表名】where【条件】group by 【字段】having 【条件】order by 【字段1】asc\desc,【字段2】asc\desc;
说明:
asc:升序
desc:降序
排序优先级
先按字段1排序,字段1相同时,按字段2排序。

#排序
select * from user3 order by createDatetime desc ,id asc ;

9.分页
格式:
select *from 【表名】where 【条件】group by 【字段1】,【字段2】
having 【条件】order by 【字段1】asc\desc,【字段2】asc\desc
limit【起始索引】,【数据条数】;

#分页
select *from user3 limit 3,5;
1.多表间的关系

1.一对多

#建立表与表的一对多联系
create table user(
    id int primary key auto_increment,
    username varchar(16)
);
create table forum(
    id int primary key auto_increment,
    topic varchar(200),
    user_id int,
    constraint fu1 foreign key (user_id) references user(id) on delete CASCADE
);
insert into user (username) value ('name1');
insert into forum(topic,user_id) value('topic1',1);
delete from user where id=1;

#引入外键

1).外键关系

级联类型解释
on delete restrict默认值,抛异常
on delete cascade如果主表被引用的外键删除,相关联的表的记录也会被删除
on delete set null如果主表被引用的外键删除,相关联的表的外键设置为空
on delete on action什么也不做

2.多对多
#新建一个联络表,用来联络其他表

create table user_forum(
    id int primary key auto_increment,
    user_id int,
    forum_id int,
    constraint c1 foreign key(user_id) references user(id) on delete cascade,
    constraint c2 foreign key (forum_id) references forum(id) on delete cascade
);

3.一对一
1).单张表内字段数太多,拆分后
2).敏感信息分离

说明:constraint c1 foreign key(user_id) references user(id) on delete cascade,
constraint c2 foreign key (forum_id) references forum(id) on delete cascade
为约束语句,将表与表之间建立联系

#插入语句优化

#插入语句优化
insert into user(username) value ('name1');
insert into user(username) value ('name2');
insert into user(username) value ('name3');
#相当于
insert into user(username) values (
                                   'name1',
                                   'name2',
                                   'name3'
                                  )
索引

1.建立索引
语法结构:
create index 【索引名】 on 【表名】(【字段名】 (【索引长度】));
2.删除索引
语法结构:
drop index 【索引名】 on 【表名】;

create index username_index on user(username(16));
drop index username_index on user;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值