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

JavaWeb笔记之MySQL

java学途 2021-06-21
342


不点蓝字,我们哪来故事?




SQL增删改查基本操作:

    -- 增
    INSERT [INTO] 表名 [(字段列表)] VALUES (值列表)[, (值列表), ...]
    -- 如果要插入的值列表包含所有字段并且顺序一致,则可以省略字段列表。-- 可同时插入多条数据记录!REPLACE 与 INSERT 完全一样,可互换。INSERT [INTO] 表名 SET 字段名=值[, 字段名=值, ...]
    -- 查
    SELECT 字段列表 FROM 表名[ 其他子句]
    -- 可来自多个表的多个字段
    -- 其他子句可以不使用
    -- 字段列表可以用*代替,表示所有字段
    -- 删
    DELETE FROM 表名[ 删除条件子句]
    没有条件子句,则会删除全部
    -- 改
    UPDATE 表名 SET 字段名=新值[, 字段名=新值] [更新条件]

    表的约束:

    表的约束(针对于某一列,约束这一列的行为: 能否为空,是否有默认值....):

    1.非空约束:NOT NULL(NK),不允许某列的内容为空。

    2.设置列的默认值:DEFAULT。

    3.唯一约束:UNIQUE(UK),在该表中,该列的内容必须唯一。

    4.主键约束:PRIMARY KEY(PK), 非空且唯一。

    5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。(MySQL特有)

    6.外键约束:FOREIGN KEY(FK),A表中的外键列的值必须参照于B表中的某一列(B表主键)。


    非空,唯一,默认值

      create table t_student(id bigint NOT NULL UNIQUE, name varchar(20), age int DEFAULT 18);


      主键, 自增长

        create table t_student(id bigint PRIMARY KEY AUTO_INCREMENT, name varchar(20), age int DEFAULT 18);

        主键设计:

        1:单列主键,单列作为主键,建议使用。

            复合主键,使用多列充当主键,不建议。

        2:主键分为两种:

          1)自然主键:使用有业务含义的列作为主键(不推荐使用);

          2)代理主键:使用没有业务含义的列作为主键(推荐使用);

        数据操作:

        数据操作语言( ML):

        其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

        对于DDL 操作来说, sql执行结果会返回一个受影响的行数. 返回的是 0.

        对于DML 操作来说,sql执行结果会返回一个受影响的行数. 返回的真正起作用的行数.


        对于DQL 操作来说,sql执行的结果还是一个表(临时表).


        保存操作:

        插入语句:一次插入操作只插入一行.其含义是把哪些值插入到哪个表的哪些列中

          INSERT INTO table_name (column1,column2,column3...)VALUES  (value1,value2,value3...);

          1.插入完整数据记录/空值

          2.插入数据记录一部分

          要插入的列和值一定要一一对应.(时间和字符串一定要使用单引号)


          更新操作

          更新操作:含义更新哪个表设置哪些列的等于哪些值条件是什么....

            UPDATE  哪张表 SET  列名= 值[, columnName = value, ...][WHERE  condition];

            如果省略了where子句,则全表的数据都会被修改。


            删除操作

            删除操作:含义从哪个表中删除数据

              DELETE  FROM tablename [WHERE condition];

              如果省略了where子句,则全表的数据都会被删除


              简单查询(重点)

              数据查询语言(DQL):

              其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。

              基本语法:

                SELECT  {*, column [alias],...} FROM  table_name  [where...];

                说明:

                SELECT   选择查询列表,列与列之间用逗号隔开

                FROM   提供数据源(表、视图或其他的数据源)

                如果为 * 和创建表时的顺序一致。

                可以自己调整顺序,在select后边加上要查询的列名。


                消除结果中重复的数据

                语法:

                  SELECT DISTINCT 列名,... FROM  table_name;


                  数学运算:对NUMBER型数据可以使用算数操作符创建表达式(+  -  *  /)

                  对DATE型数据可以使用部分算数操作符创建表达式 (+  -)

                  运算符优先级:

                  1、乘法和除法的优先级高于加法和减法

                  2、同级运算的顺序是从左到右

                  3、表达式中使用"括号"可强行改变优先级的运算顺序


                  设置显示格式:

                  需求: 查询'xx的售价是xx'

                  一旦遇到变量和常量拼接就必须使用CONCAT函数

                  把多个值以字符串拼接的形式拼在一起,可以使用函数concat(...)

                  设置列名的别名:AS  ,AS可以省略.

                  1、改变表的名字;

                  2、用于表示计算结果的含义;

                  3、作为列的别名;

                  4、如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加引号;别名以后都不加引号.加了引号的别名导致排序失效.


                  过滤查询

                  比较运算符       含义

                  =           等于

                  >       大于

                  >=         大于或等于

                  <           小于

                  <=           小于或等于

                  !=(<>)   不等于

                  思考:使用where后面使用别名不行,总结select和where的执行顺序



                  注意:字符串和日期要用单引号扩起来.

                  要让MySQL查询区分大小写,可以:(了解)

                    SELECT * FROM table_name WHERE BINARY productName='g9x'
                    SELECT * FROM table_name WHERE BINARY productName='G9X'

                    逻辑运算符

                    逻辑运算符            含义

                    -------------------------------------------------------------

                    AND(&&)         如果组合的条件都是TRUE,返回TRUE

                    OR(||)         如果组合的条件之一是TRUE,返回TRUE

                    NOT(!)         如果下面的条件是FALSE,返回TRUE

                    运算优先级        运算符

                    -------------------------------------------

                    1            所有比较运算符

                    2            NOT

                    3            AND

                    4            OR

                    注意:括号将跨越所有优先级规则

                    分析SQL:

                      SELECT * FROM product WHERE (NOT productName='逻辑M90'  AND salePrice > 100) OR (dir_id = 2)


                      范围查询

                      使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。

                      格式:

                        SELECT <columnList> FROM table_nameWHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。

                        注:范围查询,小值和大值的关系是AND的关系.结果包含minvalue 和maxvalue两个临界值


                        集合查询

                        使用IN运算符,判断列的值是否在指定的集合中。

                        格式:

                          WHERE 列名 IN (值1,值2....);

                          注:集合查询,值与值之间是OR的关系.


                          空值查询

                          IS NULL:判断列的值是否为空。is  not  null

                          空值是特指没有值的列

                          格式:

                            WHERE  列名  IS NULL;


                            模糊查询

                            使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:

                            %通配符:可表示任意个数的任意字符。

                            _通配符:可表示一个任意字符。

                            通配符:用来实现匹配部分值得特殊字符。

                            注意: 模糊查询不是搜索引擎.


                            结果集排序

                            使用ORDER BY子句将记录排序(先有结果,再排序)

                            ASC : 升序,缺省。

                            DESC: 降序。

                            ORDER BY 子句出现在SELECT语句的最后。

                            格式:

                              SELECT <selectList>  FROM table_name WHERE 条件 ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]...;

                              注意:别名用于排序时不能加引号,否则,排序失效。


                              SELECT语句执行顺序:

                              先执行FROM--->接着执行WHERE--->再执行SELECT--->最后执行ORDER BY



                              分页查询

                              分页设计:

                              假分页(内存分页/逻辑分页):所有数据已经存在内容中,只是显示部分而已,

                                 优点:每次翻页时都从内存中取数据,翻页速度极快,简单

                                 缺点:消耗内存大,容易内存溢出

                              真分页(数据库分页/物理分页):每次翻页都去数据库查询数据

                                 优点:设计合理的情况下, 不会造成内存溢出

                                 缺点:翻页较慢,复杂

                              语法:

                                LIMIT ?, ?

                                参数1: 起始索引. 从0开始

                                参数2: 每次获取多少条数据(每一页的条数)

                                想要分页,后台必须要知道的两个条件: 当前页 currentPage, 每一页多少条数据 pageSize.

                                起始索引: startIndex ===> (当前页- 1) * 每一页的条数.

                                select * from product limit (currentPage - 1) * pageSize, pageSize;


                                聚合函数

                                什么是分组函数/聚合函数/统计函数/聚集函数:

                                分组函数作用于一组数据,并对一组数据返回一条记录。

                                COUNT:统计结果记录数  (COUNT(*))

                                MAX: 统计计算最大值

                                MIN: 统计计算最小值

                                SUM: 统计计算求和

                                AVG: 统计计算平均值

                                语法格式:组函数名(列名)


                                ————  e n d ————


                                觉得文章不错,欢迎点在看转发,长按识别二维码关注公众号 java学途,了解更多精彩。




                                点在看,让更多看见。


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

                                评论