数据库---单表操作的SQL语句

1. 什么是SQL语句?

SQL:结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言。
数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时就需要使用到数据库认识的语言—SQL语言。

2. SQL语句的作用?

通过SQL语句可以对数据库管理系统中的数据库,表,表中的数据进行增删改查。

3. SQL语句的分类?

1.DDL(Data Definition Language)数据定义语言
用来操作数据库和表
关键字:create,drop,alter等

2.DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改
关键字:insert,delete, update等

3.DQL(Data Query Language)数据查询语言
用来对数据库中表的数据进行查询
关键字:select,from,where等

4.DCL(Data Control Language)数据控制语言
用来定义数据库的访问权限和安全级别,及创建用户。
关键字:grant, revoke等

5.TCL(Transaction Control Language) 事务控制语言
用于控制数据库的事务操作
关键字: commit,rollback等

4. DDL操作数据库的语法?

1.创建数据库
创建数据库(掌握):create database 数据库名; 默认:utf-8
判断是否存在并创建数据库:create database if not exists 数据库名; 默认:utf-8
存在:不创建
不存在:创建
创建数据库指定字符集:create database 数据库名 character set 字符集(gbk);

2.查询数据库
查询所有数据库:show databases;
查看某个数据库的定义信息: show create database 数据库名称;

3.删除数据库
删除数据库:drop database 数据库名;

4.数据库的其他操作
查看当前使用的数据库:select database();
使用/切换数据库:use 数据库名;
注意:如果想要操作哪个库(创建表),就得先进入到该数据库中

5. DDL操作表的语法?

1.创建表
create table 表名(
字段名1 字段类型1(长度),
字段名2 字段类型2(长度)

)
ps:表名会有关键字 解决:换名,两边加上反引号``
ps:只有字符串类型需要手动加长度,其它类型都不需要加长度(默认有)

数据类型:
java的数据类型 mysql数据库的数据类型
int int
float float
double double
char/string varchar

date date yyyy-MM-dd
time HH:MM:SS
datetime YYYY-MM-DD HH:MM:SS

2.查看表
查看某个数据库中的所有表: show tables;
查看表结构: desc 表名称;
查询建表语句: show create table 表名;
快速创建表结构: create table 新表名 like 旧表名; 特点:2张表的结构一样

3.修改表结构
添加表列 : alter table 表名 add 列名 类型;
删除表列 : alter table 表名 drop 列名;
修改列名 : alter table 表名 change 旧名称 新名称 类型;
修改列类型: alter table 表名 modify 列名 新类型
修改表名称: rename table 表名 to 新表名;

4.删除表
直接删除表: drop table 表名;
判断表是否存在并删除表(了解): drop table if exists 表名;
存在就删 不存在就不删了

6. DML操作数据的语法?

1.插入记录
添加全部字段:insert into 表名 values (值1, 值2, 值3);
添加部分字段:insert into 表名 (字段名1, 字段名2, …) values(值1, 值2, …);

2.修改记录
不带条件修改数据:update 表名 set 字段名1 = 值1,字段名2 = 值2 ; 特点:全改
根据条件修改数据:update 表名 set 字段名1 = 值1,字段名2 = 值2 where 字段名=值; 特点:按条件改
关键字:
UPDATE: 修改数据
SET: 修改哪些字段
WHERE: 指定条件

3.删除记录
不带条件删除数据: delete from 表名; 特点:全删
根据条件删除数据: delete from 表名 where 字段名=值; 特点:按条件删
truncate删除表记录: truncate table 表名; 全删

7. delete和truncate删除数据的区别?

delete是将表中的数据一条一条删除;
truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样;
delete删除的数据能够找回,truncate删除的数据找不回来了。
delete 删除表中的数据,但不重置 auto_increment 的值 ;
truncate 摧毁表,重建表,auto_increment 重置为1 。

8. DQL查询数据的语法?

简单查询:

* 查询所有列:  select * from 表名;

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

* 别名查询:  select 字段名1 as 别名, 字段名2 as 别名... from 表名 as 表别名; 

* 清除重复值:  select distinct 字段名 from 表名;
	清除重复值的关键字为 distinct ,一个 select 语句只能有一个 distinct ,而且只能写在 select 关键字的后面。它的执行流程为,是先将查询出来字段的数据进行组合,然后在对组合的结果进行检查是否存在重复值,如果存在,则只保留一条。
	
* 查询结果参与运算: select 列名1 + 固定值 from 表名;(参数运算的字段必须为数值型)
	null值处理,ifnull(表达式1,表达式2) : 若表达式1的值为null,则返回表达式2的结果;若表达式1的值不为null,则返回表达式1的值。

条件查询:

select * from 表名 where 条件(各种运算符); 
取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回。

运算查询:

> 大于 
< 小于 
<= 小于等于 
>= 大于等于 
= 等于 
<>!= 不等于
and(&&) 多个条件同时满足 
or(||) 多个条件其中一个满足 
not(!) 不满足

范围查询:
&&=between1 and2
||=in

模糊查询:

like表示模糊查询 select * from 表名 where 字段名 like '通配符字符串',满足通配符字符串规则的数据就会 显示出来,所谓的通配符字符串就是含有通配符的字符串。
MySQL通配符有两个: % : 表示0个或多个字符(任意个字符) 
				  _ : 表示一个字符。

排序查询:

通过 order by 子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)。
语法:select * from 表名 where 条件 order by 字段名 [desc | asc] ;

组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。
select * from 表名 where 条件 order by 字段名 [desc | asc] , 字段名 [desc | asc] ;
asc(默认) : 升序   desc : 降序

聚合查询:

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是 对一列的值进行计算,然后返回一个结果值。另外聚合函数会忽略空值。
count() : 统计指定列记录数,记录为null的不统计  ifnull(字段,设置的值)
sum() :  计算指定列的数值和,如果不是数值类型,那么计算结果为0
max() :  计算指定列的最大值
min() :  计算指定列的最小值
avg() :  计算指定列的平均值,如果不是数值类型,那么计算结果为0

聚合函数的使用:写在SQL语句select后字段名的地方 select 字段名... from 表名; 
			例:select count(age) from 表名;

分组查询:

分组查询是指使用 group by 语句对查询信息进行分组,相同数据作为一组。
group by 将分组字段结果中相同内容作为一组,并且返回每组的第一条数据,所以单独分组没什么用处。分组的目的就是为了统计,一般分组会跟聚合函数一起使用。分组后聚合函数的作用不是操作所有数据,而是操作一组数据。

语法:select * from 表名 where 条件  group by 分组字段 [having 分组条件 ]  ;
group by 分组字段 [having 条件]

分页查询:

limit 是限制的意思,所以limit的作用就是限制查询记录的条数。
语法:select * from 表名 limit 跳过条数,查询条数 ;

9. having与where的区别?

having是在分组后对数据进行过滤
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合函数

10. SQL解析顺序?

SQL书写顺序:
select distinct…from…where…group by…having…order by…limit a,b ;

MySQL解析器执行的顺序:
from:需要从哪个数据表获取数据
where:给出过滤数据表中数据的条件
group by:将过滤出的数据进行分组
having:给出对分组的数据进行过滤的条件
select:取出结果集中的某个列,或者某个列的计算结果
distinct:移除相同的行
order by:按照某种顺序对返回的数据进行排序
limit:限制查询记录的条数

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值