• 高级查询(一)


         1.修改表

              1.修改表名: ALTER TABLE 旧表名 RENAME[TO]  新表名;

              2.添加字段:ALTER TABLE 表名 ADD 字段名 数据类型[属性];

              3.修改字段:ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型[属性];

              4.删除字段:ALTER TABLE 表名 DROP 字段名;

         2.添加主键

              1.语法:ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);

         3.添加外键

              1.语法:ALTER TABLE 表名 ADD CONNSTRAINT 外键名

                            FOREIGN KEY(外键字段)

                             REFERENCES  关联表名(关联字段);

         4.插入单(多)条数据记录(和SQL Server相同,但是不能用select多列添加数据)

              1.INSERT INTO 表名[(字段名列表)] VALUES(值列表1),(值列表2),(值列表3);

              注意事项:1.字段名可以选择性的添加,在表名后面写入列名就可,如果省略的话默认依次插入所有字段

                                2.多个列表与多个值之间用逗号隔开

                                3.值列表和字段名列表必须一一对应

                                4.如果选择性的添加数据,则必须注意,not null必须添加值

         5.将查询结果插入新表(INSERT INTO与SQL Server相同,另外一个不同)

              1.语法:INSERT INTO 新表(字段1,字段2.....)

                            SELECT 字段1,字段2......

                            FROM 原表;

                             需要事先创建而且和插入字段的数据类型相符

              2.语法:CREATE TABLE 新表(SELECT 字段1,字段2......

                                                                 FROM 原表);

                             无需事先创建

         6.DML ——数据修改和删除(与SQL Server相同)

              1.修改语法:UPDATE 表名

                                   SET 字段1=值1,字段2=值2,.......,字段n=值n

                                    [WHERE 条件];

              2.删除语法:(1) DELETE FROM 表名 [WHERE 条件];

                                   (2)TRUNCATE TABLE 表名;

                   相同点:TRUNCATE语句和DELETE语句都会删除表内容,表结构及其字段、约束、所以保持不变

                   不同点:TRUNCATE语句删除之后重置自增列,速度比DELETE语句快

         7.DQL语句(与SQL Server语句相同)+LIMIT语句

              SELECT 字段名列表

              FROM 表名或视图

              [WHERE 查询条件]

              [GROUP BY 分组的字段名]

              [HAVING 条件]

              [ORDER BY 排序](ASC正序/DESC倒叙)

              [LIMIT[位置偏移量,]行数];

                   LIMIT:MYSQL查询中使用LIMIT字句限制结果集。   位置偏移量:开始位置 ;行数:每页显示几行

         8.聚合函数

              1.AVG()   返回某字段的平均值      2.COUNT()    返回某字段的行数

              3.MAX()   返回某字段的最大值     4.MIN()    返回某字段的最小值

              5.SUM()   返回某字段的和

         9.字符串函数

              1.CONCAT(str1,str1....strn)      字符串连接      SELECT CONCAT('MY','S','QL'); 返回:MYSQL

              2.INSERT(str,pos,len,newstr)    字符串替换     SELECT INSERT('这是SQL Server数据库',3,10,'MYSQL');返回:这是MYSQL数                                                                                                                                                                                         据库

              3.LOWER(str)      将字符串转为小写    SELECT LOWER('MYSQL');  返回:mysql

              4.UPPER(str)        将字符串转为大写    SELECT  UPPER('mysql');   返回:MYSQL

              5.SUBSTRING       字符串截取           SELECT SUBSTRING('JavaMySQLOracle',5,5);  返回:MySQL

         10.日期函数

              1.CURDATE()       获取当前日期     SELECT CURDATE();  返回:2020-4-29

              2.CURTIME()        获取当前时间      SELECT CURTIME();  返回:19:19:26

              3.NOW()              获取当前日期和时间   SELECT NOW();    返回:2020-04-29 19:19:26

              4.WEEK(date)     返回日期date为一年之中的第几周   SELECT WEEK(NOW());   返回:17

              5.YEAR(date)      返回日期date中的年份      SELECT YEAR(NOW());   返回:2020

              6.HOUR(time)      返回日期time中的小时      SELECT  HOUR(NOW());   返回:19

              7.MINUTE(time)   返回日期time中的分钟     SELECT   MINUTE(NOW()); 返回:19

              8.DATEDIFF(date1,date2)   返回日期参数date1和date2之间的天数   SELECT DATEDIFF(NOW(),2000-12-15);  返回:9563

              9.ADDDATE(date,n)    计算日期参数date加上n天之后的日期    SELECT ADDDATE(NOW(),5);   返回:2020-05-04

         11.数学函数

              1.CELT(x)     返回大于或者等于数值x的最小整数       SELECT CEIL(2.3)   返回:3

              2.FLOOR(x)  返回小于或者等于数值x的最大整数       SELECT FLOOR(2.3)   返回:2

              3.RNAD()     返回0~1间的一个随机数         SELECT RAND()    返回:0.55645453123123456(乘以相应数字则是相应数字之间                                      的随机数,可与FLOOR连用用以去除小数点)

         12.子查询

              1.子查询是一个嵌套在select、insert、update或delete语句或其他子查询中的查询

              2.子查询在where语句中的一般用法

                   子查询也就是在where后面比较时加个小括号,小括号里面的代码优先执行,就像数学运算一样

                  语法:select。。。from 表1 where 字段1 比较运算符(子查询)

              注意:将子查询和比较运算符联合使用时,必须保证子查询返回的值不能多于一个

         13.子查询替换表连接

              采用inner join多表连接

                   子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据

                    表连接更适合于查看多表的数据

         14.in子查询(in模糊查询)

                   当子查询结果返回不止一个的时候,使用运算比较符会出错,需要使用in子查询

                   常用in替代等于(=)的子查询;in后面的子查询可以返回多条记录

         15.not in子查询

                   与in子查询相反

  • 相关阅读:
    【C++17】std::optional

    【GDB 】GDB基本命令
    【二叉树系列 | 01】二叉树遍历
    【coredump | 01】coredump的阐述
    【C++ Template | 06】std::enable_if和SFINAE
    std::dclval 使用教程
    系统设计实践(03)- Instagram社交服务
    系统设计实践(02)- 文本存储服务
    系统设计实践(01)
  • 原文地址:https://www.cnblogs.com/yangshuwen/p/12804482.html
Copyright © 2020-2023  润新知