数据库基础

SQL语句分为以下三种类型:

  1. DML: Data Manipulation Language数据操纵语言
  2. DDL: Data Definition Language数据定义语言
  3. DCL: Data Control Language数据控制语言

DML

DML用于查询与修改数据记录,包括如下SQL语句:

  1. INSERT:添加数据到数据库中
  2. UPDATE:修改数据库中的数据;
  3. DELETE:删除数据库中的数据
  4. SELECT:选择(查询)数据

SELECT是SQL语言的基础,最为重要。

查询表的所有内容

DDL

DDL用于定义数据库的结构,比如创建、修改或删除数据库对象,包括如下SQL语句:

  1. CREATE TABLE: 创建数据库表
  2. ALTER TABLE: 更改表结构、添加、删除、修改列长度
  3. DROP TABLE: 删除表
  4. CREATE INDEX:在表上建立索引
  5. DROP INDEX:删除索引

DCL

DCL用来控制数据库的访问,包括如下SQL语句:

  1. GRANT:授予访问权限
  2. REVOKE:撤销访问权限
  3. COMMIT:提交事务处理
  4. ROLLBACK:事务处理回退
  5. SAVEPOINT:设置保存点
  6. LOCK:对数据库的特定部分进行锁定

数据库

1.查看数据库

show databases;

2.新建数据库oo

create database oo;

3.使用数据库oo

use oo;

4.创建表

在数据库oo中创建txt表

create table txt(id int(8),name varchar(20),city varchar(20),score int(5));

5.插入数据

在表txt中增加数据(在txt中插入下面五行数据)

Insert into txt(id,name,city,score) values (1,"xiaowang","henan",80);
Insert into txt(id,name,city,score) values (2,'xianliu','wuhan',81);
Insert into txt(id,name,city,score) values (3,'xiaozheng','henan',83);
Insert into txt(id,name,city,score) values (4,'xiaowu','beijing',84);
Insert into txt(id,name,city,score) values (5,'xiaojing','henan',85);

6.查询表

插入成功后查询表txt

select * from txt;

1.查询表的某一字段

查询表中的name 和 score字段

select name,score from txt;

查询 name 为小郑的学生的分数

select score from txt where name="xiaowang";

2.排序 order by

升序 ASC

降序DESC

将txt表中的分数按照降序排列

select * from txt order by score desc;

显示按照某一列的升序结果

格式:select 列名1,列名2,列名3... fron 表名 order by M(M为数字,必须小于或等于n(数据库查询的字段数才会正常显示,否则数据库将报错)
select id,name,city,score from txt order by 1;

select id,name,city,score from txt order by 3;

M不满足条件的话会报错

select id,name,city,score from txt order by 5;

3.limit的用法

基本格式:limit M N   //表示从第M+1条数据开始,顺序往下查询N条数据
limit M               //表示查询前M条数据    
查询表中前2条数据:
​​​​​​​select * from txt limit 0,2;

从第2条数据起,往下查询3条数据的id、name和score字段

select id,name,score from txt limit 1,3;

7.删除表

在txt中删除一条语句

如删除id=1的数据,其命令为

delete from txt where id=1;

8.修改表

修改txt中的1条数据

如:修改id=2的数据,将其score设置为80

update txt set score=80 where id=2;

 4.数据库去重

mysql

原表:

去掉 city 重复的数据,根据 city 分组,查找出id最小的,然后再查找 id 不包含刚才查出来的。这样就查询出了所有的重复数据(留下的数据是id最小的那一行)

delete from txt where id NOT IN (select tt.id from (select min(c.id) as id from txt c group by name) tt);

去重 city 后的表:

 oracle

--方法1:
--常用的关键字:distinct
--缺点:只能应对单个字段去重,多个字段查询还是会有重复数据
select distinct t.user_name, t.user_age from TEST_USER t;
--方法2:
--思路:给重复的数据建立有序下标,然后只查询下标为:1的数据即可
select f.user_name, f.user_age
  from (select t.*,
               row_number() over(partition by user_name order by user_name) as group_idx
          from TEST_USER t) f
 where f.group_idx = 1;

方法1查询结果:

方法2查询结果:

创建测试数据

create table nayi224_180824(col_1 varchar2(10), col_2 varchar2(10), col_3 varchar2(10));
​
insert into nayi224_180824
select 1, 2, 3 from dual union all
select 1, 2, 3 from dual union all
select 5, 2, 3 from dual union all
select 10, 20, 30 from dual ;
​
commit;
​
select*from nayi224_180824;

 针对指定列,查出去重后的结果集

1. distinct

select distinct t1.* from nayi224_180824 t1;

 方法局限性很大,因为它只能对全部查询的列做去重。如果我想对col_2,col3去重,那我的结果集中就只能有col_2,col_3列,而不能有col_1列。

select distinct t1.col_2, col_3 from nayi224_180824 t1

 2. row_number()

去掉t1.col_2, 和 t1.col_3内容相同的部分

select *
  from (select t1.*,
               row_number() over(partition by t1.col_2, t1.col_3 order by 1) rn
          from nayi224_180824 t1) t1
 where t1.rn = 1
;

原文章:MySQL数据库基础命令_冰 雪的博客-CSDN博客_数据库命令

oracle去除重复数据常用的方法_nayi_224的博客-CSDN博客_oracle删除重复数据

oracle 数据去重方法_明思万新的博客-CSDN博客_oracle去重

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值