数据库Mysql

数据库

DataBase,称为i而数据库,简称DB

运行在操作系统上,按照一定的数据结构,保存数据的仓库。是一个电子化的文件库。

数据永久地保存在硬盘中。

数据库管理系统

DataBase Manager System,简称DBMS。例如Mysql、SQLServer、Oracle等。

是一种操作和管理数据库的大型软件,用于建立、使用和维护数据库。

常见的数据管理系统

关系型数据库

关系型数据库是主流的数据库类型

数据通过行row列column的形式(表格)保存

每行数据称为一条记录

每列数据称为一个字段

字段通常为Java中某个实体类的属性,通过这个类创建的对象,就是一条记录

关系型数据中,数据表之间进行关联,就能快速查询想要的数据。

优点
  • 易于维护:数据都是以表的结构存储,格式一致。

  • 使用方便:SQL语句可用于不同的关系型数据库。

  • 支持复杂查询:可以通过SQL语句在多个表之间查询出复杂数据。

缺点
  • 读取性能差,在处理海量数据时,频繁读写效率低。

  • 表结构不易改动,灵活度稍欠佳。

  • 高并发读写时,硬盘的I/O决定了读写的速度。

非关系型数据库

数据通过对象的形式保存,对象可以是一个键值对、文档、图片等。

非关系型数据库的特点
  • 保存数据的格式多样。

  • 对于海量数据的的读写效率高。

  • 不支持复杂查询

Mysql常用指令
  • show databases; 查看所有数据库

  • use 数据库名; 切换到指定的数据库

  • create database 数据库名;创建指定数据库

  • drop database 数据库名;删除指定数据库

  • show tables; 查看当前数据库中的表

数据库管理系统图形化管理工具

SQL

Structrued Query Language 结构化查询语言

用于操作关系型数据库的一门语言。可用来创建、维护数据库和数据。

--mysql中的注释
操作数据库
  • 创建数据库

    create database 数据库名称;
    
  • 切换数据库

    use 数据库名称;
    
  • 删除数据库

    drop database 数据库名称;
    
操作单个数据表
创建数据表
create table 表名(
    字段名1 数据类型 [特征],
    字段名2 数据类型 [特征],
    .....
    字段名n 数据类型 [特征]
)
修改数据表

修改表时,要保证不影响现有数据。

  • 对表重命名

    alter table 表名 rename to 修改的表名;
    
  • 添加新字段

    alter table 表名 add column 字段名1 数据类型 [特征];
    
  • 修改字段名

    alter table 表名 change 旧字段名 新字段名 数据类型 [特征];
    
  • 删除字段

    alter table 表名 drop 字段名;
    
  • 添加唯一约束

    alter table 表名 add unique(字段名);
    
  • 添加主键约束

    alter table 表名 add primary key(字段名);
    
  • 添加默认值约束

    alter table 表名 alter 字段名 set default '默认值';
    
  • 添加外键约束

    alter table 从表表名 add foriegn(从表外键字段 references 主表表面(主表主键字段);
    

添加约束的操作通常是对已存在的表进行修改和维护时使用。如果是一张新表,最好在创建表的时候就设计好约束。

建表的同时添加约束
create database gamedb;
use gamedb;
CREATE table hero(
    id int not null primary key auto_increment COMMENT '任务编号',
    name VARCHAR(20) not null UNIQUE,
    sex char(1) default '男' COMMENT '性别',
    price int not null COMMENT '价格', 
    make_time date COMMENT '创建时间',
    position VARCHAR(20)
    )

    create table battle(
        id int not null primary key auto_increment,
        hero_id int not null,
        nick_name VARCHAR(20),
        way VARCHAR(20) not null,
        foreign KEY(hero_id) REFERE
删除数据表
drop table 表名;

如果要删除有关外键关联的表,要先删除从表,在删除主表。

查看数据表
DESCRIBE 表名;
DESC 表名;
操作多个数据表(重点)
连接查询(重点
交叉连接

交叉连接、笛卡尔积,将两张表中的所有数据两两组合得到新数据

select * from1,2
内连接(重点)

在笛卡尔积中得到真实有效的数据

select * from1,2 where1.字段=2.字段
select * from1 inner join2 on1.字段=2.字段
  • 通常是通过主表的主键字段关联从表的外键字段

  • 如果两张表中关联的字段名一致,一定要通过"表名。字段名"进行区分,通常还会给表重命名

  • 如果使用inner join关联表,带条件是需要;

左连接
-- 保证坐标显示完整的情况下,关联右表中数据,没有关联的用null表示
select * from1 left join2 on1.字段=2.字段
右连接
-- 保证坐标显示完整的情况下,关联左表中数据,没有关联的用null表示
select * from2 right join1 on1.字段=2.字段
嵌套查询

将查询到的结果继续使用在另一个查询中

-- 查询价格最低的图书信息
select * from book_info WHERE book_price= (select min(book_price) from book_info)
操作数据
数据添加insert

添加数据时,都是整行添加。不能只给一个字段去添加数据。

给所有字段赋值
  • 可以用null、0、default来填充自增值。

  • 可以用null来填充可以为空的字段

  • 可以用default来填充有默认值的地方

  • 添加的数据必须与表中原有的数据的数量与顺序一致。

insert into 表名 values('值1','值2'........)
给指定字段赋值
  • 可以忽略自增字段、有默认值字段和允许为空的字段。
insert into 表名(字段1,字段2....) values('值1','值2'...);
批量添加
insert into 表名[(字段1,字段2...)] values
    ('值1','值2',.....'值n'),
    ('值1','值2',.....'值n'),
    ('值1','值2',.....'值n')
数据修改update
修改单个字段的所有值
update 表名 set 字段 = '值';
修改多个字段的所有值
update 表名 set 字段 = '值',字段 = '值'.....;
根据条件修改(where子句)
update 表名 set 字段 = '值',字段 = '值'... where 条件;
  • 指定值

    使用=指定某个字段的值

    update 表名 set 字段 = '值',字段 = '值'... where 字段 = '值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值