暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle、MySQL最常用的SQL语句(DDL、DQL、DML)

769

  本篇文章介绍平时自己使用次数非常多的SQL查询语句,总结起来方便以后复习查看

1. DDL(Data Definition Language)数据定义语言

1)操作数据库

-- 创建库

create database db1;

-- 创建库是否存在,不存在则创建

create database if not exists db1;

-- 查看所有数据库

show databases;

-- 查看某个数据库的定义信息

show create database db1;

-- 修改数据库字符信息

alter database db1 character set utf8;

-- 删除数据库

drop database db1;

2)操作表

--创建表

create table student(

    id int,

    name varchar(32),

    age int ,

    score double(4,1),

    birthday date,

    insert_time timestamp

);

 

-- 查看表结构

desc 表名;

-- 查看创建表的SQL语句

show create table 表名;

-- 修改表名

alter table 表名 rename to 新的表名;

-- 添加一列

alter table 表名 add 列名 数据类型;

-- 删除列

alter table 表名 drop 列名;

-- 删除表

drop table 表名;

drop table  if exists 表名 ;

2. DML(Data Manipulation Language)数据操作语言

1)插入insert into

-- 写全所有列名

insert into 表名(列名1,列名2,...列名n) values(1,2,...n);

-- 不写列名(所有列全部添加)

insert into 表名 values(1,2,...n);

-- 插入部分数据

insert into 表名(列名1,列名2) values(1,2);

2)删除delete

-- 删除表中数据

delete from 表名 where 列名  = ;

-- 删除表中所有数据

delete from 表名;

-- 删除表中所有数据(高效 先删除表,然后再创建一张一样的表。)

truncate table 表名;

 

3)修改update

-- 不带条件的修改(会修改所有行)

update 表名 set 列名 = ;

-- 带条件的修改

updata 表名 set 列名 = where 列名=;

4)选择select

select * from table1 where 范围

1.  DQL(Data Query Language)数据查询语言

1)基础关键字
 BETWEEN...AND (在什么之间)和  IN( 集合)

-- 查询年龄大于等于20 小于等于30

SELECT * FROM student WHERE age >= 20 &&  age <=30;

SELECT * FROM student WHERE age >= 20 AND  age <=30;

SELECT * FROM student WHERE age BETWEEN 20 AND 30;

-- 查询年龄22岁,18岁,25岁的信息

SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25

SELECT * FROM student WHERE age IN (22,18,25);

 

 is null(不为null)  like(模糊查询)、distinct(去除重复值)

-- 查询英语成绩不为null

SELECT * FROM student WHERE english  IS NOT NULL;

 _:单个任意字符

 %:多个任意字符

-- 查询姓马的有哪些?like

SELECT * FROM student WHERE NAME LIKE '%';

-- 查询姓名第二个字是化的人

SELECT * FROM student WHERE NAME LIKE "_%";

-- 查询姓名是3个字的人

SELECT * FROM student WHERE NAME LIKE '___';

-- 查询姓名中包含德的人

SELECT * FROM student WHERE NAME LIKE '%%';

 

-- 关键词 DISTINCT 用于返回唯一不同的值。

-- 语法:SELECT DISTINCT 列名称 FROM 表名称

SELECT DISTINCT NAME FROM  student ;

 

2排序查询 order by

-- 例子

SELECT * FROM person ORDER BY math; --默认升序

SELECT * FROM person ORDER BY math desc; --降序

(3)聚合函数

将一列数据作为一个整体,进行纵向的计算。

--总数:

  select count as totalcount from table1

 

--求和:

select sum(field1) as sumvalue from table1

 

--平均:      

 select avg(field1) as avgvalue from table1

 

 --最大:       

select max(field1) as maxvalue from table1

 

--最小:

select min(field1) as minvalue from table1        

4分组查询 group by

-- 按照性别分组。分别查询男、女同学的平均分

SELECT sex , AVG(math) FROM student GROUP BY sex;

 

-- 按照性别分组。分别查询男、女同学的平均分,人数

 SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;

 

--  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组

SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

 

 --  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人

SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;

SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

5分页查询limit

语法:limit 开始的索引,每页查询的条数; 

公式:开始的索引 = (当前的页码 - 1* 每页显示的条数

-- 每页显示3条记录

 

SELECT * FROM student LIMIT 0,3; -- 1

 

SELECT * FROM student LIMIT 3,3; -- 2

 

SELECT * FROM student LIMIT 6,3; -- 3

 

6外连接查询
 左外连接 -- 查询的是左表所有数据以及其交集部分

-- 语法:select 字段列表 from 1 left [outer] join 2 on 条件;

-- 例子:

-- 查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称

SELECT  t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;

 外连接 -- 查询的是表所有数据以及其交集部分

-- 语法:

select 字段列表 from 1 right [outer] join 2 on 条件;

-- 例子:

SELECT  * FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;

7子查询:查询中嵌套查询

-- 查询工资最高的员工信息

-- 1 查询最高的工资是多少 9000

SELECT MAX(salary) FROM emp;

 

-- 2 查询员工信息,并且工资等于9000

SELECT * FROM emp WHERE emp.`salary` = 9000;

 

 -- 一条sql就完成这个操作。这就是子查询

SELECT * FROM emp WHERE emp.`salary` = (SELECT MAX(salary) FROM emp);

文章转载自琢磨先生DataBase,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论