gpt4 book ai didi

三章 高级查询

转载 作者:知者 更新时间:2024-03-13 06:48:25 25 4
gpt4 key购买 nike

1.修改表名:

**     alter table<旧表名> rename [to] <新表明>;**

   alter tabledemo01renamedemo02;

2.添加字段:

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

 alter table demo02 addpassword varchar(20) not null;

3.修改字段
      alter table 表名 change 原字段名 新字段名 数据类型 [属性];
     alter table demo02 change nameusername char(10) not null;

4.删除字段
     alter table 表名 drop 字段名;
     alter table demo02drop password;

5.添加主键约束
     alter table 表名 add constraint 主键名 primary key 表名 (字段名);

  ** 5.1  将grade表中的gradeId字段设置成主键**
     alter table grade add constraint pk_grade primary key grade (gradeId);

6.添加外键约束
   alter table 表名 add constraint 外键名 foreign key (外键字段) references 关联表名 (关联字段)

**  6.1 设置syudent表的gradid字段与grade表的gradid字段建立主外键关联**
   alter table student add constraint fk_student_grade foreign key(gradeId) references grade (gradeId);

7.插入单行数据

insert into 表名 [(字段名列表)] values (值列表);
  insert into syudent(loginPwd,studentName,gradeId,phone,bornDate)
  values('123','黄小平',1,'13956799999','1996-5-8');

 注意:   字段名是可选的,如省略则依次插入所有字段

             多个列表和多个值之间使用逗号分隔

             值列表和字段名列表一一对应

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

8.插入多行数据

 insert into 新表 (字段名列表) values(值列表1),(值列表2),……,(值列表n);

insert into subject (subjectName,classHour,gradeID)
  values('Logic Java',220,1),('HTML',160,1),('Java OOP',230,2);

                             经验:为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名!

9.将查询结果插入的新表

   insert into 新表 (字段1,字段2,字段3)
     select 字段1,字段2……
     from 原表;
      **句式1:**需要先按照所插入字段的类型,顺序,个数创建新表,才能插入数据
    create table 新表 (
    select 字段1,字段2
    from 原表 );

**   9.1 将syudent表中的studentName ,phone字段数据保存到新表phoneList中**

       **create table **phoneList**(select studentName,phonefromstudent**);
    句式2: 岁插入语句的执行而创建新表,无须先创建表;,如果新表存在,将会报错

10.更新数据记录,删除数据记录

   10.1更新数据记录
                    update 表名 set 字段1=值1,字段2=值2,…,字段n=值n [where 条件];

            10.2 修改student表中学员为10011学员的手机号码和家庭住址

                update sutudent

                 set phone='1381014' , address='............'

                 where studentNo=10011;

     10.2删除表记录

           delate from 表名 [where条件];   

         删除phoneList表中黄小平的记录

       deleta from phoneList where studentName='黄小平';

      10.3删除表中所有记录
                     truncate table 表名;                                                                 

11.DQL语句

   select <字段名列表>
     from <表名或视图>
     [where <查询条件>]
     [group by <分组的字段名>]
     [having<条件>]
     [order by <排序的字段名>[asc或deac]]

12.LIMIT字句

      select <字段名列表>
        from <表名或视图>
        [where <查询条件>]
   [group by <分组的字段名>]
[order by <排序的列名>[asc或deac]]
[limit [位置偏移量,]行数]

    12.1示例

                 

                  **   SELECT studentNo,studentName,phone,address,bornDate**

**                       FROM student**
**                       WHERE gradeId = 1**
**                       ORDER BY studentNo**
**                       LIMIT 4,4;**

13 常用的函数

     复合函数

           

    字符串函数                                                                                                                    日期函数

     

                                

    数学函数

     

14.子查询

   14.1.简单子查询语法

            SELECT … FROM 表1 WHERE 字段1 比较运算符(子查询)

    14.2.查询出身日期比李斯文打的学生        

             ** select** studentNo,studentName,sex,bormDate,address
  fromstudent
      wherebornDate>
 (selectbornDatefromstudentwherestudentName=李斯文);

  • 子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询
  • 子查询在WHERE语句中的一般用法

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

15.查询“Logic Java”课程至少一次考试刚好等于60分的学生

   分析:  

                   (1)查询subject表,获得Logie Java课程的课程编号。
                     (2)根据课程编号,查询result表中成绩是60分的学生的学号。
                     (3)根据学号,查询student表得到学生姓名。
                    因为涉及多表,所以我们可以采用表连接,在SQL Server课程中曾经学习过

方法一:采用表连接

selectstudentNamefromstudent                   (内连接(等值连接)

inner joinresultr on stu.studentNO = r.studentNo
inner joinsubjectsub ON r.subjectNo=sub.subjectNo
wherestudentResult = 60 andsubjectName='Logic Java';

方法二: 采用子查询

select 'studentName**from**student**where**studentNo= ( **swelect**studentNo**fro**mresult**inner join**Subject**on** result.subjectNo= subject.subjectNo **where**studentResult=60 **AND**subjectName` ='Logic Java'
);

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

16.IN和NOT IN子查询

   16.1in子查询 

       16.1.1查询“Logic Java”课程考试成绩为60分的学生名单         

SELECTstudentNameFROMstudent
        WHEREstudentNoIN(
        SELECTstudentNoFROMresult
        WHEREsubjectNo = (
        SELECTsubjectNoFROMsubject
        WHEREsubjectName='Logic Java'
        )ANDstudentResult = 60
        );

        in后面的子查询可以返回多条记录,用于限制学号的删选范围。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com