Skip to main content

Premièrement, cinq relations de base algèbre

, pauvres, descartes, choix, projection

Deuxièmement, la langue de la base de données Quatre catégories principales Langue de requête de la base de données.

DDL (langage de définition de données): Langue de définition de la base de données. Définissez un mode de relation, supprimez la relation, modifiez le mode de relation.
1, relation, attribut

DML (langage de manipulation de données):

Langue de manipulation de la base de données. Insérez le tuple, supprimez le tuple et modifiez le tuple.

2, tuple

DCL (langage de contrôle des données): Langue de contrôle de la base de données. Utilisez-vous pour autoriser ou recycler certains privilèges pour accéder à la base de données et contrôler l'heure et l'effet de la transaction de manipulation de la base de données.

3, subvention, révoquer

4, TRAVAILLE DE COMMIS / ROLLBACK

Troisième, Intégrité


Intégrité de l'entité: nécessite chaque relation (tableau) et une seule clé primaire, chaque valeur principale principale doit être unique et ne permet pas de "null" ou de répétition.

1, clé primaire


Intégrité de référence: Pour un tableau correspondant de relations permanentes, si seul l'enregistrement est mis à jour, inséré ou supprimé, si seulement premier, il sera affecter l'intégrité des données. Si un enregistrement de la table des parents est supprimé, l'enregistrement correspondant du sous-tableau n'est pas supprimé, ce qui entraîne ces enregistrements appelés enregistrements isolés. Pour les mises à jour, insérez ou supprimez l'intégrité des données de données. 2, clé étrangère



Quatrième, Fondation
1, Créer une relation


Les résultats sont les suivants:

(peut être vu, l'attribut est défini)

2, insérer dans le Yuanzu

Insérer dans les valeurs de nom de la relation

(valeurs de chaque attribut):

Le résultat est le suivant:

create table instructor2( id char(5) not null, name varchar(20) not null, dept_name varchar(20) not null, salary numeric(8,2), primary key(id)); 3, Supprimer tous les tunages

Supprimer du nom relationnel;

Supprime un tuple, mais la relation et l'attribut existe toujours.

4, Supprimer la relation

Relation de table de chute;

insert into instructor2 values(00001,'ai','math',2500、37);insert into instructor2 values(00002,'la','math',3700、89);insert into instructor2 values(00003,'bi','math',5400、45);insert into instructor2 values(00004,'ma','english',1450、23);insert into instructor2 values(00005,'ye','english',3421、34);insert into instructor2 values(00006,'er','technology',10000、65);

Supprimer la relation et une erreur dans la relation est invalide lorsque effectuer une requête SELECT.

5, Fonctionnement d'attribut


Nom de la relation Tableau Ajouter un nouveau type de données d'attribut, nouveau type de données d'attribut, ⋯;

Attribut Nom de la relation Tableau Drop Attribut, ⋯⋯;

6, Infrastructure de déclaration de requête

SELECT correspond à la projection π

à partir de 积 , ce qui correspond à

Signification: La relation avec la clause de provenance est générée par le cartésien (1) Le résultat du prédicat (condition)

spécifié dans la clause WHERE est appliqué dans (2) et l'attribut spécifié dans la clause SELECT est sortie
[

7, déduction (distinct)

alter table instructor2 add firstname varchar(20),lastname varchar(20); Pour certaines propriétés, il y a la même valeur dans certains tunnels et nous devons parfois revenir aux résultats et obtenir la bonne réponse.


Lorsque nous voulons voir le titre, plusieurs enseignants peuvent être dans le même système, et non de revenir aux résultats suivants:


Évidemment, ce n'est pas la réponse que nous voulons. Nous n'avons besoin que de savoir quel système existe, sans avoir à connaître un numéro:

8, renommer l'opération (selon)
alter table instructor2 drop firstname ,lastname;

(1) Avantages

]

Pratique: Le nom de long est constitué de noms courts, faciles à écrire des déclarations.

La même relation avec Cartesien:
distingue les attributs.

(2) Pour les attributs

(3) à la relation

[
select *(属性1,属性2,、、、)from 关系名1,关系名2,、、、where 条件1 and 条件2 and 、、、;
select id,name,salaryfrom instructor2where salary>4000;

Le résultat est le suivant:


select distinct 属性名from 关系名where 条件
Le résultat est le suivant:
9, une opération de chaîne (similaire)
SQL utilise une paire de célibataires Citations pour indiquer une chaîne, exemple "Math".

Pourcentage (%): correspondant à la première chaîne

Soulignez (_):

correspond à n'importe quel caractère





10, ordre d'affichage (commander par)

select 属性 as 属性别名from 关系名where 条件 par défaut Ascendant:

ASC

décroissant: select 属性from 关系名 as 关系别名where 条件 Desc
select name as instructor_name,salaryfrom instructor2where salary>3500;


11, entre ⋯ et ⋯


La valeur d'attribut est dans une plage
select i1、id,i2、namefrom instructor2 as i1,instructor2 as i2where i1、id=i2、id and i2、salary>3500;

Le résultat est le suivant:


12, groupe par





. Fonction d'agrégation: select 属性from 关系名where 属性 like '字符形式'; Valeur moyenne (AVG), minimum (min), maximum (max), somme (somme), compte.

L'attribut qui apparaît dans l'instruction SELECT mais n'a pas été agrégé ne peut être qu'un attribut qui apparaît dans le groupe par clause.

select *from instructor2where salary like '%0_、%';

Le résultat est le suivant:


13. Avoir une clause ( Utilisation de groupe par)

En cas de groupe, les propriétés qui apparaissent dans la sélection et les clauses sont limitées. Toute apparence dans la clause ayant, mais l'attribut qui n'est pas agrégé doit apparaître dans le groupe par clause.

select 属性from 关系名where 条件order by 属性 升序/降序; Le résultat est le suivant:
select *from instructor2order by salary desc;

14, qualification de l'élément de collecte


Si l'attache est une collection de membres
non in:

est que le groupe d'attache n'est pas un élément de collecte dans et non dans les opérateurs, est utilisé pour énumérer la collecte .


select *from instructor2where 属性名 between 、、、 and 、、、 ;
select *from instructor2where salary between 3000 and 6000;

REMARQUE: Les propriétés correspondantes de la sélection de l'intérieur de l'intérieur La déclaration de requête doit être la même que celle de la déclaration de requête extérieure.


Cela équivaut à deux pour les cycles


Les résultats sont les suivants:

15, une comparaison de la collection

& GT; certains:
Au moins un certain select dept_name,id,avg(salary)from instructor2group by dept_name; & gt; tout:

est plus grand que tout.

& gt; certains, & lt; certains, & gt; = Certains, & lt; = & gt; Quelques

& gt; tous, & lt; tout, & gt; = tout , & lt; tous, & lt; tous les = Certains sont équivalents à, & lt; & gt; certains n'étaient pas équivalent pas dans. & lt; & gt; tous équivalents à ne pas entrer, = toute inégalité est dans.


Le résultat est le suivant:




select dept_name,avg(salary) as avg_salaryfrom instructor2group by dept_namehaving avg(salary)>3000



Error requête Exemple d'erreur:
Requête la marge inférieure ou égale à 3000 Nom de l'enseignant
select *from instructor2where name not in('ai','ye','er');


Analyse: Les requêtes de la couche interne, tant qu'une tuple de salaire & gt; 3000 et nom et la valeur de nom de requête externe ne sont pas égales à
select *from instructor2where name in (select name from instructor2 where salary>3000 );

Le résultat est le suivant:

Analyse: Le nom de tous les tunples de salaire & gt; 3000 dans la requête de la couche interne peut être égal à la Valeur du nom de la requête externe.

16, test de la relation vide (existe)
Il existe d'exister pour être relatif à un certain tuple, de sorte qu'il est sélectionné *.
Query dans le semestre d'automne 2009 et le semestre de printemps de 2010Tous les cours en même temps


17, Supprimer certains tunages

Supprimer tous les utilles liés à "Math" enseignant de la relation d'instructeur

18 . Supprimer tous les tunages

select *from instructor2where name =some(select name from instructor2 where salary>3000 );
19, Cas spécial de suppression

Relevé de couche interne Il n'y a qu'un tuple.Supprimer la masse salariale inférieure au salaire moyen de l'université.


Les résultats sont les suivants
select *from instructor2where name <>all(select name from instructor2 where salary>3000 );
20, insérez une partie de la méta

Insérer dans la relation valeurs de nom (⋯); un groupe ne peut être inséré que à la fois. Insertion dans la relation Relation Selec La requête peut insérer plusieurs bandes en une fois.


21, Mise à jour du tuple

Seulement pour les enseignants ayant des salaires de 7 000 yuans.select *from instructor2where name <>some(select name from instructor2 where salary>3000 );

L'enseignant avec un faible salaire a augmenté de 5%, plus de 7 000 a augmenté de 3%.

Sujets

Catégories