マスターへのエントリからSQL Serverの(D)

今日Azhuは正式に学習する第4のステップ入力された私たちを導く
の選択に
マスター()へのエントリーからSQL Serverの
SQL Serverの(b)のマスタリング
SQL Serverの(b)は簡潔にマスタリング
導入からSQL Serverの熟練した(c)は
、ディレクトリの
クエリ処理とテーブルのデータが編集
、クエリデータ
  1.簡単なクエリを
  2.統計
  3.クエリに参加
  4.サブクエリ
  5.共同問い合わせ
II、編集データ
  1.データ
  2. [変更データ
  の削除をデータ

テーブルを編集するクエリ処理とデータ

まず、クエリデータ

1.単純な問合せ

文法

    SELECT 目标表达式 
    FROM 表名

(1)クエリ指定欄

      SELECT  姓名
      FROM 项目表

(2)カラム検索
全出力のテーブルのために*すべての列で表さ、テーブル内のすべての列:注

      SELECT *
      FROM 项目表

(3)カラムクエリを計算する
特定の特性の計算結果が一覧表示された後にチェックアウトすることができます

      SELECT 姓名,累计学分,累计学分-累计学分*0.1
      FROM 学生表

エイリアス(4)カラム
    キーワードAS 1
    2 =コネクト

       SELECT   姓名 AS name,累计学分 AS Ogpa,Ngpa=累计学分-累计学分*0.1
       FROM 学生表

注:列の別名のスペースは、単一引用符を使用します

       SELECT  姓名 AS '学生表  NAME'
       FROM 学生表

(5)は、重複するタプルを排除するためにDISTINCTキーワードを使用します

       SELECT DISTINCT 所在院系,专业
       FROM 学生表

注:この削除重複
クエリの彼の全体のリストのDISTINCTキーワード範囲

2.クエリ条件を満足するタプル
WHEREクエリを
返すクエリTRUE(真)、FALSE(偽)、UNKNOWN(不明)
の3つのテーブルをNOT、AND、OR論理演算

しません 結果
T F
F T
ザ・ ザ・
そして T F ザ・
T T F ザ・
F F F F
ザ・ ザ・ F ザ・
OR T F ザ・
T T T T
F T F ザ・
ザ・ T ザ・ ザ・

一般的なクエリ

質問 オペレータ(0) 条件(論理式)形式 リマーク
大きさの比較 =、>、<、> =、<=、!= ,,!>、!< op1op 2 バイナリ演算子
スコープを決定します [NOT] BETWEEN AND [NOT] OP2とOP 3 BETWEEN 0P1 三の操作
セットの決定 [ありませんで 1 [NOT] IN 2 バイナリ演算子
文字列一致 [好きじゃない 1 [NOT] LIKE 2 バイナリ演算子
ヌル IS [NOT] NULL IS [NOT] NULLに 単項
多重条件 NOT、AND、OR、() OP1 UPと2 NO、opi1OR 2 単項、二項演算子の残りは、括弧は、動作の優先順位を変更するために使用されているNOT

大きさの比較
杭州からのすべての学生のためのクエリを(1)

  SELECT *
  FROM 学生表
  WHERE 籍贯='杭州'

(2)160以下のクエリ累積クレジットや累積クレジットでの学生の名前

    SELECT 姓名,累计学分
    FROM 学生表
    WHERE 累计学分<160

範囲を決定
定義を

   op1 [NOT] BETWEEN op2 AND op3

意味:条件が真であるか偽であればOP1とOP2 OP3の間に存在しない
クエリ150と159の間の累積信用学生の名前と蓄積されたクレジット

   SELECT 学号,姓名
   FROM 学生表
   WHERE 累计学分  BETWEEN 150 AND 159

一連の決定
のINの構文
杭州、大同、太原の学生番号と名前からクエリ(ないし)

SELECT 学号,姓名
FROM 学生表
WHERE 籍贯 (NOT) IN (‘杭州’,‘大同’,‘太原’)

2問い合わせ学生の数は09になった後、に等しいまたは学生番号2は、最初の2つまたは学生番号と名前の間でした

SELECT 学号,姓名
FROM 学生表
WHERE SUMBSTRING (学号,6,2)IN (‘09’,SUMBSTRING(学号,2,2),SUMBSTRING(学号,4,2))

注:SUMBSTRING(S、P、C)のサブストリングcのp番目の文字列から始まる文字列sのリターンの意味
文字列のマッチング
LIKE構文
の特殊文字:

任意の長さの一致文字列(長さが0であってもよいです)
_ 任意の1文字に一致します
[C1C2 ... CN] 、C2 ... CN、一致文字C1インチ C1、C2は、... CNは、連続時間のように単純化すると、[C1-CN]
[^ C1C2 ... .CN] マッチングのC1、C2 ... CN、文字の外側に加えて。[^ C1-CN]のように簡略化C1、C2、... CN、連続時間

例の
2番目の単語でのクエリ名は「鵬」学生番号と名前です

 SELECT 学号,姓名
 FROM 学生表
 WHERE 姓名LIKE ‘_鹏%’

学生IDクエリの長​​さは7に等しくない、または6は、学生番号と名前の学生数の後に数字以外の文字が含まれています

  SELECT 学号,姓名
  FROM 学生表
  WHERE 学号NOT LINK'S[0-9][0-9][0-9][0-9][0-9][0-9]'

出会う学生IDは、最後のも1 9 3も学生番号と名前でもありません

  SELECT 学号,姓名
  FROM 学生表
  WHERE 学号 LINK '%[^139]'

普通である_ノートの最初のコース情報「DB_」へのコースの名前を見つけるには、今ESCAPEを使用

select*
from 课程表
where课名 LINK'DB\_%' ESCAPE '\'

ESCAPEは、「エスケープ文字は「フレーズ」を表しので、パターン文字列その直後に」\「文字」の後ろに「意味のワイルドカードを持って、そして通常にエスケープしません」「文字

ヌルクエリ関わる
構文はNULLではありません

お問い合わせは学生ID番号と開始のスコアがあります。

 SELECT 学号,开课号
 FROM 选课表
 WHERE  成绩 IS NOT NULL

注:=の代わりに使用されていない、いないではありません!=と<>の代わりに、

多基準クエリ
OR AND NOT OR AND NOT優先降順
このようなクエリの男の子を、トップ3は、彼またはNingbi杭州からの彼の電話番号「130」ではありませんどちらも、彼は商業を専攻し、また研究さ情報管理

    SELECT*
    FROM 学生表
    WHERE 性别=‘男’AND SUBSTRING(移动电话,1,3)=‘130’AND(籍贯=‘杭州’ OR 籍贯=‘宁波’)AND NOT 专业 IN (‘电子商务’,‘信息管理’)

3.ソートクエリ結果
構文:OEDER BY

    SELECT 学号
    FROM 选课表
    WHERE 开课号=‘000100’
    ORDER BY 成绩 DESE,成绩+10

昇順で新しい結果によれば、元の結果に応じて降順に学生番号、スコア、スコアと新しいポスト10ポイントを獲得、クエリ結果の過程で選択的開始番号「000100」を問い合わせます
注:DESE降順、Moはまだ昇順です書いていません

2.統計

1.一般的に使用される統計関数

関数の形式 機能機能
COUNT([DISTINCT] *) タプルの数を数えます
COUNT([DISTINCT] <列式>) 値の数から統計
列の合計数値式を計算します
AVG 平均計算式の数値列
MAX 列の最大の式を求めます
MIN 列式の最小化

すべてのお問い合わせの教科書合計価格と平均価格と合計金額とプレイQizhe後の平均価格

SELECT SUM(定价) AS 原总价,AVG(定价),SUM(定价*0.7)折扣总价,折扣均价=AVG(定价*0.7)
FROM (课程表)

条件を満足するタプルの数をカウントするために使用COUNT(*)は、
コース番号はコースの総数最初の2桁「02」である問い合わせます

SELECT COUNT (*)
FROM 课程表
WHERE 课号 LINK 'C02%'

2.グループの問い合わせ
(1)グループにGROUP BY句

 SELECT 开课号,COUNT (学号)
 FROM 选课表
 GROUP BY 开课号

具有相同开课号的元组被分为一组
(2)HAVING短语来帅选

3.连接查询

在列名前+<.表名>作为限定
查询学生表的基本信息及选课信息

 SELECT 学生表.*,开课号,成绩
 FROM 学生表 AS A,选课表AS B
 WHERE 学生表.学号=选课表.学号

使用JOIN ON 关键字
JOIN 用于连接两张表,ON给出两张表的连接条件
查询至少选修了学号为‘S060110’的学生所选一门课程的学生学号和姓名

  SELECT DISTINCT Z.学号, 姓名
  FROM  选课表 X  JOIN  选课表 Y  ON  Y.学号!=X.学号  AND  Y.开课号=x.开课号  
      JOIN  学生表Z  ON  Y.学号=Z.学号
  WHEREx.学号='S060110'

外连接
左外连接:将左边关系中未用到的列加到结果集把=改为"*=”,或者JOIN 改为LEFT OUTER JOIN
右外连接:将右边关系中未用到的列加到结果集把=改为"=*”,或者JOIN 改为RIGHT OUTER JOIN
全外连接:将左右关系全部连接,将JOIN改为FULL OUTER JOIN

查询学生的学号、姓名、籍贯信息及选课信息
(1)左外连接

SELECT学生表.学号, 姓名,籍贯,开课号,成绩
FROM学生表, 选课表
WHERE 学生表.学号*=选课表.学号

(2)右外连接

  SELECT学生表.学号, 姓名, 籍贯, 开课号, 成绩
  FROM  学生表  RIGHT OUTER JOIN  选课表  ON  学生表.学号=选课表.学号

(3)全外连接

SELECT 学生表.学号, 姓名, 籍贯, 开课号, 成绩
FROM 学生表 FULL  OUTER  JOIN  选课表  ON  学生表.学号=选课表.学号

4.子查询

嵌套SELECT语句叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值。
子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回。

1、单行子查询 :单行子查询是指子查询的返回结果只有一行数据。当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较。

例:

 select ename,deptno,sal 
 from emp 
 where deptno=(select deptno from dept where loc='NEW YORK'); 

2、多行子查询:多行子查询即是子查询的返回结果是多行数据。当主查询语句的条件语句中引用子查询结果时必须用多行比较符号(IN,ALL,ANY)来进行比较。
IN的含义是匹配子查询结果中的任一个值即可(“IN” 操作符,能够测试某个值是否在一个列表中),ALL则必须要符合子查询的所有值才可,ANY要符合子查询结果的任何一个值即可

注意ALL 和ANY 操作符不能单独使用,而只能与单行比较符(=、>、< 、>= 、<= 、<>)结合使用。

例:1、单行子查询

select ename,deptno,sal
from emp
where deptno=(select deptno
                                  from dept 
                                  where loc='NEW YORK');

2、多行子查询

SELECT ename,job,sal
FROM EMP
WHERE deptno in ( SELECT deptno
                                                FROM dept 
                                                WHERE dname LIKE 'A%');

3、多列子查询

 SELECT deptno,ename,job,sal
 FROM EMP
 WHERE (deptno,sal) IN (SELECT deptno,MAX(sal) FROM EMP GROUP BY deptno);

5.联合查询

UNION将多个查询结果合并起来,个结果表的列数相同
查询计算机专业和信息管理专业的学生信息。

  SELECT*
  FROM 学生表
  WHERE 专业='计算机'
   UNION
   SELECT
   FROM  学生表
   WHERE 专业='信息管理'

二、表数据编辑

插入数据
1.插入单个元组
2.插入子查询结果
3.使用SELECT …INTO语句进行数据插入
修改数据
语法

UPDATE <表名>
SET<列名>=<表达式>[,....n]

UPDATE语句用来修改指定表中满足WHERE条件的元组,用SET子句中的值取代响应的值

修改表中所有行
将学生的累计学分增加3分

 UPDATE 学生表
 SET 累计学分=累计学分+3

修改某些行
将计算机专业所有女上的籍贯改为“杭州”,累计学分+3

 UPDATE 学生表
 SET 累计学分=累计学分+3,籍贯='杭州'
 WHERE 专业='计算机'AND 性别=‘女;’

删除数据
语法

  DELETE [FROM] <目标表名>
  [FROM <表名>[,...n]]
  [WHERE <条件>]

DELETE用来删除满足WHERE条件的元组

从学生表中删除计算机专业所有女生信息

  DELETE FROM 学生表
  WHERE 专业=‘计算机’AND性别=‘女’ 

将学生表清空

    DELECT FROM 学生表
    TRUNCATE TABLE <目标表名>
 比较快不记录日志的操作,删除的数据无法恢复
发布了12 篇原创文章 · 获赞 71 · 访问量 2万+

おすすめ

転載: blog.csdn.net/m0_46315852/article/details/104878000