第二十一天 Java的基础学习(十五)

本文介绍了SQL的基本概念和主要组成部分,包括数据查询语言DQL、数据操作语言DML、数据定义语言DDL以及数据控制语言DCL。内容涵盖SQL的语法规范、数据类型、事务管理,以及如何创建、修改和删除数据库对象。此外,还讨论了如分组查询、排序和使用LIMIT进行结果限制的方法。
摘要由CSDN通过智能技术生成

一、 SQL

SQL(Structured Query Language)是结构化查询语言的简称,它是一种数据库查询和程序设计语言,也是目前使用最广泛的关系型数据库操作语言。

ff4c963df1404c10b6376c300250d22c.jpg

 ● SQL作用

•是所有关系型数据库的统一操作规范,不同关系型数据库都支持SQL

•所有的关系型数据库都可以使用SQL

•不同数据库之间的SQL有一些区别

●SQL语法规范

•SQL语句可以单行或者多行书写,以;结尾(Navicat中可以不写;)可以使用空格或者缩进增加语句的可读性

•MySQL中使用SQL不区分大小写,一般数据库名,表名,列名小写

•注释方式

--空格             单行注释

/**/                  多行注释

#                     MySQL特有的单行注释

●SQL分类

•数据查询语言(Data Query Language,DQL):

    DQL主要用于数据的查询,其基本结构是使用SELECT子句,FROM子句和WHERE子句的组合来查询一条或多条数据。

• select

• from

• where

•order by

•having

•数据操作语言(Data Manipulation Language, DML):

    DML主要用于对数据增加、修改和删除的操作。

 主要包括:

• INSERT:增加数据

•UPDATE:修改数据

•DELETE:删除数据

●数据定义语言(Data Definition Language,DDL):

   DDL主要用针对是数据库对象(数据库、表、索引、视图)进行创建,修改和删除操作。

主要包括:

•CREATE:创建

•ALTER:修改

•DROP:删除

数据控制语言(Data Control Language,DCL):

      DCL用来授予或回收访问数据库的权限。

主要包括:

.GRANT:授予用户权限

•REVOKE:回收授予的权限。

●事务控制语言(Transaction Control Language, TCL):

    TCL用于数据库的事务管理。

主要包括:

•START TRANSACTION:开启事务

•COMMIT:提交事务

•ROLLBACK:回滚事务

●注:

数据操纵语言DML(insert、update、delete)针对表中的数据;

而数据定义语言DDL(create、alter、drop)针对数据库对象,比如数据库database、表table、索lindex、视图view、存储过程procedure。

●MySQL中常见的数据类型

int 整型

double 浮点型

varchar 字符串型

●详细数据类型

•整数类型

TINYINT       1字节           小整数值

SMALLINT       2字节          大整数值

MEDIUMINT    3字节         大整数值

INT                 4字节         大整数值

BIGINT            8字节         极大整数值

MySQL支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。显示宽度并不限制可以在列内保存的值的范围.

•浮点数类型

FLOAT(m,d)           4字节        单精度浮点数值,m总个数,d小数位

DOUBLE(m,d)        8字节         双精度浮点数值,m总个数,d小数位

注意事项:

浮点数类型的宽度不会自动扩充,使用时需要指定长度。

•字符串类型

CHAR(M)         允许长度0~M个字符的定长字符串

VARCHAR(M)     允许长度0~M个字符的变长字符串

TINYTEXT        短文本数据

TEXT               长文本数据

MEDIUMTEXT   中等长度文本数据

LONGTEXT          极大文本数据

BLOB(M)             以二进制存储图片,文件等数据

①char长度固定,即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定长。

②varchar可变长度,可以设置最大长度,VARCHAR类型能够根据字符串的实际长度来动态改变所占字节的大小,所以在不能明确该字段具体需要多少字符时推荐使用VARCHAR类型,这样可以大大地节约磁盘空间、提高存储效率。

③CHAR和VARCHAR表示的是字符的个数,而不是字节的个数。

④text不设置长度,当不知道属性的最大长度时,适合用text。

⑤按照查询速度:char最快,varchar次之,text最慢。

•日期和时间类型

TIME 

DATE 

YEAR

DATETIME 

TIMESTAMP 

•TIMESTEMP类型的数据指定方式与DATETIME基本相同,不同之处:

①数据的取值范围不同,TIMESTEMP类型的取值范围更小

②如果我们对TIMESTAMP类型的字段没有明确赋值,或是被赋与了NULL值,MySQL会自动将该字段赋值为系统当前的日期与时间

二、DDL

DDL: create drop alter show

●操作数据库

查看所有的库:show databases;

新建库:create database 库名;

删除库:drop database 库名;

选择库:use 库名;

●操作数据库表

查看选择库中所有表:show tables;

查看表结构(字段,类型,约束,...):desc 表名;

查看建表语句:show create table 表名;

●新建表:

create table 表名(

字段 类型(限制),

字段 类型(限制),

···

);

●删除表:drop table 表名;

●修改表:

•修改表名:alter table 表名 rename to 新表名;

•修改字段类型:alter table 表名 modify 字段 新类型(限制); 

•修改字段名:alter table 表名 change 原字段名 新字段名 类型(限制);创建完成的表中添加新字段:alter table 表名 add 字段名 类型(限制);

 

三、DML: insert update delete

●添加数据

•为指定的字段添加数据

insert into 表名(字段,字段,...)values(值,值,..);

•为所有的字段添加数据

insert into 表名 values(值,值,...);

•一次添加多条数据

insert into 表名(字段,字段,..) values(值,值,...),(值,值,...),....;insert into 表名values(值,值,...),(值,值,...),...;

注意:

①字段和数据顺序,个数,类型必须一致

②数据必须在限制的范围内

③字符串类型使用“”或者 ''

④日期类型可以使用字符串类型的日期:“2022-12-8"   “2022.12.8"      "2022/12/8" 

⑤只有为所有字段添加数据时不需要指定字段

●修改数据

不添加条件修改全部的数据

update 表名 set 字段名=新值,字段名=新值,...where 条件;

●删除数据

不添加条件删除全部的数据

delete from 表名 where 条件;

四、DQL

数据查询语言.查询数据库表中的数据.

•语法格式:

select字段名,字段名,... from 表名;查询指定字段所有的值

select字段名,字段名,...from 表名 where 条件;查询指定字段符合条件的值

●注:

•查询所有字段.*代表所有字段

select *from 表名;

select*from 表名 where 条件;

•可以将查询的字段名指定为显示的内容,为字段名定义别名

select 字段名 as 别名,字段名 as 别名,..from表名;

select 字段名 as 别名,字段名 as 别名,... from 表名 where条件;as 可以省略不写

select 字段名 别名,字段名别名,...from 表名;

•查询到的数字类型字段值进行数学计算,+  -*   /   %

●条件查询

•如果查询语句中没有设置条件,就会查询所有的行信息

•在实际应用中,通常会指定查询的条件,对记录进行过滤

●语法格式:

select 列名 from 表名 where 条件;

●比较运算符

between...and... 显示在某一区间的值

in(集合) 集合表示多个值,使用逗号分隔,例如name in(悟空,八戒);in中的每个数据都会作为一次条件,只要满足条件就会显示

is null 查询某一列为null的值,注意,不能写=null

●逻辑运算符

and &&       多个条件同时成立

or            多个条件任一成立

not            取反

●模糊查询

模糊查询,通配符

%         表示匹配任意多个字符

-        表示匹配任意一个字符

五、约束

●约束的作用

可以对表中的数据做一些限制,从而保证数据的正确性,有效性,和完整性。

违反约束的不正确数据是无法插入到表中的。

●约束的分类

主键         primary key         不可重复,不能为空,即唯一+非 空

唯一         unique                不可重复

非空         not null              不能为空

默认值      default                赋予默认值

检查(Mysql8提供)check           取值范围

外键         foreign key           表与表之间的关系

●为表添加约束,符合约束的数据可以添加到表中,不符合约束的数据不可以添加到表中,数据具有完整性,有效性,正确性。

主键约束:非空(不允许为null)+唯一(不允许重复) 

六、排序

通过order by子语句,可以将查询出的结果进行排序(排序只是显示效果,并不会影响真实的数据)。

语法格式:

select 字段名 from 表名[where 条件] order by 字段名[asc | desc];

•单列排序

只按照某一个字段进行排序。

七、SQL函数的两种类型

单行函数 ;多行函数

●单行函数:

单行函数是指对每一条记录的值进行计算,并得到相应的计算结果,然后返回给用户,也就是说,每条记录作为一个输入参数,经过函数计算得到每条记录的计算结果。

常用的单行函数主要包括字符串函数、数值函数、日期与时间函数、流程函数以及其他函数。

使用单行函数,是对行中字段的操作,操作多少行,返回多少行数据。

b0fba2cc832044bb8c283ded777ca896.jpg

 ●字符函数

大小写处理函数; 字符处理函数

•大小写处理函数

LOWER(s) | LCASE(s)         将字符串 s转换为小写 

UPPER(s) | UCASE(s)         将字符串S转换为大写 

•字符处理函数

LENGTH(s)                    返回字符串s的长度

LENGTH(S)                   返回字符串s的长度

CONCAT(S1,s2...sn)         字符串 s1,s2 等多个字符串合并为一个字符串

LPAD(S1,len,s2)            在字符串 s1的开始处填充字符串s2,使字符串长度达到 len

LTRIM(S)                    去掉字符串s开始处的空格

 REPLACE(S,S1,S2)      将字符串 s2 替代字符串 s中的字符串s1

REVERSE(S)              将字符串s的顺序反过来

RPAD(S1,len,s2)          在字符串 s1 的结尾处添加字符串s2使字符串的长度达到len

RTRIM(s)                  去掉字符串s结尾处的空格

SUBSTR(s, start, length)         从字符串s的start 位置截取长度为length的子字符串

SUBSTRING(s, start,length)    从字符串s的start 位置截取长度为 length 的子字符串

TRIM(S)                      去掉字符串s开始和结尾处的空格

●流程函数

if(条件,值1,值2):条件 true->值1 false->值2

ifnull(值1,值2):值1为null 返回值2,值1不为null 返回值1

case

when 条件 then 结果,

when 条件 then 结果,

else 结果

end

●多行函数:

多行函数查询是纵向查询,它是对某一列的值进行计算,然后返回一个单一的值。

•多行函数会忽略null空值。

•多行函数也称为分组函数,聚合函数。

使用多行函数,是对某一列的值进行计算,然后返回一个单一的值

●count(字段) 统计指定列不为null的记录行数

sum(字段) 计算指定列的数值和

max(字段) 计算指定列的最大值

min(字段) 计算指定列的最小值

avg(字段) 计算指定列的平均值

八、分组

分组查询指的是使用group by语句,对查询的信息进行分组,相同数据作为一组。

●语法格式:

select 分组字段/聚合函数 from 表名 group by 分组字段[having 条件];

●注:

•分组时可以查询要分组的字段,或者使用聚合函数进行统计操作

•查询其他字段没有意义

●select语句的执行顺序

from -- where -- group by -- having -- select -- order by

●where和having

where     分组之前的过滤后边不能写多行函数

having     分组之后的过滤后边可以写多行函数

九、limit关键字 

• limit:限制返回的查询结果的函数(通过limit函数,控制查询返回多少行数据)•

limit语法是MySql的方言,用来完成分页

●语法格式:

select 字段1,字段2... from 表名1imit offset, length;

●offset 起始行数,从0开始,如果省略则默认从0开始,0代表MySQL中第一条数据

●length返回的行数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值