温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

数据库查询语句

发布时间:2020-06-25 16:29:54 来源:网络 阅读:604 作者:张晧 栏目:数据库

插入数据

    INSERT 语法结构

        INSERT [INTO] <表名>  [列名] VALUES <值列表>

    参数解释

        [INTO]和[列名]是可选的

        <表名>是必需的

        如果省略[列名],<值列表>与表中字段的顺序保持一致

        多个列名和多个值列表用逗号分隔

    向student表中插入一行数据

        insert into student (姓名,×××号,所在班级,成绩) 

        values('王兰', '126125199008222446', 2,90)

更新数据

  UPDATE 语法结构

    UPDATE  <表名>  SET  <列名 = 更新值>  [WHERE  <更新条件>]

  参数解释

    WHERE子句是可选的,用来限制条件

    如果省略WHERE字句,表中所有数据行将被更新

  更改student表中王兰的成绩为95,备注为“勤奋好学”

    update student set 成绩='95',备注='勤奋好学‘ where 姓名='王兰'

删除数据

    DELETE 语法结构

        DELETE  FROM  <表名>  [WHERE <删除条件>]

    参数解释

        WHERE子句是可选的,用来限制删除条件

        如果省略WHERE字句,表中所有数据行将被删除

    Truncate Table语法结构

        Truncate  table <表名>

            删除表中的所有行


条件删除

记录事物日志

重置标识符列

外键约束

Delete

使用where子句按条件删除

是,数据可以恢复

可以用于含有外键约束的表

Truncate table

只能清空整个表

否,数据无法恢复

重置标识符列为0


    Truncate Table执行速度更快,用于清空大数据量表

    在执行Truncate Table前要确保数据可删除

SQL和T-SQL

    SQL(结构化查询语言)

        关系数据库的标准语言

            SQL Server、 Oracle、DB2

        非过程化语言

            不需要指定对数据的存放方法

        统一的语言

            创建、修改以及删除数据对象(数据库、表等)

    T-SQL

        SQL的加强版, 提供了类似于程序语言的基本功能

            变量说明、流程控制、功能函数

T-SQL的组成

    DML:数据操纵语言

        查询、插入、删除和修改数据

        SELECT、INSERT、UPDATE、DELETE

    DDL:数据定义语言

        建立数据库、数据库对象和定义其列

        CREATE、ALTER、DROP

    DCL:数据控制语言

        控制数据库组件的存取许可、存取权限等

        GRANT、REVOKE

SELECT语法结构

    SELECT select_list 

    [INTO new_table_name]

    FROM table_name

    [ WHERE search_conditions ]

    [GROUP BY group_by_expression] [HAVING search_conditions]

    [ORDER BY order_expression [ASC|DESC] ]

 参数解释

    SELECT子句:指定查询内容

    INTO子句:把查询结果存放到一个新表中

    FROM子句:指定查询源

    WHERE子句:查询条件

    GROUP BY子句:指定查询结果的分组条件

    HAVING子句:指定分组搜索条件,与GROUP BY子句一起使用

    ORDER BY子句:指定查询结果的排序方式

表达式

    条件表达式

        常量:表示单个指定数据值的符号

            字母、数字或符号

         列名:表中列的名称

          一元运算符:仅有一个操作数的运算符

            “+”表示正数,“-”表示负数

          二元运算符:将两个操作数组合执行操作的运算符

                 算术运算符、位运算符、逻辑运算符、比较运算符

运算符含义

=等于

>大于

<小于

>=大于或等于

<=小于或等于

<>不等于

!=不等于

BETWEEN指定值的包含范围(包含边界)。使用 And 分隔开始值和结束值

IS [Not] NULL指定是否搜索空值或非空值

LIKE模糊查询,与指定字符串进行模式匹配

IN是否在数据范围里面

条件表达式举例

PRICE > 20,表示满足大于20的PRICE值               

PRICE <> 20,表示满足不等于20的PRICE值

PRICE Between 10 And 20,表示满足大于等于10并且小于等于20的PRICE值

NAME Like '李%',表示满足NAME姓名字段里姓李的所有姓名

逻辑表达式

    用逻辑运算符将条件连接起来,运算结果是一个逻辑值

        TRUE或FALSE

                    逻辑运算符

运算符含义

AND组合两个条件,并在两个条件都为True时取值为True

OR组合两个条件,并在两个条件之一为 True 时取值为True

NOT和其他操作符一起使用,取反的操作

逻辑表达式举例

    付款方式为信用卡,并且只能是牡丹卡、金穗卡或龙卡

    付款方式 = ‘信用卡’ AND 信用卡 in (‘牡丹卡’, ‘金穗卡’, ‘龙卡’)

查询举例——查询列

    查询表中所有列

          SELECT * FROM table_name

    查询student 表中的所有学生信息

       SELECT * FROM student

    查询表中特定列

       SELECT column_name_1,column_name_2,... FROM table_name

    查询student表中姓名、所在班级、成绩列的内容

           SELECT 姓名,所在班级,成绩 FROM student

查询举例——查询特定行

    语法结构

      SELECT select_list FROM table_name WHERE search_conditions

    查询student表中2班的名叫刘婷的学生

         SELECT * FROM student WHERE 姓名='刘婷' AND 所在班级=2

    查询student表中成绩在90到100的所有学生

       SELECT * FROM student WHERE 成绩 BETWEEN 90 AND 100

    查询student表中姓刘的所有学生

       SELECT * FROM student WHERE 姓名 LIKE '刘%'

    查询student表中备注不为空的所有学生

       SELECT * FROM student WHERE 备注 is NOT NULL

查询举例——查询返回限制的行数

    语法结构

      SELECT TOP n select_list FROM table_name

    参数解释

        TOP关键字用来限制查询返回的行数,n为需要返回的行数

    查询student表中前5行的数据

         SELECT top 5 * FROM student

查询举例——改变查询结果集列名称

    语法结构

        SELECT column_name AS column_alias FROM table_name

    参数解释

        AS子句用来改变结果集列的名称

    查询student表中姓名和×××号两列数据

         SELECT 姓名 AS name,×××号 as idcard FROM student

查询举例——查询结果排序

    语法结构

       SELECT select_list FROM table_name ORDER BY column_name [ASC|DESC]

    参数解释

        ASC:升序

        DESC:降序

    查询student表中学生信息,按照成绩从高到低显示结果

      SELECT * FROM student order by 成绩 DESC

查询举例——聚合函数

    用于对一组值执行计算,并返回单个值

    如求总和、平均值、最大或最小值等

   SUM:求总和

    查询student表中所有学生的总成绩

            SELECT SUM(成绩) 总成绩 FROM student

     AVG:求平均数

    查询student表中所有学生的平均成绩

            SELECT AVG(成绩) 平均成绩 FROM student                                      MAX和MIN:返回最大最小值

    查询student表中所有学生中的最高分和最低分

           SELECT MAX(成绩) 最高分,MIN(成绩) 最低分 FROM student

   COUNT:返回非空值的计数

    查询student表中所有行数

        SELECT COUNT(*) 总行数 FROM student

查询举例——分组查询

    语法结构

      SELECT select_list FROM table_name GROUP BY column_name 

        HAVING search_conditions

    参数解释

        GROUP BY子句对查询结果进行分组

        HAVING子句指定分组搜索条件

    查询student表中每个班级的总成绩

       SELECT 所在班级,SUM(成绩) AS 总成绩 FROM student GROUP BY 所在班级

    查询student表中总成绩大于200的班级

       SELECT 所在班级,SUM(成绩) AS 总成绩 FROM student GROUP BY 所在班级 HAVING SUM(成绩)>200

WHERE子句和 HAVING子句的区别

    WHERE子句在分组之前过滤数据,条件中不能包含聚合函数

    HAVING子句在分组之后过滤数据,条件中经常包含聚合函数

查询举例——插入数据

    语法结构

       SELECT select_list INTO new_table_name FROM table_name

    参数解释

        INTO子句把一个表中的数据经过筛选插入到另一个表中

    将student表的数据插入到新表student_bak中

          SELECT * INTO student_bak FROM student

    将student表中2班的学生信息保存到表student_2中

          SELECT * INTO student_2 FROM student WHERE 所在班级=2

表的连接类型

    内连接(INNER JOIN)

        只返回两个数据集合之间匹配关系的行

    外连接

        左外连接(LEFT JOIN )

            结果集包括左表的所有行

        右外连接(RIGHT JOIN )

            结果集包括右表的所有行

        完整外连接(FULL JOIN)

            返回左表和右表中的所有行

    交叉连接

        返回左表与右表挨个连接的所有行

内连接

     方式一:在Where子句中指定连接条件

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,B.job 职业B FROM A,B WHERE A.name=B.name

    方式二:在FROM子句中使用INNER JOIN…ON子句

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,B.job 职业B FROM  A inner join B on A.name=B.name

左外连接和右外连接

    左外连接查询

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,job 职业B FROM A left join B on A.name=B.name

     右外连接查询

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,job 职业B FROM A right join B on A.name=B.name

    完整外连接查询

SELECT A.name 姓名A,A.school 学校A,B.name 姓名B,job 职业B FROM A full join B on A.name=B.name

                      

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI