• SQL UNION 和 UNION ALL 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集,
UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

select E_ID from  Employees_China union all  select  E_ID  from  Employees_USA 

  • SQL select into语句 从一个表中选取数据,插入另一个表中
常用于创建表的备份或用于记录进行存档
select LastName,FirstName into  Persons_backup from Persons
select  LastName into Persons_backup from Persons where  City = 'Paris'
select Persons.LastName ,Orders.OrderNo into Persons_Order_Backup from  Persons inner join Orders on  Persons.Id_P= Orders.Id_P

  • creat database 语句

create database OldPersons

creat table  语句

create table OldPerson( name varchar(255), sexy char ,age int,City varchar(255),... )


SQL最基础的语法(部分)

SQL  约束(constraints)

not null :约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录

create table OldPerson( name varchar(255) not null, sexy char ,age int not null,City varchar(255))

unique 约束:UNIQUE 和 PRIMARY KEY(拥有自动定义的 UNIQUE 约束) 约束均为列或列集合提供了唯一性的保证。

请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

create table OldPerson( name varchar(255) not null unique, sexy char ,age int not null,City varchar(255))

【Mysql】create table OldPerson( name varchar(255) , age int not null,City varchar(255),unique(name))

需要命名unique约束,以及为多个列定义unique 约束:

create table OldPerson( name varchar(255) , age int not null,City varchar(255),constraint Person_id unique (name ,age))【管了三列】

如果表已经创建 使用 alter

alter table  Persons   add unique (Id_P)

alter  table  Persons  add constraint Person_ID  unique (Id_P,LastName)

撤销unique 约束

【Mysql】 alter table Persons drop index Person_ID

【SQL server/Oracle / MS  Access 】alter table Persons drop constraint Person_ID 

SQL primary key约束:

主键约束,唯一表示数据库table 中的每条记录,必须包含唯一的值;主键列不能包含 null 值; 每个表都要有一个主键且唯一一个主键(主键不一定只有一列 可以有多列共同构成主键)。

【Mysql】create table OldPerson(  Id_P int not null, LastName varchar(255) , age int not null,City varchar(255),primary key(Id_P))

针对多列定义为主键约束的语法 【constraint Person_ID primary key (Id_P,Lastname)

SQL server/Oracle / MS  Access 

create table OldPerson(  Id_P int not null primary key, name varchar(255) , age int not null,City varchar(255))

【注意,如果table已经存在,此时去添加主键,一定要把主建的列生命为不包含 null值(在表首次创建时??)】

撤销 primary key约束

【Mysql】alter table Persons drop  primary  key 

SQL server/Oracle / MS  Access 】 alter table Persons drop  constraint  person_ID

SQL forign  key 外键 约束:一个表中的forign key  指向另一个表的 primary  key 

SQL最基础的语法(部分)

Orders中的 Id_P 是forign key;Persons中的 Id_P 是 primary key;

前者约束表征表与表之间的某中约定关系,用于防止破坏表之间连接的动作,也能防止非法数据插入forign key 列

【Mysql】create table Orders(  Id_O int not null,  OrderNo int not null,Id_P int, primary key Id_O,forign key(Id_P) preferences Persons (Id_P))

SQL server/Oracle / MS  Accesscreate table Orders(Id_O int not null primary key , OrderNo int not null,Id_P int forign key  preferences Persons (Id_P))

多个 forign key时 

创建时:create table Orders(  Id_O int not null,  OrderNo int not null,Id_P int, primary key (Id_O),fconstraint Person_ID forign key(Id_P) preferences Persons (Id_P))

"Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束:alter table Orders add forign key (Id_P) references Persons(Id_P)

命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束):alter table Orders add  constraint Persons_ID forign key (Id_P) references Persons (Id_P)

撤销 forign key

【Mysql】alter table Orders drop forign key Person_ID

SQL server/Oracle / MS  Access】alter table Orders drop constraint Person_ID

之后不作说明全都是SQL server/Oracle / MS  Access

SQL check约束:限制列中的值的范围。

create table Persons(  Id_P int not null check (Id_P > 0), LastName varchar(255) not null,Address varchar(255),City varchar(255))

需要命名 CHECK 约束,以及为多个列定义 CHECK 约束

create table Persons(Id_P int not null check , LastName varchar(255) not null,Address varchar(255),constraint chec_Person check (Id_P>0 and City ='Paris')

table已存在情况下 

单列  alter table Persons add check (Id_P > 0)

多列 alter table Persons add constraint che_Person   check (Id_P>0 and City ='Paris')

撤销 check 

alter table Persons drop constraint che_Person



数据库中最简单最原始的聚合函数

     可能有人就会问了:那什么是聚合函数,又该怎么去使用它呢?

     专家解析:一般在做统计分析的时候需要使用聚合函数

    当我们需要计算时,我们首先想到的应该就是Sum() “求总和”、AVG()  ”求平均“COUNT()  “求总记录“;那比较的函数就是MAX() "最大值" 和MIN() “最小值”。

     既然我们都知道了它们的作用了,就来看看怎么运用并实现其功能的吧!!!
       01.SUM()函数

          --查询每个年级的总学时数,并按照升序排列

select gradeid as 年级编号,SUM(classhour) as 总学时数
from Subject
group by gradeid
order by 总学时数 asc


       02.AVG()函数

select AVG(studentresult) as 平均分  from  Result

            --查询每个参加考试的学员平均分

select studentno as 学号,AVG(studentresult) as 平均分
from Result
group by studentno

           --查询每门课程的平均分,并按照降序排列

select subjectid as 课程编号,AVG(studentresult) as 平均分
from Result
group by SubjectId
order by 平均分 desc

             
          --查询每年级学生的平均年龄:

select gradeid as 年级,AVG(DATEDIFF(YY,birthday,getdate())) as 平均年龄
from student
group by GradeId
SQL最基础的语法(部分)
--查询参加年级考试的学生中,平均分及格的学生记录,按照降序排列
select studentno as 学号,avg(StudentResult) as 平均分
from Result
group by StudentNo
having  avg(StudentResult)>60
order by 平均分 desc
SQL最基础的语法(部分)

       --查询考试时间为-9-9课程的及格平均分
       --课程编号   所有课程平均分

select subjectid  as 课程编号,AVG(studentresult) as 所有课程平均分
from Result
where ExamDate>='2009-9-9' and ExamDate<'2009-9-10'
group by subjectid
having AVG(StudentResult)>60

 


        03.MAX()函数

select MAX(studentresult) as 最高分 from Result


        04.MIN()函数

  select min(studentresult) as 最高分 from Result

 

        05.COUNT()函数

           COUNT():统计一张表中总共有多少条数据

例如:

          --查询每年级学时数超过的课程数

select gradeid as 年级编号,COUNT(subjectid) as 课程总数
from Subject
where ClassHour>=50
group by GradeId

         --统计至少有一次不及格的学生学号和次数。

select studentno as 学号,COUNT(studentresult) as 次数
from Result
where StudentResult<60
group by studentno

       --查询每个年级包含北京的学生总数

select gradeid as 年级,COUNT(studentno) as 总人数
from student
where Address like '%北京%'
group by GradeId

     

最后需要记住五个函数都要遵守的注意事项

       --如果语句中有group by关键字,那么select后只能跟group by后出现的列,或者是聚合函数
        --max() min() count(),sum(),avg()

    

       最后,希望我的作品能够让您满意,如有不足之处,请不要吝啬你的建议,只有这样我的作品才能令你满意;因为一次的缺漏永远会给下一次补充、让其变得更好























相关文章:

  • 2021-10-09
  • 2022-12-23
  • 2022-12-23
  • 2021-06-26
  • 2022-12-23
  • 2022-12-23
  • 2021-11-06
猜你喜欢
  • 2021-10-10
  • 2021-10-19
  • 2022-12-23
  • 2021-12-09
  • 2022-02-04
相关资源
相似解决方案