目录
什么是数据库
数据库是一个用于存储、管理和检索数据的结构化集合。它被广泛应用于各种软件系统中,用于组织、存储和提供数据。数据库可以存储许多不同类型的数据,例如文字、数字、图像和多媒体文件。
数据库系统提供了一种机制,让用户可以有效地存储、更新和检索数据。它通过使用一种称为查询语言的编程语言,使用户能够以结构化的方式查询和操作数据。常见的数据库系统包括关系型数据库(如MySQL、Oracle和SQL Server)和非关系型数据库(如MongoDB和Redis)。
数据库的主要优势包括数据的持久性、数据的一致性和数据的高效性。它可以有效地管理大量的数据,并提供快速的数据检索和更新。数据库还提供了一些高级功能,如数据完整性约束、事务处理和数据安全性控制,以确保数据的正确性和安全性。
总而言之,数据库是一种用于存储、管理和检索数据的软件系统,它为用户提供了一种有效、结构化和安全的方式来处理数据。
MySQL的功能
MySQL 提供了丰富的功能,包括:
1.创建和管理数据库:MySQL 支持创建多个数据库,每个数据库可以包含多个表。
2.定义数据结构:可以使用 SQL 语句创建表,并指定列的数据类型、约束、索引等。
3.存储和检索数据:利用 SQL 语句可以进行数据的增加、删除、修改和查询操作。
4.支持事务处理:MySQL 提供了事务处理机制,支持提交和回滚操作,确保数据的一致性和完整性。
5.数据库安全性:MySQL 提供了用户认证和权限管理功能,可以控制不同用户对数据库的访问和操作权限。
在Linux中安装MySQL
1.先在终端中查看是否已经安装,ps -ef |grep mysql
2.如果没有就在终端中进行下载,输入指令 sudo apt install mysql-server,按下回车键等待下载。
3.因为MySQL8版本不再提供安装向导,所以可以使用root用户直接进入。
4.下载完成后,切换到root用户,输入mysql按下回车就直接进入mysql。
5.启动MySQL sudo service mysql start,关闭MySQL sudo service mysql stop,重启MySQL sudo service mysql restart
MySQL基础指令
show databases; 查看所有数据库
create database db charset=utf8; 新建数据库,并能够输入汉字
select dataase(); 查看当前在用的数据库
use db;使用数据库
drop database db;删除数据库
show tables;查看指定数据库中的所有表
create table 表名 (列名1 类型 约束,列名2 类型 约束,...); 创建表,列名 类型顺序固定,约束不在乎顺序
desc 表名;描述一下该表
select * from 表名;查看表中所有内容
drop table 表名;删除表
alter 对表进行修改
alter table 原表名 rename 新表名;修改表名
alter table 表名 add 列名 类型 约束;新增列
alter table 表名 change 原列名 新列名 类型 约束;修改列名
alter table 表名 drop 列名;删除列
alter table 表名 auto_increment = 指定值;因为删除数据后再添加时id不会从1开始,可以指定从指定值开始自增
增
insert into 表名 (列名1,列名2,...) values (值1,值2,...),(值1,值2,...) ,...; 缺省插入
insert into 表名 values (值1,值2,...),(值1,值2,...),... ;全列插入,默认值也要填写
改
update 表名 set 修改内容; 整个表修改
update 表名 set 修改内容 where 条件; 指定修改
删
delete from 表名 可以跟条件语句;
查
select * from 表名;查看表中所有内容;
select 列名 from 表名;查看指定列,表名后可以有条件语句
select count(列名) from 表名;可以查看表有多少行
select max(列名) from 表名;查看该列最大值,一样可以查看最小值,总和以及平均值
select distinct 列名 from 表名;可以去重,但是不改变数据库
select * from 表名 order by 列名 desc;降序,使用asc是升序,可以同时给多列进行排序
select 列名 from group by 列名; 给指定列进行分组,后面也可以使用having加上限制条件
select * from 表名 limit count;将表中的前count个数据展现出来
select * from 表名 start,count;从start开始展现出来count个数据
create user ‘用户名’@’%’ identified by ‘密码’; 创建一个可以在所有的IP地址都能登陆的用户
grant 权限1,权限2,.. on 可以操作的数据库 to 创建的用户以及IP;给创建的用户分配权限,该操作只能在root用户下进行
drop user 用户名;该操作不能在要删的用户下操作
where常见条件语句
in where 列名 in (值1,...) 指定列名在该元组中
not in where 列名 in (值1,...) 指定列名不在该元组中
null where 列名is null 该列是空
not null where 列名is not null 该列不是空
> where 列名 > 值 像python一样判断 同样 = ,<
and where 条件1 and 条件2 和python中的含义一样,同理or
between a and b 慎用,效率低
like where name like ‘王%’ 意思是名字列中姓王的
like where name like ‘%王%’ 意思是名字列中含有王字的
like where name like ‘王_’ 意思是名字列中姓王的而且名字是两个字的
常见约束
unique 唯一性
not null 不能为空
auto_increment 自增长
primary key 主键,每个表中必须要有主键
foreign key 外键 要搭配 references 使用
default 默认
enum 枚举,可以用来约束性别,也可以约束别的
cascade 级联,将外键所在表中的操作同步到主键所在的表