数据库认识

发布时间:2026/11/6 8:54:17
数据库认识 一、基础认识数据库是结构化数据的集合它以系统化的方式存储、组织和管理数据便于计算机程序快速访问、操作和管理。简单来说数据库就是存放数据的“仓库”但这个仓库有着精心设计的结构和高效的存取机制。数据库进行数据管理的优势数据持久性数据共享与并发控制减少数据冗余数据一致性高效的数据检索数据完整性约束数据备份与恢复二、数据库分类关系型数据库MySQL、PostgreSQL、Oracle、SQL Server适用于需要事物支持、数据一致性要求高、数据结构固定的应用非关系型数据库Reis、MongoDB、HBase……适用于高并发读写、海量数据存储、数据结构灵活多变或需要水平扩展而对强事务和复杂关联查询要求不高的应用。三、SQL认识3.1、基础认识SQL 是 Structured Query Language 的缩写直译“结构化查询语言”是用来 定义、操作、查询、控制关系型数据库的标准语言3.2、主要作用数据定义DDLCREATE / ALTER / DROP 表、索引、视图、数据库本身数据操作DMLINSERT、UPDATE、DELETE 真正增删改数据数据查询DQLSELECT … FROM … WHERE … GROUP BY … HAVING … ORDER BY …最常用数据控制DCLGRANT / REVOKE 权限START TRANSACTION / COMMIT / ROLLBACK 事务四、安装与配置4.1、安装与配置# ubuntu sudo apt install mysql-server libmysqlclient-devsudo cat /etc/mysql/debian.cnf mysql -u debian-sys-maint -p4.2、修改密码ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 11111111;4.3、刷新权限配置FLUSH PRIVILEGES;quit:退出4.4、重新登录用root登录mysql -u root -p4.5、查看字符集//字符集的一个配置SHOW VARIABLES LIKE character_set%;4.6、修改字符集然后重启mysql服务---sudo systemctl restart mysqlsudo vi /etc/mysql/my.cnf #修改里面的内容[client] default-character-set utf8mb4 [mysql] default-character-set utf8mb4 [mysqld] character-set-server utf8mb4 collation-server utf8mb4_unicode_ci init_connect SET NAMES utf8mb4五、库与表在MySQL中库是一个容器用于存储一组相关的数据对象比如表、试图、存储过程、函数等SQL语句的注意事项sql语句中不分大小写每个sql语句总是默认以“”作为结尾5.1、库的操作查看库show Databases;---查看都有那些库select database();--查看当前选中的库选中库use 库名称创建库create database 数据库名称---数据库名称不要使用关键字和数字开头对创建库加工不会对库已经存在而报错---create database if not exists 数据库名称create database if not exists 数据库名称反引号里面可以写关键字反引号去除它原有的含义删除库drop database 数据库名称drop database 关键字如果不小心删除使用手段开始可以恢复过来的5.2、表的操作表的操作定义表的数据结构有哪些字段字段是什么类型有哪些约束mysql中的数据类型整型INT--4字节通用整型 bit[n]--比特位 TINYINT--1字节 BIGINT--8字节浮点型FLOAT--4字节 DOUBLE--8字节DECMAL--可变长通用字符串CHAR[M](255字符)VARCHAR[]--可变长度65535字节最常用 TEXT中等文本 BLOB64kb,二进制 MEDIUMTEXT---大文本长文章时间类型DATETIME8字节最常用TIMESTAMP4字节1970……2038年JSON类型JSON变长用户配置、商品属性布尔类型BOOLEAN0或1枚举和集合类型ENUM--1字节性别(男,女)SET--1……8字节爱好(运动,音乐,阅读)查看表show tables;---查看库中有那些表desc 表名称查看表结构5.3、创建表create table if not exists tbl_student例如注意--后边是注释但是要注意内容和--之间有一个空格表名称和(之间必须有个空格最后一个字段末尾不能有,5.4、修改表的结构alter table 表名称 修改事项修改事项如ADD COLUMN--增加列ADD COLUMN …FIRST/AFTER--指定位置加列DROP COLUMN--删除列……注意事项修改表结构要尽量向前兼容查看表的创建语句show create table tbname;查看表的创建语句删除表drop table 表名称5.5、表中数据的增删改查5.5.1、增通用查询select*from tbname;--查询表中的所有数据全列插入insert [into] tbname values(val1,val2,……)val1是第一列数据……多行插入注意多行插入时间隔是而不是列值插入INSERT INTO 表名SET 列1 值1,列2 值2,...;INSERT INTO tbl_studentSET sn 4,name 小红,ch85,en82,created2026-11-01 00:00:04指定列插入列:从查询结果插入常用于数据备份、表间数据迁移或基于现有数据生成新数据INSERT INTO 目标表名 (列1, 列2, ...) SELECT 列A, 列B, ... FROM 源表名 WHERE 条件;替换插入如果新行与表中的主键或唯一索引冲突则先删除旧行再插入新行如果不冲突则直接插入新行。-- 语法1 REPLACE INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...); -- 语法2 REPLACE INTO 表名 SET 列1 值1, 列2 值2, ...;冲突时更新这是最常用、最灵活的“有则更新无则插入”的方法。当插入会导致主键或唯一索引冲突时转而执行更新操作。INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...) ON DUPLICATE KEY UPDATE 列1 新值1, 列2 VALUES(列2); -- 使用 VALUES(列名) 来引用原INSERT中想插入的值更新数据update 表名称 set fields1val,fileds2val;更新操作若不指定过滤条件会导致表中的数据的指定字段都会被修改where 条件-----指定条件5.5.2、删delete from 表名称 where 过滤条件5.5.3、改UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition;UPDATE tbl_studentSET name小明, ch 90WHERE sn4;5.5.4、查查询可加条件限制SELECT ... FROM table_name WHERE condition;注意大小写不影响UPDATE tbl_studentSET name小明, ch 90WHERE sn4;或者//select *from tbl_studentwhere sn1;整表查询SELECT * FROM employee;指定列查询SELECT name, department, salary FROM employee;去重查询SELECT DISTINCT department FROM employee;起别名SELECT name AS 姓名, salary AS 月薪 FROM employee;排序查询SELECT name, salary FROM employee ORDER BY salary [DESC/ASC]; //DESC:降序 //ASC升序分页查询SELECT name, salary FROM employee ORDER BY id LIMIT n offset pos; SELECT name, salary FROM employee ORDER BY id LIMIT pos, offset_n;//n表示序号sn pos表示往后偏移多少位显示结果为snpos下一个代码一样的结果5.6、聚合函数函数作用COUNT(*/column)统计行数SUM(column)求和仅数值型AVG(column)求平均MAX(column)最大值MIN(column)最小值JSON_ARRAYAGG(column)把列值聚成 JSON 数组JSON_OBJECTAGG(field-key, val)聚成 JSON 对象GROUP_CONCAT(column SEPARATOR )把多行拼成一行字符串SELECT COUNT(*) FROM tbl_student;//总数 SELECT SUM(ch) FROM tbl_student;//总和 SELECT AVG(en) FROM tbl_student;//平均值 SELECT MAX(ch) FROM tbl_student;//最大值 SELECT MIN(ch) FROM tbl_student;//最小值 SELECT JSON_ARRAYAGG(name) FROM tbl_student;//名字数组 SELECT JSON_OBJECTAGG(sn, name) FROM tbl_student;//数组 SELECT GROUP_CONCAT(name ORDER BY ch DESC SEPARATOR ) FROM tbl_student;//字符串5.7、分组查询分组查询的查询字段中只能包含分组依据字段和聚合函数。SELECT name AS 姓名, COUNT(*) AS 人数, ROUND(AVG(ch), 2) AS 平均中文 FROM tbl_student GROUP BY name HAVING COUNT(*) 2;

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询