第三章 高级查询

Posted unique1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三章 高级查询相关的知识,希望对你有一定的参考价值。

1.修改表

    (1)修改表名

           语法:alter  table   旧表名   rename  [to]  新表名;

                     eg:alter   table  `demo` rename `demo1`;

     (2)添加字段

          语法:alter  table  表名   add  字段名   数据类型[属性];

                  eg:  alter  table `demo` add `password` varchar(50) not null;

    (3)修改字段

         语法: alter  table 表名  change  原字段名  新字段名  数据类型[属性];

              eg:alter  table `demo1`change `name` `username` char(10) not  null;

    (4)删除字段

          语法: alter table  表名   drop 字段名

               eg: alter  table  `demo` drop `password`;

2.添加主键

    语法:alter table  表名 add  constraint  主键名  primary  key 表名(主键字段);

            eg:alter  table  `student` add  constraint  pk_studentNo  primary key student  (studentNo);

3.添加外键

       语法: alter table  表名  add  constraint  外键名  foreign  key(外键字段)  references  关联表名(关联字段);

            eg:alter  table `student` add  constraint  fk_gradeId_studentNo  foreign key(gradeId)  reference  result(studentNo);

   注意:

           (1)设置自增时,必须设置主键或唯一约束

           (2)设置外键时,关联表里边必须设置主键或唯一约束来才能连接

             (3)添加外键,数据类型,存储类型必须一致

4.DML——插入单条数据

         语法: insert  into  表名(字段列表)values(值列表);

               eg:  insert  into `student`(`loginPwd`)values(‘123456‘);

     注意:

               (1)字段名时可选的,如省略必须依次按照插入所有字段

               (2)多个列表和多个值之间用逗号隔开

               (3)值列表和字段名列表一一对应

               (4)如插入的是表中部分数据,字段名列表必填

   插入多条数据

          语法: insert  into  表名(字段列表)values(值1,值2),(值1,值2);

                eg: insert  into `subject`(`gradeId`,`classHour`)values(220,1),(160,1);

5.将查询结果插入新表

        (1)事先创建且与插入数据字段相符

             insert  into  新表(字段1,字段2)

             select   字段1,字段2 from  原表;

         (2)无需事先创建

                 create  table  新表

                 select(字段1,字段2  from  原表);

6.更新数据记录

     语法:update  表名  set 字段1=值1,字段2=值2  where  条件;

          eg:update   student  set  password=‘0000‘ where  studentNo=20000;

8.删除数据记录

     (1)delete  from   表名   where   条件;    注意:有外键不能清空

 

     (2)truncate  table   表名;

9.truncate和delete区别:

      (1)truncate语句删除后将重置自增列,而delete不会

      (2)两者的表结构及其字段,约束,索引保持不变

      (3)truncate速度比delete速度快

10.DQL——查询

       语法:

                select 字段列表  from  表名

                where  条件

                group  by分组的字段名

                having  条件

                order  by 排序的字段  ASC或DESC

                LIMIT 位置偏移量,行数;

    使用LIMIT子句时,注意第一条记录的位置是0

    位置偏移量是指从第几行开始    行数:显示几行

     LIMIT 4; 只会显示几行

    LIMIT公式: limit(n-1)*a,a

   如果行数>本身,则会显示全部

11.字符串函数

    (1)concat:字符串连接

            eg:

                     SELECT CONCAT(‘My‘,‘S‘,‘QL‘);               返回:mysql

    (2)insert:替换

                eg:

                       SELECT INSERT( ‘这是SQL Server数据库‘, 3,10,‘MySQL‘);         返回:这是MySQL数据库

   (3)uuper:大写

              eg:

                        SELECT UPPER(‘MySQL‘);        返回:MYSQL

   (4)lower:小写

               eg:                      

                          SELECT LOWER(‘MySQL‘);       返回:mysql

    (5)substring:截取

                 eg:                    

                           SELECT SUBSTRING( ‘JavaMySQLOracle‘,5,5);       返回:MySQL

12.聚合函数

      (1)AVG():平均值 

    (2)Count():行数

    (3)Max():最大值

    (4)Min():最小值

    (5)Sum():和

13.时间日期函数

  (1)curdate():当前日期   

          eg:

               SELECT CURDATE();     返回:2016-08-08

  (2)curtime():当前时间

           eg:

                SELECT CURTIME();    返回:19:19:26

  (3)Now():时间和日期

              eg:

                 SELECT NOW();         返回:2016-08-08 19:19:26

   (4)Week():返回日期一年中第几周

              eg:

                SELECT WEEK(NOW());    返回:26

    (5)Year():返回date年份

                eg:

                   SELECT YEAR(NOW());     返回:2016

     (6)Hour(time):返回time小时值

                eg:

                   SELECT HOUR(NOW());         返回:9

       (7)minute():分钟值

               eg:

                    SELECT MINUTE(NOW());   返回:43

       (8)datediff(date1,date2):返回date1和date2相隔天数

                eg:

                       SELECT DATEDIFF(NOW(), ‘2008-8-8‘);      返回:2881

        (9)adddate:计算日期参考date加n天后日期       通常用于保质期

                     eg:

                      SELECT ADDDATE(NOW(),5);     返回:2016-09-02 09:37:07

14.数学函数

      (1)celt(x):返回大于或等于数值x最小整数

                  eg:

                    SELECT CEIL(2.3)    返回:3

     (2)floor(x):返回大于或等于数值x最大整数

                   eg:

                       SELECT FLOOR(2.3)    返回:2

     (3)rand():返回0~1间的随机数

                   eg:

                     SELECT RAND()       返回:0.5525468583708134

 

以上是关于第三章 高级查询的主要内容,如果未能解决你的问题,请参考以下文章

(VIP-朝夕教育)2021-06-13 .NET高级班 50-.NET5中查询方法和第三方分页扩展使用

查询执行

第七章 高级查询

Gorm 高级查询

Java高级特性编程及实战第三章课后

高级查询(嵌套查询)和(相关子查询)