Java数据库篇3——SQL

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库 查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统

1、SQL分类

分类 说明
数据定义语言 简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列 等
数据操作语言 简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新
数据查询语言 简称DQL(Data Query Language),用来查询数据库中表的记录
数据控制语言 简称DCL(Date Control Language),用来定义数据库的访问权限和安全级别, 及创建用户

2、Mysql数据类型

3、DDL(数据定义语言)

3.1、操作数据库

查询表

#查看所有表
Show tables;
#查看指定表的内容
Desc 表名;
#查看表的创建语句(字符集)
Show create table 表名;

创建表

Create table 表名(列名1 数据类型1,列名2 数据类型2,列名3 数据类型3
);

复制表1

Create table 表名2 like 表名1;

修改表

#修改表名
Alter table 原表名 rename to 新表名;
#修改表的字符集
Alter table 表名 character set 字符集;
#在表内添加一行
Alter table 表名 add 列名 数据类型;
#修改列名
Alter table 表名 change 原列名 新列名 数据类型(可修改);
#修改列的数据类型
Alter table 表名 modify 列名 新数据类型;
#删除列
Alter table 表名 drop 列名;

删除表

Drop table 表名;
#存在此表才删除
Drop table if exists 表名;

3.2、DDL操作表

查询表

#查看所有表
Show tables;
#查看指定表的内容
Desc 表名;
#查看表的创建语句(字符集)
Show create table 表名;

创建表

创建表
Create table 表名(列名1 数据类型1,列名2 数据类型2,列名3 数据类型3
);

复制表1

Create table 表名2 like 表名1;

修改表

#修改表名
Alter table 原表名 rename to 新表名;
#修改表的字符集
Alter table 表名 character set 字符集;
#在表内添加一行
Alter table 表名 add 列名 数据类型;
#修改列名
Alter table 表名 change 原列名 新列名 数据类型(可修改);
#修改列的数据类型
Alter table 表名 modify 列名 新数据类型;
#删除列
Alter table 表名 drop 列名;

删除表

Drop table 表名;
#存在此表才删除
Drop table if exists 表名;

4、DML(数据操作语言)

4.1、添加数据

#添加单个数据
Insert into 表名 (列1,列2……列n) values (值1,值2……值n);
#添加多个数据
Insert into 表名 (列1,列2……列n) values (值1,值2……值n),
(值1,值2……值n),
(值1,值2……值n);
  • 添加表中所有列数据的时候,可以省略列这个括号
  • 列和值要一一对应
  • Null可以作为占位符使用
  • 值除了数字类型和null,其他类型都要用引号引起来

4.2、修改数据

Update表名 set 列=值,列=值 where 条件语句;
  • 值除了数字类型和null,其他类型都要用引号引起来
  • 不加条件就修改所有的记录

4.3、删除数据

Delete from 表名 where 条件语句;
  • 不加条件删除所有的记录

  • truncate table 表名;删除表,创建一个一摸一样的空表

5、DQL(数据查询语言)

5.1、语法

select字段列表
from表名列表
where条件列表
group by分组字段
having分组之后的条件
order by排序
limit分页限定

5.2、基础查询

#多字段查询
Select 列名1,列名2 from 表名;
#去重查询
Select distinct 列名1,列名2 from 表名;(只有结果集完全相同才会被去重)
#计算列的查询
Select 列名1,列名2,列名1+列名2 from 表名;(一般都是数值相加,null+任何数都是为null)
#Ifnull函数
Select 列名1,列名2,ifnull(列名1,0)+ ifnull(列名2,0) from 表名;
#查询所有列
Select * from 表名;

5.3、条件查询

  • >

  • <

  • =

  • <>不等于

  • !=不等于

  • And等同于&&

  • Or等同于||

  • Between,,,and,,,包含边界,not不包含

  • In(值1,值2,,,值n)集合

  • Null不能用=判断要用is和is not

  • As起别名,数据库,表,都可以起别名,且as可以省略

select 列名 from 表名 where 条件表达式

5.4、模糊查询

  • _占位符,单个任意字符
  • %占位符,任意多个任意字符
SELECT * FROM address WHERE home LIKE ‘_澈’;

5.5、排序查询

  • 升序ASC
  • 降序DESC
Select 列1,列2 from 表名 order by 列1 排序方式1,列2,排序方式2;

5.6、聚合函数

5.6.1、count函数

#count(*):返回表中满足where条件的行的数量
select count(*) from student;
#count(列):返回列值非空的行的数量
select count(score) from student;
#count(distinct 列):返回列值非空的、并且列值不重复的行的数量
select count(distinct score) from student;

5.6.2、max和min函数

统计列中的最大最小值

select max(score) from student;
select min(score) from student;

如果统计的列中只有NULL值,那么MAX和MIN就返回NULL

5.6.3、sum和avg函数

求和与求平均

select sum(score) from student;
select avg(score) from student;
select avg(ifnull(score,0)) from student;

表中列值为null的行不参与计算,要想列值为NULL的行也参与组函数的计算,必须使用IFNULL函数对NULL值做转换

5.7、分组查询

分组查询的一定是分组字段或者聚合函数,否则将没有意义

Select 列1,列2 from 表名 group by 列名;
Select 列1,列2,列名 from 表名 group by 列名 having 条件语句;

Where分组前限定,having在分组后限定,where不可以判断聚合函数,having可以

5.8、分页查询

#Limit 开始索引 每页的条数;
Select * from 表名 limit 开始索引(每页条数*当前页码减一) 每页条数;

6、DCL(数据控制语言)

用来管理用户和管理权限

用户的信息都放在mysql数据库下的user表中

6.1、管理用户

  • localhost
  • %
#添加用户
Create user '用户名'@'主机名' identified by '密码';
#修改用户
Alter user '用户名'@'主机名’ identified by '密码';
#删除用户
Drop user '用户名'@'主机名';

6.2、权限管理

#查询权限
Show grants for '用户名'@'主机名';
#添加权限
Grant 权限列表 on 数据库.表名 to '用户名'@'主机名';
#删除权限
Revoke 权限列表 on 数据库.表名 from '用户名'@'主机名';

均可使用通配符,权限的通配符用all不是*

Java数据库篇3——SQL相关推荐

  1. Java数据库篇9——备份与还原、忘记密码

    Java数据库篇9--备份与还原.忘记密码 1.备份 备份的应用场景 在服务器进行数据传输.数据存储和数据交换,就有可能产生数据故障.比如发生 意外停机或存储介质损坏. 这时,如果没有采取数据备份和数 ...

  2. Java数据库篇8——索引、视图、存储过程、触发器

    Java数据库篇8--索引.视图.存储过程.触发器 1.索引 1.1.索引是什么 在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令MySQL的查询和 运行更加高效 如果合理的 ...

  3. Java数据库篇5——事务

    Java数据库篇5--事务 1.什么是事务 事务是一个整体,由一条或者多条SQL 语句组成,这些SQL语句要么都执行成功,要么都执行失败, 只要有 一条SQL出现异常,整个操作就会回滚,整个业务执行失 ...

  4. Java数据库篇1——数据库配置

    Java数据库篇1--数据库配置 1.数据库 数据库(DataBase) 就是存储和管理数据的仓库 本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上 2.数据库的优点 存储方式 优点 缺点 ...

  5. java数据库编程——执行SQL 语句

    [0]README 1) 本文文字描述+source code 均转自 core java volume 2 , 旨在理解 java数据库编程--执行SQL 语句 的基础知识 : 2)for sour ...

  6. Java数据库篇7——数据库设计

    Java数据库篇7--数据库设计 1.第一范式 列不可再分 每一列属性都是不可再分的属性值,确保每一列的原子性 两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据 2.第二范式 属性 ...

  7. Java数据库篇6——多表查询

    Java数据库篇6--多表查询 1.笛卡尔积 交叉连接查询 设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), ...

  8. Java数据库篇4——表的约束

    Java数据库篇4--表的约束 1.非空约束 字段不允许为空 #创建表的时候添加 Create table 表名(列1 数据类型 not null,列2 数据类型,列3 数据类型 ); #创建表以后添 ...

  9. Java数据库篇2——数据库基本操作

    Java数据库篇2--数据库基本操作 1.启动.停止.服务 net start mysql net stop mysql 2.登入登出 本地 Mysql -u用户名 -p密码Mysql -u用户名 - ...

最新文章

  1. 情感识别难?图神经网络创新方法大幅提高性能
  2. 《架构师(“拥抱2015”特刊)》发布
  3. 免费下载|《云原生时代下的App开发》走进阿里云一站式应用研发平台EMAS
  4. java校验文件格式_Java 判断文件是否为文本格式,并获取文件编码格式,读取内容!...
  5. AI+游戏:高效利用样本的强化学习 | 腾讯AI Lab学术论坛演讲
  6. win8.1重装系统计算机管理打不开,Windows8计算机打不开192.168.0.1怎么办
  7. centos7 挂载磁盘_Linux磁盘管理之LVM
  8. php ajax mysql视频教学视频_PHP入门教程之AJAX 与 MySQL
  9. 搜索留痕技术工具-免费搜索留痕外链工具发布
  10. unity3d摄像机的透视有些夸张怎么办?
  11. 控制中的各种函数MATLAB仿真
  12. linkboy+ESP32创意DIY时钟
  13. 【上海房价预测】代码实现——利用BP神经网络进行上海二手房价预测
  14. 【Mac环境】mac在线安装brew时返回443链接被拒绝或超时错误解决方案
  15. Ajax与JavaWeb分页
  16. redis实现坐标附近查询
  17. 使用PHPstudy在Windows服务器下部署PHP系统
  18. android模拟器发送短信
  19. Android 语音播报之项目实战
  20. 总结一下自己常用的软件和网站

热门文章

  1. [转载] Python3十大经典错误及解决办法
  2. 数组重复次数最多的元素递归_使用递归计算链接列表中元素的出现次数
  3. MS的完整形式是什么?
  4. ctype函数_PHP ctype_xdigit()函数与示例
  5. Java GregorianCalendar hashCode()方法与示例
  6. 2019聊大考研计算机调剂,2019年聊城大学硕士研究生预调剂工作说明
  7. mysql的安装和基本命令_MySQL安装以及简单命令用法
  8. ubutun 更换网络源_Ubuntu 更换源
  9. kailinux mysql提权_linux下mysql提权
  10. python编码示例_python urllib中的编码处理示例