[数据库] 数据库基础(一)

487 0
Honkers 2026-5-20 16:09:38 来自手机 | 显示全部楼层 |阅读模式

一、数据库介绍

1.1 数据库定义

        数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的数据集合。通俗地说,数据库就是存储数据的仓库。

特点:持久化存储、可以使用表格式结构高效保持、读写效率极高

常用数据库软件:Oracle、MySQL、Mongodb、SQLite等,不同数据库排行榜见:

https://db-engines.com/en/ranking

1.2 数据库分类

1.2.1 关系型数据库

        概念:指采用了关系模型来组织数据的数据库。简单的说,关系模型指的就是二维表格模型,类似于Excel中的表格。数据库 database 等同于 Excel的文件.数据表 table 等同于 表格里面的sheet子表(如这里的Student表)。

图1 关系型数据库

1.2.2 非关系型数据库

        概念:非关系型数据库,即Not Only SQL,指的是非关联型的。强调Key-Value(字典)的方式存储数据,可以理解为可以通过Key来找到Value。

图2 非关系型数据库

1.3 数据库结构概述

       数据库结构可分为三个部分:

        (1)数据库管理系统(DataBase Management System,DBMS):指的是一种操作和管理数据库的大型软件,可用于管理数据库和数据库中表内的数据。例如MySQL就是一个优秀的DBMS。

        (2)数据库(database):用于存储数据的仓库。

        (3)数据表(table):数据表(或称表)是数据库最重要的组成部分。即数据库中存放的就是一个一个的数据表。

        他们之间的关系如下图所示:

图3 数据库结构

二、数据库入门

        数据库存储单位:数据库存以表为单位,如图3所示,数据库中可存储多张表,表中可存放一条条数据;

        数据库操作主要可分为增(Create)、改(Update)、删(Delete)、查(Read)操作,即【CUDR】操作;其使用的语言主要为SQL语言;

2.1 SQL语言介绍

        SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,一种数据库查询和程序设计语言,用于对数据库进行查询、更新以及管理关系数据库系统。

        SQL语句在处理数据时,通常具有定义、操作、查询和控制关系数据库的这四个功能,表示为:

(1)数据库定义语言:DDL(Data Dfinition Language)

(2)数据操作语言:DML(Data Manipulation Language)

(3)数据查询语言:DQL(Data Query Language)

(4)数据控制语言:DCL(Data Control Language)

2.2 SQL语法规则

(1)SQL语句必须以;(分号)结尾  【必须】

(2)可以使用空格符或缩进来提升SQL语句的阅读性  【有必要】

(3)SQL语句不区分大小写,但SQL关键字一般建议使用大写 【可选】

(4)SQL语句中可以使用必要的注释来解释说明。【有必要】

2.3 数据库DDL操作

2.3.1 DDL库操作

(1)创建数据库:create  database [if not exists] 数据库名  [设置编码格式]

 示例:创建一个班级db_itheima2数据库,charset设置编码为utf8;

  1. create database db_itheima2 charset utf8;
复制代码

(2)查看数据库

        查看有哪些数据库:show databases;

        查看数据库的创建语句:show create database 数据库名 

        查看当前数据库 :select database ();        

(3)删除数据库

        语法:drop database 数据库名称;

(4)使用数据库

        语法:use 数据库名

2.3.2 DDL表操作

(1)创建表:

  1. create table [if not exists] 表名(
  2.       字段名1  类型(长度)[约束],
  3.       字段名2  类型(长度)[约束],
  4. .....
  5. );
复制代码

在MySQL数据库中,常用的字段类型如下:[数据类型]

  1)整形:int;

  2)浮点型:double,注意:在编程开发中,一般把小数称为浮点数;

  3)字符串类型:varchar(长度);

  4)时间日期:date、datetime。

创建表示例:

  1. create table stu(
  2. id int primary key auto_increment,
  3. name varchar(20),
  4. height double,
  5. birthday date
  6. );
复制代码

(2)查看数据表

        查看有哪些表:show tables;

        查看数据表创建语句:show create table 表名

        查看表结构:desc 表名

(3)删除表

        语法:drop table 表名;

(4)修改表名

        语法:alter table  旧表名 rename to 新表名;

2.3.3 DDL操作列

(1)添加一列:alter table 表名 add 字段名 类型(长度)[first | after 其它字段名称]

注意:first表示插入第一列,after 表示插入指定字段后;实例如下

  1. # (1)添加判断语句,新建一张用户表table_user,有用户名、密码这2个字段;
  2. create table table_user(
  3. name varchar(20),
  4. password varchar(20)
  5. );
  6. # (2)给用户表添加一列信息展示information字段,长度为140;
  7. alter table table_user add information varchar(140);
  8. # (3)在用户表的最开始处,添加一列最初名称first_name,该怎么做呢?
  9. alter table table_user add frist_name varchar(140) first ;
  10. # (4)在用户表的密码字段后,添加一列年龄age字段,该怎么做?
  11. alter table table_user add age int after password;
复制代码

(2)修改列类型:alter table 表名 modify  字段名 类型(长度) [约束]

  1. # (1)给用户表的信息字段类型修改为char,长度修改为60;
  2. alter table table_user modify information char(60);
  3. # (2)将用户名字段修改长度为16,且添加不为空约束。(not null)
  4. alter table table_user modify name varchar(16) not null;
复制代码

(3)修改列名:alter table 表名 change 旧字段名 新字段名 类型(长度) [约束]

注意1:新字段名可以和就字段名一样,重复后可替代modify的功能

注意2:修改列名之后,新的列不能继承原约束,需要再定义

  1. # (1)把用户表的用户名修改为user_name,字符串类型、长度为18;
  2. alter table table_user change name user_name varchar(18);
  3. alter table table_user change user_name user_name varchar(20); -- 验证新旧列名一致也能执行.
  4. # (2)把用户表的信息字段列名修改为info,类型修改为varchar,长度为100。
  5. alter table table_user change information info varchar(100);
复制代码

(4)删除列:alter table 表名 drop 列名;

  1. # (1)删除用户表中的年龄这一列;
  2. alter table table_user drop age;
  3. # (2)使用命令查看表结构
  4. desc table_user;
复制代码

2.4 数据库DML操作

        DML操作特点:数据操作命令,主要是指进行数据操作后,会对原有数据产生影响。

        数据操作命令有:

        (1)插入数据:INSTRT

        (2)删除数据:DELETE

        (3)修改数据:UPDATE

2.4.1 新增数据

        给数据表中插入一条数据

        语法:insert into 表名 [字段名1,字段名2,..] values (值1,值2,...);

        给数据表中插入多条数据

        语法:insert into 表名 [字段名1,字段名2,..] values (值1,值2,...),(值1,值2,...);

        省略字段名插入一条数据:

        语法:insert into 表名 values (值1,值2,...);

        省略字段名给数据表中插入多条数据:

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

        注意1:当要给字符串类型的字段插入值时,要使用单引号把值引起来,否则显示出错;

        注意2:表名后字段个数与类型等,要与values后的值对应。

2.4.2 修改数据

        语法:update 表名 set 字段名1 = 值1, 字段名2 = 值2 .... [where 条件]

        注意:如果不指定条件,更新数据时会把所有数据记录全部更新!!!

  1. # 语法: update 表名 set 列名=值,列名=值,... [where 条件];
  2. # (1)将用户表内所有用户性别一次性设置为男;!!! 基本不会用
  3. update user set gender = '男';
  4. # (2)将用户表内所有用户的性别修改为女、年龄修改为18;
  5. update user set gender = '女' ,address = '成都';
  6. # (3)将用户表内编号为2的用户性别设置为男;
  7. update user set gender='男' where id = 2;
  8. # (4)将用户表内编号为3的用户性别更新为男,且住址更新为湖北省武汉市;
  9. update user set gender='男' , address='湖北省武汉市' where id = 3;
复制代码

2.4.3 删除数据

        语法:delete from 表名 [where 条件];

        注意:不加条件表示删除所有的数据。

  1. # (1)创建一个用户表2,表字段有编号、用户名、密码,再增加3条数据;
  2. create table user2(
  3. id int primary key auto_increment,
  4. name varchar(20),
  5. passwrod varchar(20)
  6. );
  7. insert into user2 values (null,'张三','123'),(null,'李四','123'),(null,'王五','123');
  8. # (2)删除表内编号为1的这条数据,再删除用户名为李四的这条数据;
  9. delete from user2 where id = 1;
  10. delete from user2 where name = '李四';
  11. # (3)使用命令删除表内所有数据,观察效果。
  12. delete from user2;
复制代码

2.4.4 拓展面试题--清空数据的区别

面试题:请谈一谈使用delete和truncate删除表的区别?

说明,delete与truncate的主要区别有:

(1)delete删除数据时,是一条一条的删除数据记录,效率低;

(2)truncate删除数据时,是将整个表销毁,然后再创建一张一模一样的表,并且用auto_increment修饰的字段将重置为0重新开始计算。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行