• 数据库——SQL语句与数据库设计


    SQL分类

    MySQL中可以将SQL分为4大类

    DDL数据定义语言,create创建、alter修改、drop删除、truncate截断

    DML数据操纵语言,insert插入、update修改、delete删除

    DQL数据查询语言,select查询

    DCL数据控制语言,grant授权、revoke回收权限


    DDL数据定义语言

    用于定义数据库对象的操作语句

    1. create database test default character set utf8;
    2. -- 创建数据库,名称为test,默认 编码字符集为utf-8 -- 如果数据库已经存在,则再次创建会报错
    3. create database if not exists test default character set utf8;
    4. -- 如果test已经 存在则不执行创建操作,同时不会报错

    删除操作 drop database 数据库名称;

    查看所有数据库 :show databases;

    切换当前数据库:use 数据库名称;

    数据表的操作

    创建数据表基本语法:

    create table 数据表的名称(数据列的名称 数据类型 约束规则,......)engine= 存储引擎名称 default charset utf8;

    1. create table tb_student(
    2. -- 这里可以加入if not exists表示不存在时才进行创建。注意 在一个数据库中的表名称不允许重复。按照阿里的规范,要求基表名称必须使用【tb_表】
    3. id bigint primary key auto_increment,
    4. name varchar(20) not null,
    5. sex boolean default 1 -- 在mysql数据库中有一些属性数据类型的别名
    6. ) engine=innodb default charset utf8;
    7. -- 实际上从MySQL5.5开始默认存储引擎就是 innodb,但是一般建议还是添加上存储引擎的设置

    查看表中的列定义 :desc tb_student;

     查看具体的列定义show create table tb_student;


    表操作DML/DQL

    DML数据操纵语言,用于对数据库表中的记录进行更新操作,插入insert、修改update、删除 delete

    DQL数据查询语言,用于对数据库表中的记录进行查询操作,select

    增加数据

    语法1inser into 表名称 values(1,2,....) 用于针对表中的每个列指定对应的值

    语法2insert into 表名称(列名1,列名2,...) values(1,2,...) 人为指定列插入数据,注意两个括号一一对应,一般用于不是每个列都需要插入数据时使用。

    修改数据

    语法1update 表名称 set 列名1=1,列名2=2,... 。修改表中所有行的指定列对应的值,等号后面可以是一个表达式进行计算。

    语法2update 表名称 set 列名1=1,列名2=2,... where 条件 用于修改表中满足条件的行指定列的值;

    删除数据

    语法1delete from 表名称; 删除表中所有数据。例如 delete from tb_users;

    语法 2 delete from 表名称 where 条件 ; 删除表中满足条件的所有行。
    整表删除操作
    方法 1 delete from tb_student ; 可以删除表中的所有数据,属于 DML 语句,所以支持事务,支持撤销回滚操作,但是大量的删除数据时需要记录日志,所以执行效率很低。优势在于可以反悔,缺点在于记录日志需要时空代价
    方法 2 truncate table tb_student ; 表的截断操作,可以删除表中的所有数据,属于 DDL 语句,没有事务,不会记录操作日志,所以大量删除数据时执行效率高。优势是执行效率,缺点在于没有反悔的机会。底层原理就是创建一个相同的空表

    DQL(select)

    1. select [all/distinct] <目标表达式>,<目标表达式>,...
    2. from 表名称或者视图名称,表名称或者视图名称,... -- 在MySQL中允许查询语句中没有from
    3. where 条件语句
    4. group by 分组条件 [having 条件表达式]
    5. order by 排序条件 [asc/desc]
    6. limit ...

    1、查看表中所有数据 select * from tb_users ,这里的星号*是个通配符,表示获取所有列的值

    2、带条件查询。

    3、非空或者空值判断,注意不能使用=null或者!=null的写法,应该使用is null或者is not null

    4、字符串比较

    5、选择表中的若干元组


    数据库设计

    数据库设计是指对于一个给定的应用环境,构建最优的数据库模型,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的信息要求和处理要求

    常见的数据库设计方法:

    试凑法:凭借的是开发经验

    规范化法:3NF和反范式

    CAD计算机辅助设计

    按照规范设计可以将数据库的设计过程分为6个阶段:系统需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行与维护。

    需求分析:全面了解设计的存储需求,保证数据的安全性和完整性。里程碑是需求分析文档

    概念设计:根据需求了解各个需要存储的实体以及实体之间的关系,里程碑是ER

    逻辑结构设计:设计数据的逻辑存储结构,根据数据实体之间的逻辑关系解决数据冗余和数据维护异常,里程碑是模式定义

    物理结构设计:根据具体使用的数据库特点进行表结构设计,里程碑是建库建表的SQL语句

    维护优化:根据实际情况,对索引、存储结构等相关方面进行优化


    通用SQL函数

    语法 select 函数名称(); 或者 select 函数名称(列名称,其它参数) from 表名称 ,在mysqlfrom子句不是必须的

     

  • 相关阅读:
    前端使用firebase配置第三方登录介绍(谷歌登录,facebook登录等)
    搁置收购推特后,马斯克盛赞微信:什么都能做、还没有垃圾信息
    Navicat Premium导出数据库中的结构及数据
    Numpy入门[4]——数组类型
    (min,max)=>Math.floor(Math.random()*(max-min+1)+min
    BI设计下篇- 聚焦受众的视线
    【CVPR2022】NFormer: Robust Person Re-identification with Neighbor Transformer
    【学位论文】GB/T 7714-2015引用的快捷操作方法
    《治安疏》——海瑞
    HZOJ-322: 程序自动分析
  • 原文地址:https://blog.csdn.net/qq_51074048/article/details/125532485