SQL概述及简单查询语句

Posted 遥岑.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL概述及简单查询语句相关的知识,希望对你有一定的参考价值。

SQL概述

SQL(Structured Query Language)是结构化查询语言,它是对关系型数据库的操作语言。
它可以应用到所有关系型数据库中,例如:mysql、Oracle、SQL Server等。

虽然SQL可以用在所有关系型数据库中,但很多数据库还都有标准之后的一些语法,我们可以称之为方言。例如MySQL中的LIMIT语句就是MySQL独有的方言,其它数据库都不支持。

语法要求

  • SQL语句可以单行或多行书写,以分号结尾
  • 可以用空格和缩进来来增强语句的可读性
  • 关键字不区别大小写,建议使用大写

SQL分类

DDL

DDL(Data Definition Language):数据定义语言
用来定义数据库对象:库、表、列等。

  • 创建数据库
create database 数据库名;
  • 切换数据库
use 数据库名;
  • 删除数据库
drop database 数据库名;
  • 创建表格
create table 表名(
     列名  列数据类型,
     列名  列数据类型,
     ......
)

给表添加列:alter table 表名 add (列名  数据类型);
修改列的数据类型:alter table 表名 modify 列名 新数据类型;
修改列名:alter table 表名 change 旧列名  新列名 数据类型;
删除列:alter table 表名 drop 列名;
修改表名:alter table 表名 rename to 新名称;

DML

DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)。

  • 插入语句:向表中插入记录
insert into 表名(列1,列2,...) values(值1,值2...)
  • 修改表的记录
update 表名 set 列名1 = 值1,列名2=值2,... [where 条件];
  • 删除表格记录
delete  from  表名  [where 条件];

DCL

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。

  • 创建用户
CREATE USER ‘用户名’@地址 IDENTIFIED BY '密码';
  • 查看用户权限
SHOW GRANTS FOR ‘用户名’@地址;
  • 删除用户
DROP USER ‘用户名’@地址;
  • 修改用户密码
use mysql;
alter user '用户名'@localhost identified by '新密码';

DQL

DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

语法:

select 列名  --> 要查询的列名称
from 表名      --> 要查询的表名称
where  条件      --> 行条件
group by 分组列    --> 对结果分组
having 分组条件     --> 分组后的行条件
order by 排序列   --> 对结果分组 
limit 起始行, 行数   --> 结果限定

查询记录

  • 简单查询
select 列名1,列名2,... from  表名;

若要查询所有列,可以用通配符 * 代替所有列

  • 条件查询
select 列1,列2,... from 表名 where 条件;

between…and… :在两个值之间
in(集合):在集合范围内
is NULL: 是否是空值
and: 与
or : 或
not: 取反

  • 模糊查询
模糊查询:SELECT 列 FROM 表名 WHERE 某列 Like 条件;

‘%’:表示任意0个或多个字符
‘_’:任意单个字符

  • 字段查询

去掉重复记录:DISTINCT
将Null转换为指定的值:IFNULLL(列名,值)
给列添加别名:as

注意:
如果表中两列的类型都是数值类型,可以做加运算。如果有一个字段不是数值类型,就会出错。

SELECT  *, sal+comm   FROM   emp;

若comm列有很多记录的值为NULL,任何东西与NULL相加结果还是NULL,所以结算结果可能会出现NULL。
使用把NULL转换成数值0的函数IFNULL:

SELECT  *, sal+IFNULL(comm,0)  FROM  emp;
  • 对查询结果进行排序
select 列 from 表名 [where 条件] order by 列名 asc/desc
  • 聚合函数
COUNT():统计指定列不为NULL的记录行数;
SELECT  COUNT(*)  AS  cnt  FROM  emp;

MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;


MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
  • 分组查询

group by

  • having子句:对分组结果进行筛选

where是对分组前的数据进行筛选,不满足条件的记录不进行分组
having是对分组后的数据进行筛选,必须和group by结合使用,不能单独使用

  • 分页查询
select 列 from 表名 [where 条件] limit 起始行索引,查询的行数

LIMIT:分页查询,用来限定查询结果的起始行和查询行数,是MySQL独有的

多表连接查询

内连接:内连接仅选出两张表中互相匹配的记录
外连接:既包括两张表匹配的记录,也包括不匹配的记录。

  • 左外连接:又称为左连接,查询结果中包含左边表中所有的记录,右边表中没有匹配的记录显示为NULL。
  • select 列 from 左表 left join 右表 on 条件
  • 右外连接:又称为右连接,包含右边表中所有的记录,左边表中没有匹配的记录显示为NULL
  • select 列 from 左表 right join 右表 on 条件

笛卡尔积:是两张表的并集

子查询
子查询是多表连接查询的一种实现方式。
在一个select语句的from子句或where子句中嵌套了另一个select语句。
外层的SELECT查询语句称为主查询,WHERE或FROM中的查询语句称为子查询

常用指令

  • 修改mysql的登陆密码
set password for 用户名@localhost = password('新密码'); -->5.0版本

set password for 用户名@localhost = '新密码'; -->8.0版本

alter user 'root'@'localhost' identified by '123456'; -->8.0版本
  • 操作数据库的指令
show  databases; --> 显示所有数据库

use 数据库名; -->切换数据库

show tables; -->显示数据库下的所有表格

desc 表名; -->显示表结构

select database(); -->查看当前使用的数据库

create database 数据库名; -->创建数据库

drop database 数据库名; -->删除数据库

source  sql脚本文件名;  --> 执行sql脚本文件

路径分割符:
windows系统路径分隔符是:" \\ "
Linux系统的路径分隔符是: " / "

以上是关于SQL概述及简单查询语句的主要内容,如果未能解决你的问题,请参考以下文章

SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段

Microsoft SQL Server 代码片段收集

MySQL 简介及SQL 语句

MyBatis:动态sql语句

数据库密态等值查询概述及操作