高级查询(一)

     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子查询相反

原文地址:https://www.cnblogs.com/yangshuwen/p/12804482.html