数据库(六)之数据查询和管理

查询语句:

  简单的select语句

select [all|distinct] select_list
    [into new_table]
    from table_source
    [where search_conditions]
    [group by group_by_expression]
    [having search_conditions]
    [order by order_expression [asc | desc]]

  例子:

select * from 学生信息

    select 姓名, 性别, 家庭住址 from 学生信息

    select 12 * 14

    select 12 * 14 as 计算结果

    select 姓名 as 学生姓名, 性别 from 学生信息

    select 民族 from 学生信息

    select distinct 民族 from 学生信息

  设置查询条件

select * from 学生信息 where 姓名 = ‘张苗苗‘

    select * from 学生信息 where 民族 = ‘汉族‘ and 性别 = ‘女‘

    select * from 学生信息 where 民族 = ‘汉族‘ or 性别 = ‘女‘

    select * from 学生信息 where 民族 = ‘汉族‘ or 性别 = ‘男‘

    select * from 学生信息 where 民族 = ‘汉族‘ and 性别 = ‘女‘ and 家庭住址 = ‘河南商丘‘

    select * from 学生信息 where 家庭住址 like ‘河南%‘

排序:

select *
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘1‘
    order by 分数 asc

    select *
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘1‘
    order by 分数 desc

    select *
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘1‘
    order by 分数 desc, 学生编号

    select *
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘1‘
    order by 分数 desc,学生编号 desc

使用函数

select *
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘2‘

    select MAX(分数)
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘2‘

    select MIN(分数)
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘2‘

    select avg(分数)
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘2‘

    select sum(分数)
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘2‘

    select top 3 分数
    from 成绩信息
    where 考试编号 = ‘0801‘ and 课程编号 = ‘2‘
    order by 分数 desc

分组

select 课程编号,avg(分数)
    from 成绩信息
    where 考试编号 = ‘0801‘
    group by 课程编号

    select 课程编号,avg(分数)
    from 成绩信息
    where 考试编号 = ‘0801‘
    group by rollup (课程编号)

    select 课程编号,avg(分数)
    from 成绩信息
    where 考试编号 = ‘0801‘
    group by cube (课程编号)

    select 考试编号,课程编号,avg(分数)
    from 成绩信息
    group by rollup (考试编号,课程编号)

    对不同考试的考试编号分别求平均分,然后总的平均分

    select 考试编号,课程编号,avg(分数)
    from 成绩信息
    group by cube (考试编号,课程编号)

    --对不同课程求平均分,对不同考试求平均分,最后求总的平均分。

having 子句

select 考试编号,课程编号,avg(分数)
    from 成绩信息
    group by 考试编号,课程编号
    having avg(分数) >= 90
    order by 考试编号

插入数据:

  insert 语法:

insert 语法:
    insert [into] table_or_view [(column_list)]
    values data_values
  • table_or_view 用于指定向表中添加数据的表或视图名称。
  • column_list 用于指定该数据表的列名,可以指定一列或多列,所有这些列都必须放在圆括号()内。如果要指定多个列时,各列必须用逗号隔开。如果指定了列名,那么在目标数据表中所有未被指定的列必须支持空值或默认值。
  • data_values 用于指定向数据表中插入的数据值。这些值也必须放在圆括号内,如果指定的值为多个时,这些值之间也必须用逗号隔开。如果指定了列名,那么该数据必须与各列一一对应。如果没有列名,该数据必须与数据表中各列的顺序一一对应。
insert into 学生信息
    values(‘2111123456‘,‘李明‘,‘男‘,‘1996-1-29‘,‘汉族‘,‘20180314‘)

    insert into 学生信息(学号,姓名,性别,家庭住址)
    values(‘201803115‘, ‘李雷‘, ‘男‘, ‘湖北武汉‘)

  insert ... select 语句语法:

--将一个表得内容插入另一个表
    insert table_name[column_list]
    select column_list
    from table_list
    where search_conditions

  例子:

insert 学生信息1
        select * from 学生信息

        insert 学生信息1
        select * from 学生信息 where 家庭住址 like ‘武汉%‘

select ... into语句:

select <select_list>
    into new_table
    from {<table_source>[,...n]}
    where <search_condition>

  例子:

select *
        into #student
        from 学生信息
        where 性别 = ‘男‘

        select * from #student

修改数据

  update语句语法:

update [top] {table_name | view_name}
        set
        {column_name = {expression | default | null}@varible = expression}[...,n]
        where {search_conditions}

  例子:

select * from 学生信息1
        update 学生信息 set 姓名 = ‘李俊‘
        where 学号 = ‘20181112‘

        select * from 学生信息1
        update 学生信息 set 姓名 = ‘李军‘,出生日期 = ‘1996-12-10‘
        where 学号 = ‘20181113‘ 

  在update语句使用from子句:

select * from studentInfo
        update studentInfo set s_sex = b.性别, s_address = b.家庭住址, s_id = b.学号
        from studentInfo a join 学生信息 b on a.s_name = b.姓名
        where b.性别 = ‘女‘

删除数据

  delete语句语法:

delete from <table_name>
        [where <search condition>]

  top关键字和top表达式:

[
        top (expression) [percent]
        [with ties]
        ]

  例子:

select top 10 * from 成绩信息

        select top 10 percent * from 成绩信息

        declare @i int
        set @i = 20
        select top (@i) percent * from 成绩信息

        declare @i int
        set @i = 20
        select top (@i) 成绩信息 order by 分数

        declare @i int
        set @i = 6
        select top (@i) with ties * from 成绩信息 order by 分数

compute子句:对已经查询出得结果产生一个合计

  语法格式:

    [
        compute
        { {avg|count|max|min|stdev|stdevp|var|varp|sum}
        (expression)}[,...n]
        [by expression [,...n]]
        ]

  例子:

select * from 成绩信息 where 课程编号 = 2
        compute sum(分数),avg(分数), max(分数), min(分数)

        select * from 成绩信息 where 课程编号 = 2 order by 考试编号
        compute sum(分数), avg(分数), max(分数), min(分数) by 考试编号

在where子句使用运算符

select * from 成绩信息 where 考试编号 = ‘0802‘ and 课程编号 = 1

        select * from 成绩信息 where 考试编号 = ‘0802‘ and (分数 between 80 and 90)

        select * from 成绩信息 where 考试编号 = ‘0802‘ and (分数 % 5 = 0)

        select * from 成绩信息 where 考试编号 = ‘0802‘ and 分数 in (85, 90, 87, 86)

        select * from 成绩信息 where 考试编号 = ‘0802‘ and 分数 not in (85, 90, 87, 86)

原文地址:https://www.cnblogs.com/ZGreMount/p/8600339.html

时间: 2024-10-19 23:35:06

数据库(六)之数据查询和管理的相关文章

数据查询和管理

对数据表的插入.更新.删除操作    --数据查询和管理--取消重复元组distinctselect distinct 民族 from 学生信息go--查询前几列数据select top 6 * from 学生信息select top 6 学号,姓名,民族 from 学生信息go--查询计算列select 教师编号 as 'sno',姓名 as 'sname',2015-年龄 as 'sbrisday' from 教师信息go--使用别名查询,在列表中的名称,可使用的方法:空格,as,=,别名用

数据库 简单的数据查询

简单的数据查询 1.查询的基本结构: select[distinct] */列名 from table 表名 [where condition] [order by] 2.投影的操作:指定查询结果中能够显示的列 语法:select 列名列表 from 表名; (1):选择多列查询,列名之间用“,”隔开 (2):单列时,只单个. (3):若选择所有列,则用*代替. 3.表名前缀:本列无多大意义,但在复杂的多表查询的情况下,很有用. 语法:select 列名表名 from 表名; 4.列别名(as)

ORACLE和SYBASE数据库中实现数据查询条数限制的SQL语句实现

一.概述 对于某些需要通过数据库与大量数据打交道的软件来说,处理性能相当的重要.为了保证软件能够将所有数据处理完而不至于崩溃,分批处理的思想应运而生.分批处理的具体做法是编写SQL语句,每次返回规定条数的数据给软件处理,待这一批数据处理完之后,再接着处理下一批. 本文通过对具体的数据库表(tb_employeeinfo)的操作过程,展示了ORACLE和SYBASE数据库中分批处理SQL语句的编写方法. 二.ORACLE数据库中的处理 首先,建立tb_employeeinfo表,其定义如下: be

用python操作mysql数据库(之数据查询结果返回字典类型)

#!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb #建立连接 conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1qaz#EDC',db='test_db') cur = conn.cursor(MySQLdb.cursors.DictCursor) #建立游标时,加上"MySQLdb.cursors.DictCursor",让数据查询结果返回字

oracle数据库使用之数据查询入门

1.在查询过程中使用算术表达式对数据进行运算 student表结构例如以下: 最后一项salary表示每一个人的月薪,我如今想查询每一个人的年薪: 2.使用nvl函数处理null值.向表中插入一条数据,该数据的salary项为null: 不使用nvl函数: 使用nvl函数: 3.将查询结果的字符串连接起来: 这里我们使用oracle安装好之后scott用户自带的emp表: 4.查找1982年1月23日后入职的员工,下面几种方式都能够.注意日期的不同写法: 5.查询工资大于等于2000而且小于等于

Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据

原文:Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据 XQuery 是一个浏览/返回XML实例的标准语言. 它比老的只能简单处理节点的XPath表达式更丰富. 你可以同XPath一样使用.或是遍历所有节点,塑造XML实例的返回等. 作为一个查询语言, 你需要一个查询处理引擎. SQL Server 数据库通过XML数据类型方法的T-SQL 语句来处理XQuery. SQL Server 并不支持所有的X

oracle 数据库导出 表空间查询 与 权限管理 整理

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>导入导出操作 oralce imp help=y; 查看命令使

数据库系列学习(二)-数据表的创建和管理

1.数据类型 A:整数类型 bit,int,smallint,tinyint [与操作系统位数有关] B:数值类型 decimal,numeric,money,smallmoney,float,real [可存小数] C:字符相关类型 char,varchar,text,nchar,nvarchar,ntext D:日期时间类型 datetime(精确到0.01秒),smalldatetime(精确到分钟),timestamp E:二进制类型 image [经图片,视频转为二进制,保存到数据库]

数据库基本操作(二)--数据查询

//数据查询 create database JXGL; //创建数据库 use JXGL;//使用数据库 create table S( Sno char(10) not null unique, Sname char(20) not null unique, Ssex char(2), Sage int, Sdept char(20)); create table C( Cno char(2) not  null primary key (Cno), Cname char(20), Teac