• MySQL基础篇-基本sql语句


    目录

    1.SQL分类

    2.SQL-DDL

    2.1 数据库操作

    查询

    创建

    删除

    使用某个数据库

    2.2 数据表操作

    创建表

    查询表

    修改表

    3.SQL-DML(增删改)

    3.1 插入

    3.2 修改

    3.3 删除

    4.SQL-DQL(查)

    4.1 基础查询

    4.2 条件查询

    4.3 聚合函数查询

    4.4 分组查询

    4.5 排序查询

    4.6 分页查询(MySql)

    4.7.DQL执行顺序

    5.SQL-DCL

    5.1 用户管理

    创建用户

    修改密码

    删除用户

    5.2 用户权限

    查询权限

    授予权限

    撤销权限


    记录SQL数据库的学习笔记

    1.SQL分类

    基本分类如下表:

    分类全称说明
    DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
    DMLData Manipulation Language数据操作语言,用来对数据库中的数据进行增删改
    DQLData Query Language数据查询语言,用来查询数据库中表的记录
    DCLData Control Language数据控制语言,用来创建数据库用户,控制数据库的访问权限

    2.SQL-DDL

    2.1 数据库操作

    查询

    查询所有的数据库

    show databases;

    创建

    创建数据库

    create database cat;

    这样就代表创建成功了

    drop database if exists cat;

    也可以这样创建数据库

    检测是否有此数据库,有则创建,没有则不创建,且不会报错

    create database if not exists cat;

    删除

    删除数据库

    drop database cat;

    为了不报错可以这样,删除不存在的数据库时

    drop database if exists cat;

    使用某个数据库

    use cat;

    查询正在使用的数据库

    select database();

    2.2 数据表操作

    创建表

    1. create table tb_user(
    2. id int comment '标号',
    3. name varchar(50),
    4. age int,
    5. gender varchar(1)
    6. ) comment '用户表';

    comment 注释可选可不选

    查询表

    查询所有的数据库中的表

    show tables;

    查询具体的表结构

    desc tb_user;

    查询具体的建表语句,为了看清楚注释

    show create table tb_user;

    修改表

     添加字段

    alter table tb_user add password varchar(50) comment '密码';

    修改字段名和字段类型

    alter table tb_user 旧字段名 新字段名 varchar(255);

    删除字段

    alter table tb_user drop username;

    修改表名

     alter table 旧表名 rename to 新表名;

    删除表

    drop table if exists 表名;

    删除表并重新创建该表(删除了所有的字段,需要重新创建)

    truncate table 表名;

    3.SQL-DML(增删改)

    3.1 插入

    插入数据(根据字段插入)

    insert into tb_user (id, name, age, gender) values (1,'张三',10,'男');

    全部插入,必须要有所有的字段,且需要根据顺序

    insert into tb_user values (2,'李四',10,'男');

    3.2 修改

    where 后面代表条件(如果不带条件,则会影响所有的数据)

    update tb_user set name = '王五' where id = 1;

    3.3 删除

    delete from tb_user where id = 1;

    4.SQL-DQL(查)

    4.1 基础查询

    查询所有字段

    select * from 表名;

    查询指定字段

    select name,id,gender from 表名;

    查询指定字段并起别名

    select workaddress as '工作地址' from 表名;

    查询指定字段并做去重处理

    select distinct workaddress as '工作地址' from 表名;

    4.2 条件查询

    可以携带的条件

    比较运算符号功能
    >        大于
    >=大于等于
    <小于
    <=小于等于
    =等于
    <> 或 !=不等于
    BETWEEN ... AND ...在某个范围之内(含最小值和最大值)
    IN(...)在in之后的列表中的值,多选一
    LINK 占位符模糊匹配('_'匹配单个字符,'%'匹配任意个字符)
    IS NULL是NULL的字段
    逻辑运算符功能
    AND 或 &&并且(多个条件同时成立)
    OR 或 ||或者(多个任意条件成立一个)
    NOT 或 !

    age小于20的所有数据

    select * from emp where age < 20;

    查询没有携带某个字段的数据

    select * from emp where idcard is null;

    配合not使用

    select * from emp where idcard is not null;

    between and 的使用(查询age在15--30的数据)

    select * from emp where age between 15 and 30;

    in的使用(下面二条命令得到的效果是一样的)

    1. select * from emp where age=18 or age=20 or age=90;
    2. select * from emp where age in(18,20,90);

    模糊匹配(查询的name为3个字符的数据)

    select * from emp where name like '___';

    4.3 聚合函数查询

    常见的聚合函数

    函数名功能
    count统计数量
    max最大值   
    min最小值
    avg平均值
    sum求和

    语法:

    select 聚合函数(字段列表) from 表名;

    查询age<30的所有数据总和 

    select count(*) from emp where age < 30;

    查询平均年龄

    select avg(age) from emp;

    4.4 分组查询

    语法

    select 字段列表 from 表名 where 条件 group by 分组字段名 having 分组后过滤条件;

    where与having区别:

    执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

    判断条件不同: where不能对聚合函数进行判断,而having可以。

    根据性别分组,统计男性员工和女性员工的数量 

    select gender,count(*) from emp group by  gender ;

     

    根据性别分组,统计男性员工和女性员工的平均年龄 

    select gender, avg(age) from emp group by gender;

    查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址

    address_count是统计数量取得别名

    select workaddress,count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;

    4.5 排序查询

    select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;

    升序排序 (asc) 默认

     根据年龄升序排序

    select * from emp order by age;
    

    降序排序

    select * from emp order by age desc;
    

    4.6 分页查询(MySql)

    不同数据库可能字段会不一样

    select 字段列表 from 表名 limit 起始索引,查询记录数;

    查询前十条数据

    select * from emp limit 0,10;

    4.7.DQL执行顺序

    ①:from

    ②:where

    ③:group by,having

    ④:select

    ⑤:order by

    ⑥:limit

    5.SQL-DCL

    mysql数据库的user表在,mysql数据库下的user表中

    5.1 用户管理

    创建用户

    刚创建的用户是没有任何权限的

    只能在本机localhost访问

    create user 'itcast'@'localhost' identified by '123456';

    设置任意主机访问

    create user 'itcast'@'%' identified by '123456';

    修改密码

    alter user 'itcast'@'localhost' identified with mysql_native_password by '123';

    删除用户

    drop user 'itcast'@'localhost';

    5.2 用户权限

    查询权限

    show grants for 'root'@'localhost';

    授予权限

    给用户授予特定数据库的所有权限:

    这将授予用户在指定数据库的所有权限,包括SELECT、INSERT、UPDATE、DELETE等。

    GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

    给用户授予特定表的特定权限:

    这将只授予用户在指定表中的SELECT和INSERT权限。

    GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'localhost';

    给用户授予所有数据库的某些权限:

    这将授予用户在所有数据库上执行CREATE、DROP和ALTER等操作的权限。

    GRANT CREATE, DROP, ALTER ON *.* TO 'username'@'localhost';

    给用户授予所有数据库的所有权限:

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';

    撤销权限

    撤销用户对特定数据库的所有权限:

    这将撤销用户在指定数据库上的所有权限。

    REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'localhost';

    撤销用户对特定表的特定权限:

    这将撤销用户在指定表上的SELECT和INSERT权限。

    REVOKE SELECT, INSERT ON database_name.table_name FROM 'username'@'localhost';

    撤销用户对所有数据库的所有权限:

    REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';

  • 相关阅读:
    Fish Shell 的使用特性和优势
    【Python】第四课 列表,元组和字符串的使用
    最新消息!2022年全国大学生数学建模竞赛评阅要点发布
    Python中的requests库日常使用教程
    重生奇迹MU游戏的特别之处
    数据可视化之旅:电商销售看板的制作与心得
    1.摄像机几何
    python cookbook 第八章笔记
    Eureka的设计理念
    创建型模式之原型模式
  • 原文地址:https://blog.csdn.net/m0_64642443/article/details/133238433