• 数据库最基础命令的大集合,四类分别有DDL、DCL、DQL、DML,让我给你解释一下吧


    一、说一下它们分别是什么

    DDL    Data Definition Language
    数据定义语言,用来定义数据库对象(数据库,表,字段)
    DML    Data Manipulation Language
    数据操作语言,用来对数据库表中的数据进行增删改
    DQL    Data Query Language
    数据查询语言,用来查询数据库中表的记录
    DCL    Data Control Language
    数据控制语言,用来创建数据库用户、控制数据库的访问权限

    二、逐步介绍一下

    1.DDL操作数据库表,表中字段的

    使用的关键字:create、 alter、 drop

    DDL -数据库操作
    show database;展现数据库;
    create database 数据库名;
    use 数据库名;
    select datdabase();查询当前数据库;
    drop database 数据库名;

    DDL-表操作
    show tables;
    create table 表名(字段 字段类型 ,字段 字段类型);
    desc 表名;
    show create table 表名;
    alter table 表名 add/modify/change/drop/rename to
    drop table 表名;


    1.1操作数据库
        创建:
    Create database 数据库名 字符集 排列规则;
    Create database mydb1;
    Create database mydb2 character set gbk;

        查询:
    查看当前数据库服务器中的所有数据库:
    Show databases;
    查询当前数据库:
    select database();
    查看前面创建的mydb2数据库的定义信息:
    Show  create  database mydb2;


        修改:
    查看服务器中的数据库,并把mydb2的字符集修改为utf8:
     alter database 数据库 character set 字符集;

        删除:
    Drop database 数据库;

        切换使用:
    Use 数据库;

    1.2操作数据表
        创建表:
    CREATE TABLE(create table)表名(
    字段1字段1类型[ COMMENT(comment)字段1注释],
    字段n字段n类型[COMMENT字段n注释]    (最后一个没逗号)
    ) [ comment表注释];

    查看数据库中的所有表(操作数据库):
    show tables;
    查看表的字段信息(操作表):
    desc 表名;
    查看表中的创建细节(字段属性没数字的):
    show create table 表;

        添加:
    alter table 表名 add 字段名  列类型[属性](增加列)
    alter table 表名 add   primary key  (`id`);(增加主键)
    alter table 表名 add fk_student7_score2 foreign key (sid) references student7(sid);(增加外键)

        修改:
    修改字段数据类型:
    alter table 表名 modify 字段名 列类型[属性]
    修改字段名和字段类型:
    alter table 表名 change 旧字段名 新字段名 列类型[属性]
    修改字段数据类型(列长度?):
    alter table 表名 modify column 字段名 类型[属性];
    修改表名:
    alter table 旧表名 rename as(to) 新表名(或如下)
    rename table 旧表名 to 新表名;
    修改表编码(字符集):
    alter table 表名 character set 编码;

        删除(选择列名):
    alter table 表名 drop 列名;(一次删一列)
    drop if exists table 表名;(删表)

    数据字段属性:
    unsigned :无符号的,声明不允许负数
    zerofill:不足位数用0填充
    auto_increment:自动增长
    null 和not null:默认null
    defaule:默认的

     

    2.DML(数据操作语言),用来对数据库中的数据进行增删改
    --insert 添加,插入
    --update 更新,修改
    --delete 删除

    insert命令:
    insert into 表名(字段1,字段2)
    values('值1','值2');可同时插入多条数据,values后用英文逗号隔开
    注意:插入时,
    1.字段顺序要一一对应
    2.字符串和日期数据应该包含在引号中
    3.插入数据的大小,应该字段的规定范围内

    修改数据
    update命令:
    update 表名 set 修改的字段=修改的值  
    [where 字段(约束字段)]
    注意:where 条件可有可无,如果没有则会修改整张表的所有数据


    delete 命令:
    delete from 表名 [where 条件]
    注意:
    1.筛选条件可有可无,如不指定则删除该表的所有列数据
    2.delete 语句不能删除某一个字段的值(可以使用update,set设置为null)
    区别与:truncate命令,用于完全清空表数据,但表结构,索引,约束等不变
    truncate  [table] table_name
    相同:
    都能删除数据、不删除表结构,但truncate 速度更快
    不同:
    使用truncate table重新设置AUTO_INCREMENT计数器
    使用truncate table不会对事务有影响

     

    3. DQL(数据查询语言)用来查询数据库中表的记录-重点
    关键字:select
    查询返回的结果是一张虚拟表
    语法--编写顺序:
    select  列  from  表名;
        【select--->from--->where--->group by --->having-->order by --->limit】
    执行顺序:

    【from-->where-->group by-->having-->select-->order by-->limit】

    1.基础查询:

    1.1查询所有列:
    select * from 表名;
    查询指定列, 
    select 字段1,字段2 from 表名;

    1.2设置别名 as

    1.3去除重复记录distinct
    select distinct 字段列表 from 表名;

    2.条件查询:
    条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:
        比较运算符:
        =、!=、<>、<、<=、>、>=;
        BETWEEN…AND;在某个范围之内(含最小最大值)
        IN(....);在in之后的列表的值的,多选一
        IS NULL;是null
        IS NOT NULL;不是null
        逻辑运算符:
        AND;并且,多个条件同时成立
        OR;或者,多个条件任意一个成立
        NOT;非,不是

    3.模糊查询:
    当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE。
    通配符: 
    _ 任意一个字母
      %:任意0~n个字母
     
    4.字段控制查询:

    4.1去除重复记录(两行或以上记录中数据相同)使用distinct
    select distinct 字段 from  表名;

    4.2 NULL 转换 0的函数 ifnull
    select * ,sal+ifnull(comm,0) from 表名;

    4.3起别名
    用as 可以省略

    5.排序
    select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
    order by asc-默认(desc)升/降
    注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

    6.聚合函数
    聚合函数是:将一列数据作为一个整体做纵向运算:
        COUNT():统计指定列不为NULL的记录行数;
        MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
        MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
        SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
        AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

    7.分组查询
    group by  分组字段名
    凡和聚合函数同时出现的列名,则一定要写在group by 之后

    8.having 子句
    注:having与where的区别:
    1).执行时机不同:
    having是在分组后对数据进行过滤.
    where是在分组前对数据进行过滤
            
    2).判断条件不同
    having后面可以使用分组函数(统计函数)
    where后面不可以使用分组函数。
    WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

    8.分页查询:limit
    select 字段列表 from 表名 limit 起始索引,查询记录数;
    LIMIT用来限定查询结果的起始行,以及总行数
    8.1查询5行记录,起始行从0开始
    SELECT * FROM emp LIMIT 0, 5;

    注意:
    1.起始索引从0开始,起始索引 = (查询页码-1)*每页显示记录数
    2.分页查询是数据库方言,不同的数据库有不同的实现,MySQL中是limit
    3.如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。

     4.DCL    Data Control Language
    数据控制语言,用来创建数据库用户、控制数据库的访问权限

    DCL-管理用户
    1.查询用户
    use mysql;
    select * from 用户名(user);

    2.创建用户
    create user '用户名'@'主机名' identifled by '密码';

    3.修改用户密码
    alter user '用户名'@'主机名' identifled with 加密方式(mysql_native_password) by '新密码';

    4.删除用户
    drop user  '用户名'@'主机名' ;

    注意:
    主机名可以使用%通配
    这类SQL开发人员操作的比较少,主要是DBA数据库管理员使用

    DCL-权限控制
    1.所有权限:ALL,ALL privileges
    2.查询数据:select  
    3.插入数据:insert 
    4.修改数据:update
    5.修改表: alter
    6.删除数据库/表/视图:drop
    7.创建数据库/表:create

    DCL-权限控制,操作代码
    1.查询权限: show grants for  '用户名'@'主机名';
    2.授予权限: grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
    3.撤销权限: revoke 权限列表 on 数据库.表名 from '用户名'@'主机名';

    注意;
    1.多个权限之间,使用逗号分隔
    2.授权时,数据库名和表名可以使用 * 进行通配,代表所有。

     

  • 相关阅读:
    Windows线程池使用方法
    最简单的Makefile编译DPDK应用
    Python:Tornado框架之获取get和post的传参
    Postman —— post请求数据类型
    vue中插槽slot
    Windows系统设置mysql主从模式
    Nacos知识点
    ElementUI -- Mock.js介绍和使用与首页导航栏左侧菜单搭建
    NIO学习
    安卓系列机型 框架LSP 安装步骤 支持多机型 LSP框架通用安装步骤【二】
  • 原文地址:https://blog.csdn.net/qq_62917168/article/details/126817410