SQL基础知识:DDL、DML、DQL

DDL:数据定义语言

对数据库和数据表的管理

数据库

1、创建

create database [if not exists] databasename;

2、列举

show databases;

3、查看当前所在数据库

select database();

4、切换

use databasename;

5、删除

drop database [if exists] databasename;

数据表

注意:需要先指定数据库,如果没指定数据需要使用[databasename.]注明

1、创建

create table [if not exists] [databasename.]tablename(
  字段1 数据类型1,
  字段2 数据类型2,
  ···
  字段N 数据类型N
  );

数据类型

数值–整数用int,非整数用double/float;
字符–varchar
日期–date
日期时间–datetime

2、列举

show table;

3、描述

desc [databasename.]tablename;

4、删除

drop table [if exists] [databasename.]tablename;

5、清空

truncate [databasename.]tablename;

DML:数据操作语言

管理数据表的数据

插入:insert

insert into tablename(colname1,colname2···) values(value1,value2,···)

更新:update

update tablename set colname1=newvalue [and colname2=newvalue2 and ···] [where 更新条件]

不加条件为全列更新

删除:delete

delete from tablename [where 删除条件]

不加条件为全表清空

DQL:数据查询语言

对表中数据查询和统计分析

基本查询

select 1 from 2 where 3 group by 4 having 5 order by 6 limit 7

执行顺序:from、[join on ]、where、group by、having、select、order by 、limit

  1. 决定查询的结果有哪些列,给定哪些列、结果就会显示这些列
  2. 表示查询哪张表,给定表名字
  3. 条件查询,只有满足条件的数据才会返回
  4. 实现分组
  5. 分组后的条件过滤
  6. 排序。默认ASC升序,DESC降序
  7. 分页输出。limit M,N 表示从M+1开始显示,显示N条
   显示8到10条  limit 7,3

条件查询:where

  • and/or
  • like
  • between··· and···;>、<、>=、<=、!=、=
  • in\exist
  • is null\is not null

聚合查询

count、sum、avg、max、min

分组查询:group by

having 条件过滤,搭配group by使用

排序查询:order by

desc 降序

分页查询:limit

结果保存

insert into tablename select ···

tablename需要事先创建,select里的列名称可以与tablename列名称不一样,但是数据类型跟列数必须一致

select ··· into tablename
from a表

多表查询

连接方式

内连接

笛卡尔连接:cross join

SELECT * FROM r, s;
SELECT * FROM r CROSS JOIN s;

条件连接:又叫θ-连接,笛卡尔积得到的记录中选择满足某个条件的,θ 表示条件中的 = / != / >= / <= / > / <等

SELECT r.a, r.b, s.c, s.d FROM r, s WHERE r.b <= s.c;
SELECT r.a, r.b, s.c, s.d FROM r INNER JOIN s ON r.b <= s.c;

等值连接:又叫内连接,笛卡尔积得到的记录中选择满足某个相等条件的,将条件连接中的 θ 换为 = 即可,等值连接是一种特殊的条件连接

SELECT r.a, r.b, s.c, s.d FROM r, s WHERE r.b = s.c;
SELECT r.a, r.b, s.c, s.d FROM r INNER JOIN s ON r.b = s.c;

自然连接:笛卡尔积得到的记录中选择同名的某个列相等的,将等值连接中的列限定为同名列即可,同名列只显示一次,是一种特殊的等值连接

SELECT r.a, r,b, s.c FROM r, s WHERE r.b = s.b; 
--or
SELECT r.a, r.b, s.c FROM r INNER JOIN s ON r.b = s.b;
外连接

左外连接:连接(自然 / 等值 / θ-连接)结果加上左侧表失配行连右侧表全空值行

SELECT * FROM r RIGHT JOIN s ON r.b = s.b;

右外连接:连接(自然 / 等值 / θ-连接)结果加上右侧表失配行连左侧表全空值行

SELECT * FROM r RIGHT JOIN s ON r.b = s.b;

全外连接:连接(自然 / 等值 / θ-连接)结果加上左侧表失配行连右侧表全空值行和右侧表失配行连左侧表全空值行

(SELECT * FROM r LEFT JOIN s ON r.b = s.b) 
UNION 
(SELECT * FROM r RIGHT JOIN s ON r.b = s.b);
--or
select s.*,r.* from s full join r.b = s.b

子查询

查询结果的列来自同一张表,条件来自别的表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值