SQL语句

目录

SQL语句是什么

SQL语言的分类

数据处理函数(单行处理函数)

分组函数(多行处理函数)

常用的分行处理行数

搜索引擎

MyISAM存储引擎

InnoDB存储引擎

MEMORY存储引擎

其他命令


SQL语句是什么

SQL语句又叫做结构化查询语言,程序员通过编写SQL语句,如何数据库否则执行SQL语句,最终完成数据库中数据的增删改查操作。学习数据库其实就是对SQL语句的学习。

SQL语言的分类

SQL语言有很多,对命令进行分门别类,这样更容易记忆,

数据处理函数(单行处理函数)

数据处理函数又被称为单行处理函数

单行处理函数的特点:一个输入对应一个输出。

和单行处理函数相对的是:多行处理函数。(多行处理函数特点:多个输入,对应1个输出!),具体下面会写。

  • 常见的单行处理函数
    • lower()
      • 转换小写
      • lower(被处理的字符串)
    • upper()
      • 转换大写
      • upper(被处理的字符串)
    • substr()
      • 截取
      • (substr( 被截取的字符串, 起始下标,截取的长度))
      • 这里的起始下标为1.
    • concat()
      • 拼接字符串
      • concat(字符串1,字符串2)
      • 字符串2会接到字符串1的后面
    • length()
      • 取长度
      • length(数据)
    • trim()
      • 去空格
      • trim(被处理的字符串)
    • str_to_date()
      • 将字符串转换成日期
      • str_to_date('字符串日期', '日期格式')
      • mysql的日期格式:
                    %Y    年
                    %m 月
                    %d 日
                    %h    时
                    %i    分
                    %s    秒
      • 如果字符串日期的格式是%Y-%m-%d,则可以不使用这个函数,MySQL会自动进行转换
    • date_format()
      • 日期格式转换为字符串类型
      • date_format(日期类型数据, '日期格式')
    • format()
      • 设置千分位
      • format(数字, '格式')
      • 格式需要在前面加一个$号
    • round()
      • 四舍五入
      • round(值,保留位数)
      • 保留位数可以是负数,假如为-1时,则会保留到十位,以此类推。
    • rand() 
      • 生成随机数
      • 生成的随机数都是整数部分为0的小数。
      • 如果需要取100以内的随机数,可以将生成的随机数*100.
    • ifnull()
      • 可以将 null 转换成一个具体值
      • ifnull(数据, 被当做哪个值)
      • ifnull是空处理函数。专门处理空的。在所有数据库当中,只要有NULL参与的数学运算,最终结果就是NULL。
    • now()
      • 获取当前时间

分组函数(多行处理函数)

多行处理函数的特点:输入多行,最终输出一行。

常用的分行处理行数

  • count()   
    •  计数
  • sum()
    • 求和
  • avg() 
    • 平均值
  • max()   
    • 最大值 
  • min() 
    • 最小值
  • 注意:
    • 分组函数在使用的时候必须先进行分组,然后才能用。如果你没有对数据进行分组,整张表默认为一组。
    • 分组函数自动忽略NULL,你不需要提前对NULL进行处理。
    • 分组函数中count(*)和count(具体字段)有什么区别?
      • count(具体字段):表示统计该字段下所有不为NULL的元素的总数。
      • count(*):统计表当中的总行数。(只要有一行数据count则++)。因为每一行记录不可能都为NULL,一行数据中有一列不为NULL
    • 分组函数不能够直接使用在where子句中。
      • 因为分组函数在使用的时候必须先分组之后才能使用。而在where中出现的话,这个时候还没有分组。

搜索引擎

mysql支持九大存储引擎,当前5.5.36支持8个。版本不同支持情况不同。

可以使用:show engines 查看有哪些搜索引擎,需要了解的搜索引擎只有3种:

MyISAM存储引擎

它管理的表具有以下特征:
        使用三个文件表示每个表:
            格式文件 — 存储表结构的定义(mytable.frm)
            数据文件 — 存储表行的内容(mytable.MYD)
            索引文件 — 存储表上索引(mytable.MYI):索引是一本书的目录,缩小扫描范围,提高查询效率的一种机制。
        可被转换为压缩、只读表来节省空间
MyISAM存储引擎特点:
            可被转换为压缩、只读表来节省空间
            这是这种存储引擎的优势!!!!

MyISAM不支持事务机制,安全性低。

InnoDB存储引擎

这是mysql默认的存储引擎,同时也是一个重量级的存储引擎。
    InnoDB支持事务,支持数据库崩溃后自动恢复机制。
    InnoDB存储引擎最主要的特点是:非常安全。

它管理的表具有下列主要特征:
        – 每个 InnoDB 表在数据库目录中以.frm 格式文件表示
        – InnoDB 表空间 tablespace 被用于存储表的内容(表空间是一个逻辑名称。表空间存储数据+索引。)

        – 提供一组用来记录事务性活动的日志文件
        – 用 COMMIT(提交)、SAVEPOINT 及ROLLBACK(回滚)支持事务处理
        – 提供全 ACID 兼容
        – 在 MySQL 服务器崩溃后提供自动恢复
        – 多版本(MVCC)和行级锁定
        – 支持外键及引用的完整性,包括级联删除和更新

InnoDB最大的特点就是支持事务:
        以保证数据的安全。效率不是很高,并且也不能压缩,不能转换为只读,
        不能很好的节省存储空间。

MEMORY存储引擎

使用 MEMORY 存储引擎的表,其数据存储在内存中,且行的长度固定,
    这两个特点使得 MEMORY 存储引擎非常快。

MEMORY 存储引擎管理的表具有下列特征:
        – 在数据库目录内,每个表均以.frm 格式的文件表示。
        – 表数据及索引被存储在内存中。(目的就是快,查询快!)
        – 表级锁机制。
        – 不能包含 TEXT 或 BLOB 字段。

    MEMORY 存储引擎以前被称为HEAP 引擎。

    MEMORY引擎优点:查询效率是最高的。不需要和硬盘交互。
    MEMORY引擎缺点:不安全,关机之后数据消失。因为数据和索引都是在内存当中。

对于SQL语句来说,是通用的,
            所有的SQL语句以“;”结尾。mysql是不见“;”不执行,“;”表示结束!,
            另外SQL语句不区分大小写,都行。

注意:在所有的数据库当中,字符串统一使用单引号括起来,
            单引号是标准,双引号在oracle数据库中用不了。但是在mysql
            中可以使用。

            再次强调:数据库中的字符串都是采用单引号括起来。这是标准的。
            双引号不标准。

在数据库当中null不能使用等号进行衡量。需要使用is null
        因为数据库中的null代表什么也没有,它不是一个值,所以不能使用
        等号衡量。

其他命令

登录数据库

  • mysql -uroot -p

查看当前使用的数据库

  • select database();

只看表的结构,有一个命令:

  • desc 表名;

显示当前时间

  • select now();

退出数据库

  • exit/quit/ctr+d
  • 使用任意一个即可

查看所有数据库

  • show databases;

创建数据库

  • create database 数据库名 charset=编码格式;
  • 编码格式一般为utf8即可

使用数据库

  • use 数据库名;

删除数据库

  • drop database 数据库名;

查看当前数据库中所有表

  • show tables;

查看表结构

  • desc 表名;

查看创表SQL语句

  • show create table 表名;

查看创库SQL语句

  • show create database 数据库名;​​​​​​​​​​​​​​

查看约束

  • select * from information_schema.TABLE_CONSTRAINTS where TABLE_NAME="表名";
  • 表示指定表内的约束名,where可以省略,表示查看全部的约束名
  • watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASEhZWkJD,size_20,color_FFFFFF,t_70,g_se,x_16
  • 红色的表示约束名,黄色的表示约束 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatis是一个开源的持久层框架,它可以帮助开发者简化数据库操作的代码。MyBatis动态SQL语句是指在编写SQL语句时可以根据不同的条件动态生成不同的SQL语句。 MyBatis提供了以下几种方式来实现动态SQL语句: 1. if元素:通过if元素可以根据条件判断来生成不同的SQL语句片段。例如: ``` <select id="getUserList" parameterType="User" resultType="User"> SELECT * FROM user WHERE 1=1 <if test="name != null"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </select> ``` 上述示例中,如果传入的User对象中name属性不为空,则会生成AND name = #{name}这段SQL语句。 2. choose、when、otherwise元素:通过choose、when、otherwise元素可以实现类似于switch语句的功能,根据不同的条件选择不同的SQL语句片段。例如: ``` <select id="getUserList" parameterType="User" resultType="User"> SELECT * FROM user WHERE 1=1 <choose> <when test="name != null"> AND name = #{name} </when> <when test="age != null"> AND age = #{age} </when> <otherwise> AND status = 'ACTIVE' </otherwise> </choose> </select> ``` 上述示例中,如果传入的User对象中name属性不为空,则会生成AND name = #{name}这段SQL语句;如果name为空而age不为空,则会生成AND age = #{age}这段SQL语句;如果name和age都为空,则会生成AND status = 'ACTIVE'这段SQL语句。 3. foreach元素:通过foreach元素可以实现对集合类型的参数进行遍历,并生成相应的SQL语句片段。例如: ``` <select id="getUserList" parameterType="List" resultType="User"> SELECT * FROM user WHERE id IN <foreach collection="list" item="id" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 上述示例中,如果传入的List参数中包含[1, 2, 3]三个元素,则会生成SELECT * FROM user WHERE id IN (1, 2, 3)这段SQL语句。 这些是MyBatis动态SQL语句的几种常用方式,通过它们可以根据不同的条件生成不同的SQL语句,提高了SQL语句的灵活性和可复用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHYZBC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值