1.修改表名:
** alter table<旧表名> rename [to] <新表明>;**
alter tabledemo01
renamedemo02
;
2.添加字段:
alter table 表名 add 字段名 数据类型 [属性];
alter table demo02 addpassword
varchar(20) not null;
3.修改字段
alter table 表名 change 原字段名 新字段名 数据类型 [属性];
alter table demo02 change name
username
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
,phone
fromstudent**
);
句式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
>
(selectbornDate
fromstudent
wherestudentName
=李斯文
);
注意:将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个
15.查询“Logic Java”课程至少一次考试刚好等于60分的学生
分析:
(1)查询subject表,获得Logie Java课程的课程编号。
(2)根据课程编号,查询result表中成绩是60分的学生的学号。
(3)根据学号,查询student表得到学生姓名。
因为涉及多表,所以我们可以采用表连接,在SQL Server课程中曾经学习过
方法一:采用表连接
selectstudentName
fromstudent
(内连接(等值连接)
inner joinresult
r on stu.studentNO = r.studentNo
inner joinsubject
sub ON r.subjectNo=sub.subjectNo
wherestudentResult
= 60 andsubjectName
='Logic Java';
方法二: 采用子查询
select 'studentName**from**
student**where**
studentNo= ( **swelect**
studentNo**fro**m
result**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分的学生名单
SELECTstudentName
FROMstudent
WHEREstudentNo
IN(
SELECTstudentNo
FROMresult
WHEREsubjectNo
= (
SELECTsubjectNo
FROMsubject
WHEREsubjectName
='Logic Java'
)ANDstudentResult
= 60
);
in后面的子查询可以返回多条记录,用于限制学号的删选范围。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.cnblogs.com/pindao111/p/14496995.html
内容来源于网络,如有侵权,请联系作者删除!