JavaWeb——SQL语言的学习

本文详细介绍了SQL语言,包括其概念、书写格式和四大分类:DDL(数据库和表的操作)、DML(增删改数据)、DQL(查询数据)和DCL(用户授权)。讲解了如何进行数据库和表的CRUD操作,如创建、查询、修改和删除,以及表结构的定义。此外,还涵盖了查询语法、条件查询、排序、聚合函数、分组、分页和用户权限管理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL介绍

1.SQL的概念

         SQL(Structured Query Language):结构化查询语言,其实就是定义了操作所有关系数据库的规则。每一种数据库的操作方式处在不一样的地方称为“方言”。

2.SQL语言的书写格式

    (1).SQL语言可以单行或多行书写,以分号结尾。
    (2).可以通过空格或者缩进来增强语句的可读性。
    (3).MYSQL数据库的SQL语句不区分大小写,关键字建议使用大写。
    (4).三种注释
        *单行注释;--(一个空格) 注释内容  或者  #注释
        *多行注释:/* 注释 */

3.SQL分类

    1.DDL——操作数据库和表的
    2.DML——增删改表中的数据
    3.DQL——查询表中的数据
    4.DCL——用户授权

DDL:操作数据库和表

操作数据库:CRUD

      1.C(create):创建数据库
            *创建某个数据库:1.Create Database 数据库名称 2.create database if not exists data01;(先判断是否存在数据库,没有就创建) 3.create database if not exists 数据库名称 character set 字符集(自定义字符集创建方式)
        2.R(retrieve):查询
            *查询所有数据库的名称:Show Databases;
            *查看某个数据库的字符集(查看某个数据个的创建语句):Show Create Database 数据库名
        3.U(update):修改
            *修改数据库的字符集:alter database 数据库名称 character set 字符集名称
        4.D(delete):删除
            *删除数据库 drop database if exists 数据库名称//判断并删除
        5.使用数据库
            *查询正在使用的数据库名称:select database();
            *使用数据库:use 数据库名称


操作表:CRUD

        1.C(create):创建
            *creat table 表名(
                列名1 数据类型1,
                列名2 数据类型2,
                ...
                列名n 数据类型n);
                注意:最后一个列名不用加逗号。
                create table student(
                    id int,
                    name varchar(50),
                    age int,
                    score double(4,1),
                    birthday date,
                    insert_time timestamp);
             *表中的数据类型
                *int 整数类型
                *double 小数类型:double(5,2)数字最多5位,小数类型占两位,最大值999.99
                *date 日期类型,只包含年月日,yyyy-MM-dd
                *datetime 日期类型,包含年月日时分秒:yyyy-MM-dd HH:mm:ss
                *timestamp:时间类型 包含年月日时分秒:yyyy-MM-dd HH:mm:ss//如果不给timestamp类型赋值或赋值为null,会自动添加系统时间。
                *varchar:字符串类型:name varchar(20),名字最大长度20

               *复制表create table 表名 like 表名
        2.R(retrieve):查询
            *查询某个数据库所有表的名称:show tables
            *查询表结构:desc 表名
        3.U(update):修改
            *修改表名
                alter table 表名 rename to 新的表名;
            *修改表的字符集
                alter table 表名 character to 字符集名称
            *添加一列
                alter table 表名 add 列名 数据类型
            *修改列名称,类型
                alter table 表名 change 原列名 修改的列名 修改的类型
                alter table 表名 modify 列名 新的数据类型
            *删除列
                alter table drop 列名
        4.D(delete):删除
            *drop table 表名
            *drop table if  exists 表名称

DML:增删改查数据

        1.添加数据
                语法
                 insert into 表名(列名1,列名2,...,列名n) values(值1,值2,...,值n);
                 insert into 表名values(值1,值2,...,值n);简化形式,全添加
            除了数字类型,其他类型需要引号,单引号双引号都行,日期也是
        2.删除数据
        语法
                delete from 表名 where 条件   注意:如果不加条件就会删除所有表中所有信息
                truncate table 表名 //删除表,然后创建一个一摸一样格式的表
        3.修改数据
                语法
                update 表名 set 列名1=值1,列名2=值2...where 条件 注意:如果不加条件会将表内记录全部修改

DQL:查询表内的数据

1.语法:

        select 需要的字段
        from 表名
        where 条件列表(可以写多个条件)
        group by 分组字段
        having 分组之后的限定
        order by 排序
        limit   分页的限定

 2.基础的查询

       1.多个字段的查询
            select 字段1,字段2...form 表名 where 条件
        2.去除重复查询
            select distinct 列名 FROM 表名;
        3.计算列
            一般可以使用四则运算计算一些列的运算
            ifcull(表达式1,表达式2):如果null参与运算,计算结果都会为null,所以ifnull是判断表达式1是否为null,如果是则用表达式2代替
            SELECT NAME,math,English,math+IFNULL(English,0)FROM student;//这里如果英语列为NULL,这该值设为0再相加


 4.起别名

            1.SELECT NAME,math AS 数学,English AS 英语,math+IFNULL(English,0)AS 总分FROM student;
            12.SELECT NAME,math  数学,English 英语,math+IFNULL(English,0) 总分FROM student;

3.条件查询

        1.where字句后加条件
        2.运算符
            *>,<,>=,<=,=, <>,!=,后两个都是不等于
            *between...and
            *in
            *like
                占位字符:_(下划线)单个占位符,%多个占位符
            *is null
            *and 或 &&
            *or  或 ||
            *not 或 !
            注意在查找为空值时不能用 =null ,而是用 is null 或 is not null

 4.排序查询

        语法:order by 字句
            *order by 排序字段1 排序方式1,排序字段2 排序方式2...

        排序方式:1.ASC 升序(默认的,如果不指定排序方式的话)。 2.desc(降序)

        如果有多个排序,先按照第一个进行排序,当前面的条件值相同时再安装第二个排序

5.聚合函数:

         将一列数据作为一个整体,进行纵向的计算。(例如算平均分)
        1.count:计算个数
        2.max:计算最大值
        3.min:计算最小值
        4.sum:计算和
        5.ayg:计算平均值

        注意:聚合函数的计算会排除null值,所以要计算null值可以用count(ifcull(表达式1,表达式2))或者count(*)后者不推荐使用


    6.分组查询

        语法:group by 分组字段
        注意:
            1.分组之后查询的字段只能是分组字段跟聚合字段,不能是其他字段
            2.where和having的区别:1.where再分组之前进行限定,如果不满足条件这不参与分组;having在分组之后限定,如果不满足条件则不显示该分组 2.where后不可以跟聚合函数,having可以进行聚合函数的判断


    7.分页查询

        1.语法:limit 开始的索引,每页查询的条数;
        2.公式:开始的索引=(当前的页码-1)*每页显示的条数
        3.limit的语法是个方言,只能在MySQL进行使用。

DCL:用户授权


.管理用户

1.添加用户
            -- 创建用户
            CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
2.删除用户
            -- 删除用户
            DROP USER '用户名'@'主机名'
3.修改用户密码
            1.UPDATE USER SET PASSWORD=PASSWORD('新密码')WHERE USER='用户名';
            2.set password for '用户名' @'主机名' =password('新密码');
            *在MySQL中忘记root用户密码该怎么办?
                1.cmd-->net stop mysql 停止mysql服务 需要管理员去运行cmd
                2.使用无验证方式启动mysql服务:mysql --skip-grant-tables
                3.打开新的cmd窗口,直接输入mysql,敲回车。就可以直接登录
                4.输入:use mysql;(打开mysql数据库)
                5.输入:update  user set password=password('你的密码') where user='root'
                6.关闭两个窗口.
                7.打开任务管理器,手动结束mysql.exe的进程。
                8.启动mysql服务
                9.用新密码登录。
4.查询用户
            -- 查询用户
            -- 1.切换到mysql用户
            USE mysql;

            -- 2.查询用户
            SELECT* FROM USER;

授权管理

        1.查询权限
            -- 查询权限
            SHOW GRANTS FOR '用户名'@'主机名';

         2.授予权限
            --授予权限
            grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

            --授予所有权限
            grant all on *.* to '用户名'@'主机名';

        3.撤销权限
            --撤销权限:
            revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值