95992828九五至尊2

SQL必知必会

三月 15th, 2019  |  882828九五至尊手机版

一.数据库/数据表
数据库(DATABASE):存款和储蓄有集体的数额的器皿;
数据库管理种类(DBMS):数据库软件.开发者通过 DBMS 操纵 DATABASE
表(TABLE):表是一种结构化的文书,用来存款和储蓄特定类型的数据.注意表中的多寡是一定项目,不能够将消费者清单与订单清单存放于同二个表中;同一数据库中表名唯一;
列(COLUMN):表的一个字段,全部表都由COLUMN构成;每种列都有照应的多寡类型.
行(ROW):表中的数目是按行存款和储蓄,每种记录存款和储蓄在自身的行内,也足以称为数据库记录(RECOTucsonD);
主键(P哈弗IMA奥迪Q3Y
KEY):表的叁个字段(即一列),用来唯一标识表中的每一行;主键必不可少;
             充当主键的原则:
                 1.任意两行无法具有同样的主键值;
                 2.每一行都必须怀有三个主键值(且不能够为NULL);
                 3.主键列中的值不一样意修改或更新
                
4.主键值不能够重用(假如某行从表中删除,它的主键不可能加之今后的新行);   
            
补充:能够行使多列作为主键,使用多列时,上述标准必须接纳到拥有列,全体列值的组合必须唯一(单个列的值能够不唯一);
外键:

**Author:chemandy

二.SQL语句依据职能各异,分为四类:
DDL:(DATA DEFINATION
LANGUAGE),SQL语句中承受定义数据结构与数据库对象的言语,关键字有CREATE,ALTE翼虎,DROP;
DCL:数据库控制语言,用来安装可能变更数据库用户依然角色权限的言辞;
DML:(DATA MANIPULATION
LANGUAGE)数据操纵语言,达成对数据库的基本操作,如对表中数据的插入/删除和修改;
DQL:(DATA QUE昂科威Y LANGUAGE)数据查询语言,关键字SELECT;

 目录**

三.常用命令:
     CREATE DATABASE 库名    :创造数据库
     SHOW CREATE DATABASE 库名 :查看所创设库的音信
     SHOW DATABASES    :显示全数数据库;
     USE 数据库名    :进入钦定数据库;
     SELECT DATABASE():    查看正接纳的数据库;
     DROP DATABASE 库名    :删除数据库;

第1章 了解SQL

    SHOW TABLES:查询当前数据库下全数数据表;
     DESC 表名:查看钦定数据表的表结构;
     DROP TABLE 表名:删除表
     注释:–注释之后的始末
         #:这一行是注释
         /* */:多行注释

第3章
检索数据

 

第2章
排序检索数据

四.创制数据库/创造数据表
1.成立数据库
     CREATE DATABASE 数据库名;
     CREATE DATABASE 数据库名 CHA中华VSET
UTF8;创立钦点编码的数据库,注意UTF8之间平昔不-

第5章
过滤数据

1.创办表语句:
     CREATE TABLE 表名
         (
             列中的名字和概念,用逗号隔离
         );
     举例:
         CREATE TABLE products
         (
             prod_id        CHAR(10)     NOT NULL,
             vend_id     CHAR(10)    NOT NULL,
             prod_name    CHAR(10)     NOT NULL,
             prod_price    CHAR(8,2)    NOT NULL,
         );
     注意:NULL是指没有值,””(空字符串)是有效值;
2.钦命私下认可值:DEFAULT
     举例:
         CREATE TABLE orderItems
         (
             order_num    INTEGER        NOT NULL,
             orer_item    INTEGER        NOT NULL,
             quantity    INTEGER        NOT NULL     DEFAULT 1,
         );
        
对于quantity列,借使不交付,则暗中认可为1;暗许值日常用来日期或时间戳列.
     补充:DEFAULT比NULL更为常用,对于总计或分组的列更是如此;
3.履行SQL脚本创制表并插入数据的手续:间接粘贴到sqlyog只怕workbench中执行…..

第6章
高级数据过滤

4.约束:NULL     PRIMARY KEY     UNIQUE      DEFAULT

第伍章
用通配符进行过滤

五.查询
     1.SELECT     列名     FROM     表名:   
从3个表中再次来到必要摸索的列-检索单列;
     2.SELECT 列1, 列2, 列3    FROM    表名:   
从三个表中重临须要寻找的多列音讯-检索多列;
     3.SELECT *    FROM    表名 :使用通配符再次回到表中保有列
     4.SELECT DISTINCT 列名     FROM    
表名:重临该列中分歧的值(相同的只体现二个);
     5.SELECT DISTINCT    列1,列2 FROM    
表名:假若两行中列1,列2都相同,则只突显多少个
     6.SELECT 列名 FROM 表名 LIMIT 5:从表中重返该列的前5行数据(MYSQL);
     6.SELECT 列名 FROM 表名 WHERE ROWNUM <=
5:从表中再次来到该列的前5行数据(ORACLE)
     7.SELECT 列中 FROM 表名    LIMIT 2 OFFSET
1:从第贰行起(不分包第3行)突显2行(MYSQL);
         可简写为 LIMIT 1,2;
     8.O奥迪Q3DECR-V BY 列1,列2:根据先按列1,再按列2的自然顺序排充(OCR-VDER
BY子句应在WHERE子句之后)
     9.OLANDDE帕杰罗 BY     列1
DESC:根据列1的降序排(DESC语句仅对其眼前的列有效,多列排序需在各类列后加DESC关键字);
     10.WHERE :制造规则过滤数据(无法回去NULL值),如 SELECT cust_id,
cust_name FROM customers where cust_age>=20,
采取年龄在20岁以上的消费者ID和人名
         WHERE子句中可选取AND/O君越/IN/NOT等子句,以创造过滤规则
        
IN操作符用来内定条件限制,范围中的各个条件都能够展开匹配.IN取一组由逗号分隔,括在圆括号中的合法值.
     11.% 通配符:表示任意字符出现任意字数;不过不匹配NULL;
     12._
通配符:与%例外的是,它只匹配单个字符;即贰个_表示2个字符,可匹配空格;
     13.[]
通配符:用来钦赐一个字符集,必须协作钦点地点(通配符地方)的一个字符;
     14.拼接字段:+ 或然 ||
     15.聚集函数:AVG():重回某列的平均值;
             COUNT():重回某列的行数
             MAX():重回某列的最大值
             MIN():再次来到某列的最小值
             SUM():重回某列值之和
        
以上聚集函数能够结合使用;给合使用时,FROM前的终极二个函数后不加逗号!!!
     16.创建数量分组:GROUP BY
         分组语句会将NULL作为二个分组重回;
         分组语句应在WHERE其后,O奥迪Q5DERAV4 BY 此前;
     17.过滤分组语句:HAVING
     18.内联结:INNEENCORE JOIN    ON 连接等值字段
     19.BETWEEN…AND…取里面包车型地铁值,含头含尾,且小数在前,大数在后

第捌章
创设计算字段

六.更新
     1.更改表结构语句:
     增加列(字段):
         ALTE讴歌RDX TABLE 要更改的表名    做出的转移;
         举例:
         ALTER TABLE orderItems
         ADD order_totalPrice     DOUBLE(8,2)        NOT NULL;
        
在orderItems表中扩大一列order_totalPrice列,使用DOUBLE类型,且不为空;

第玖章
使用数据处理函数

    删除列(字段):
         ALTER TABLE orderItems
         DROP    COLUMN order_totalPrice;
         在orderItems表中去除列oreder_totalPrice;
    
注意:数据库表中的变更不可撤销,操作前应开展整体的备份(形式和数目标备份);

第十章
汇总数据

    修改列(字段)的数据类型和封锁
         ALTER TABLE 表名
         MODIFY 列名 数据类型 约束;

第十章
分组数据

    修改列(字段)名
         ALTER TABLE 表名
         CHANGE 原字段名 新字段名 新品类 新约束;

第一1章
使用子查询

    修改表中的记录(行):其后可加WHERE子句
         UPDATE 表名
         SET 字段=新值;

第12章
联结表

    2.重命名表语句:
         RENAME TABLE 原表名 TO 新表名;

第三3章
创造高级联结

    3.插入数听新闻说话:
         INSERT    INTO
         举例:插入完整/部分的行
             INSERT INTO customers
             (
                 cust_id,
                 cust_name,
                 cust_email
             )
             VALUES(
                 ‘10000007’,
                 ‘philip’,
                 ‘philip@outlook.com’
             );
         举例:插入检索出的数码
             INSERT INTO    customers
             (
                 cust_id,
                 cust_contacts,
                 cust_email,
                 cust_name,
                 cust_address,
                 cust_city,
                 cust_state,
                 cust_zip,
                 cust_country
             )
             SELECT    cust_id,
             cust_contacts,
             cust_email,
             cust_name,
             cust_address,
             cust_city,
             cust_state,
             cust_zip,
             cust_country
             FROM    custNew;
         说明:
            
1.那么些事例的用处:将custNew表中的相应数据插入到customers表中;
             2.INSETiguanT
SELECT语句能够插入多行,即不管SELECT语句重临多少行,都将被插入;
             添加数据:
        
         INSERT INTO 表名 VALUES();

第①4章
组合查询

七.删除表/删除库
     1.删除表(整个表)语句
         DROP TABLE    custcCopy;
     注意:执行该语句将永远删除该表;

第叁5章
插入数据

    删除数据:其后可加WHERE子句
         DELETE FROM 表名:将表中全体数据删除

第26章
更新和删除数据

八.常用数据类型:4种
     整数: int
     小数:double
     字符串:varchar
     日期:date
     long类型:big int

第二7章
成立和操作表

    字符串的值供给运用单引号或双引号包裹起来;
     定义字符串类型的字段时,要求内定字符串的尺寸;
     日期期进行相比较时,需用单引号包裹;

第一8章
使用视图

sql的实施各种:
     from–where/having–order by/group by/limit–select

第三9章
使用存款和储蓄进程

第叁0章
管理实际事务处理

第一1章
使用游标

第三2章
掌握高级SQL性格**

 **

第1章 了解SQL

1.
数据库(database)保存有集体的数码的容器(三个/一组文件)。

2.
表(table)某种特定类型的结构化清单。

3.
形式(schema)关于数据库和表的安插及特色的音讯。

4.
列(colomn)表中的多个字段。全部表都由贰个或多少个列组成。

5.
行(row)表中的一个记下。

6.
主键(primary key)一列(或一组列),其值能够唯一标识表中每种行。

 
 ①任意两行都不拥有相同的主键值;

 
 ②各种行都必须持有八个主键值(主键列不允许NULL值);

 
 ③主键列中的值不允许修改或更新;

 
 ④主键值无法重用(倘诺某行从表中删除,它主键不能够赋给以后的新行)。

7.
SQL(Structured Query
Language,结构化查询语句)是一门专门用来与数据库通讯的语言。

第三章 检索数据

1.
SELECCT语句用途是从二个或多少个表中检索新闻。

2.
根本字(Keyword)作为SQL组成都部队分的保留字,不能够用作表或列的名字。

3.
检索列:SELECT列名   FROM 表名;

4.
SQL关键字不分大小写,建议重点字大写。甘休语句用分号;

第①章 排序检索数据

1.
子句(clause)SQL语句由子句构成,日常由一个要害字加上所提供的多少整合。

2.
可用O奥迪Q5DE路虎极光 BY子句明显地排序用SELECT语句检索出的数目。应保险O奥德赛DER
BY子句是SELECT语句中最后一条子句。

3.
按列名排序:O途睿欧DE途锐 BY列名,列名;(按两个列排序)

4.
按列地方排序:ORubiconDE福特Explorer BY 2,3;按SELECT中第3、三个列名排序。

5.
进行降序排序,DESC关键字只行使到平素放在其前面的列名。OPRADODE瑞鹰 BY
prod_price DESC, prod_name;

第五章 过滤数据

1.
只检索所需数据须要制定搜索条件(search criteria),也称过滤条件(filter
condition)。

2.
数码依据WHERE子句中钦赐的搜寻条件实行过滤,WHERE子句在表名(FROM子句)之后给出。

3.
WHERE子句操作符:

 
 <>(不等于)

 
 !=(不等于)

 
 =(等于)

 
 <(小于)

 
 <=(小于等于)

 
 !<(不小于)

 
 >(大于)

 
 >=(大于等于)

 
 !>(不大于)

 
 BETWEEN … AND …(钦点值间)

   IS
NULL(为NULL值)

4.
范围标准中冒出字符或字符串,需求单引号括起来,如:’HELLO’

5.
范围检索例:WHERE prod_price BETWEEN 5 AND 10;

6.
NULL无值(no value),区别于0、空字符、空格。

7.
检查NULL值列例:WHERE prod_price IS NULL;

第6章 高级数据过滤

1.
更强过滤控制,给出多少个WHERE子句,这么些子句以二种办法利用,即以AND子句形式或ORubicon子句形式选择。

2.
为了通过不断一个列实行过滤,可利用AND操作符给WHERE子句附加条件。WHER伊芙nd_id = ‘DLL01’ AND prod_price <= 4;

3.
O卡宴用于WHERE子句中,用来代表检索匹配任意给定条件的行。WHERE vend_id =
‘DLL01’ OR vend_id = ‘BRS01’;

4.
AND操作符的优先级高于O福睿斯,为防止条件协作错误或歧义,都应该运用圆括号分明地分组操作符。

5.
IN操作符用来钦定条件限制,范围中的各类条件都足以拓展匹配。IN取合法值得有逗号分隔的清单,全都在圆括号中。功用与OKuga格外。WHER伊芙nd_id IN(‘DLL01′,’BRS01’)

   优点:

 
 ①利用长的官方选项清单时,IN操作符的语法更清楚、直观。

 
 ②在用IN时,计算次序更便于管理(操作符更少)。

 
 ③IN操作符一般比O昂Cora操作符清单执行更快。

 
 ④IN最大亮点是可含蓄别的SELECT语句,使得更能动态地创设WHERE子句。

6.
NOT操作符有且唯有3个效能,这就是或不是定它以往所跟的别样条件。WHERE NOT
vend_id = ‘DLL01’

第五章 用通配符进行过滤

1.
通配符(wildcard)用来匹配值的一有的的特殊字符。

2.
搜寻形式(Search 帕特tern):由字面值、通配符大概双方结合构成的寻找条件。

3.
为在寻找句子中利用通配符,必须使用LIKE操作符,以提醒DBMS,后跟的物色格局应用通配符匹配而不是直接相等匹配举行相比较。

4.
通配符搜索只好用来文书字段(串),非文本数据类型字段不可能采取通配符搜索。

5.
百分号通配符(%)可协作任何字符出现任意次数。(在MS Access中符号为*)
 WHERE prod_name LIKE ‘Fish%’;

6.
下划线通配符(_)只分外叁个字符。(MS Access中符号为?)

7.
方括号通配符([])用来钦赐2个字符集,必须配合钦命地点(即通配符地点)的一个字符。仅少数DBMS扶助:MS
Access、MS SQL和Sybase Adaptive
Server。此通配符能够用前缀字符^(脱字号)来否认。(MS Access用!)

8.
使用通配符技巧:

 
 ①永但是于使用通配符。能不用尽量不用。

 
 ②除非须求。不然通配符勿用于搜索方式开首处。(会促成品质降低)

 
 ③小心正确放置通配符地方。

第拾章 创制总结字段

1.
字段(田野(field))基本上与列(column)的趣味同样,常交换使用,然而数据库一般称为“列”,而术语“字段”日常用在盘算字段的连年上。

2.
拼接(concatenate)将值联结到联合组成单个值,可用加号(+)或四个竖杠(||)表示,那信赖于现实的DBMS。

3.
TKugaIM函数(大部分DBMS匡助),RAV4T途达IM()去掉串右侧空格、LTRIM()去掉串左侧空格以及TGL450IM()去掉串左右两边的空格。

4.
四个未命名的列无法用于客户机应用中,因为客户机没有主意引用它。须用列小名(alias)解决。

5.
列外号(alias)是三个字段或值的轮换名,使用AS关键字赋予:

SELECT
RTRIM(vend_name) || ‘(‘ || RTRIM(vend_country) || ‘)’ AS vend_title

6.
总括字段用途:字符串拼接、算术总计。

7.
总括字段执行算术运算示例:

   SELECT
prod_id,

 
 quantity,

 
 Item_price,

 
 quantity*item_price AS expanded_price

   FROM …

 
 WHERE…

第⑧章 使用数据处理函数

1.
SQL协理使用函数来拍卖多少,不一致的DBMS函数名与效率有着差距,难以移植。

2.
多数SQL完毕帮助一下品种的函数:

 
 ①用以拍卖文本串(如删减、填充值,转换值为大/小写)的文本函数。

 
 ②用以在数值数据上海展览中心开算术操作的数值函数。

 
 ③用于拍卖日期和时间值并从这个值中提取一定成分的日子和时间的函数。

 
 ④回来DBMS正采用的卓绝音信(如重临用户登录消息)的系统函数。

第⑦章 汇总数据

1.
集结函数(aggregate
function)运维在行组上,计算和再次来到单个值的函数。(获得的是汇聚消息而非实际多少笔者)

 
 ①AVG()再次来到某列平均值

 
 ②COUNT()重临列行数

 
 ③MAX()重返某列最大值

 
 ④MIN()再次回到某列最小值

 
 ⑤SUM()重回某列值之和

2.
AVG()通过对对表中央银行数计数并总计特定列值之和,获得列平均值。

3.
COUNT()明确表中央银行数的数目或符合特定条件的行的数目。

 
 ①使用COUNT(*)对表中央银行的多少举办计数,不管表列中含有的是空值(NULL)依然非空值。

 
 ②应用COUNT(column)对特定列中具有值的进行计数,忽略NULL。

4.
采纳专业的算术操作符,全部聚集函数都可用来推行多少个列上总结。

5.
聚集差别值

 
 ①对富有的行执行计算,钦命ALL参数或不给参数。(ALL为默许)

 
 ②只包含分化的值,钦命DISTINCT函数。

6.
SELECT语句可含蓄多个聚众函数。(组合聚合函数)

第十章 分组数据

1.
分组允许把数据分为五个逻辑组,以便能对各种组开始展览联谊计算。

  1. GROUP
    BY子句提示DBMS分组数据。一些该子句主要规定:

     
     ①~子句能够包罗自由数目标列

     
     ②如果在G~子句中嵌套了分组,数据将在最终分明的分组上海展览中心开集中。

       ③GROUP
    BY子句列出的种种列都必须是摸索列或有效的表达式(但不能是集结函数)。如在SELECT中用表明式,则需在GROUP
    BY子句内定相同表达式。不可能运用小名。

     
     ④超过一半SQL达成不相同意G~B~列带有长度可变数据类型(文本或备注)。

     
     ⑤除聚集总计语句外,SELECT语句中每一个列都必须在GROUP BY子句中提交。

     
     ⑥如分组列中有着NULL值,则NULL将作为叁个分组重临。如列中有好多行NULL值,它们将分为一组。

     
     ⑦G~B~子句必须在WHERE子句之后,OOdysseyDE奇骏 BY子句在此以前。

    3.
    HAVING用于过滤分组(能够代表WHERE过滤行),WHERE用于过滤行(不能够在GROUP
    BY后过滤分组)。

    4.
    WHERE在数量分组前进行过滤,HAVING在数量分组后开始展览过滤。不内定GROUP
    BY,多数DBMD将两边天公地道。优秀习惯:应仅在与GROUP
    BY子句结合时才用HAVING,而WHERE子句用于规范的行级过滤。

    5.
    利用O奇骏DE奥迪Q5 BY对GROUP BY分组数据排序。

    6.
    SELECT子句顺序:(括号内布尔值表示是不是必须接纳)

     
     SELECT(是)→FROM(仅在从表选择数据时)→WHERE(否)→GROUP
    BY(仅在按组计算聚集时)→HAVING(否)→O昂科拉DEPAJERO BY(否)

第③1章 使用子查询

1.
SQL允许成立子查询(Subquery),即:嵌套在别的查询中的查询。

2.
看成子查询的SELECT语句只好查询单个列。

3.
使用子查询的另二个方法是创立总计字段。

第12章 联结表

1.
关联表的筹划是要确定保障把音信分解成五个表,一类数据多个表。各种表经过一些常用的值(即关系陈设中的关系(relational))相互关系。

2.
可伸缩性(Scale)能适应不断增多的工作量而不退步。设计精良的数据库或应用程序称之为可伸缩性好(scale
well)。

3.
联结是一种体制,用来在一条SELECT语句中关联表,因而称为联结。使用卓殊的语法,能够统一七个表重返一组输出,联结在运维时关联表中国中国科学技术大学学学的行。

4.
集合的创导:规定要联合的全数表以及它们怎样关联即可。

 
 如:SELECT vend_name, prod_name, prod_price

   FROM
Vendors, Products   (要联合的表)

   WHERE
Vendors.vend_id = Product.vend_id;(联结方式)

5.
完全限定名(用3个句点分隔的申明和列名),在引用的列或然出现二义性时,必须选用完全限定名。

6.
DBMS不可能自行联结,需利用WHERE子句作过滤条件合营联结。

7.
笛卡儿积(cartesian
product)由没有统一条件的表关系再次回到的结果为笛卡儿积。检索出的行的数额将是第二个表中的行数乘以第三个表中的行数。

8.
等值联结(equijoin)即内部统一,基于四个表之间的对等测试。

9.
创制联结的另一种语法:INNEWrangler JOIN … ON

   SELECT
vend_name, pro_name, prod_price

   FROM
Vendors INNER JOIN Products

   ON
Vendors.vend_id = Products.vend_id;

   (ANSI
SQL规范首要采用INNE奥德赛 JOIN语法)

10.
SQL对一条SELECT语句中得以统一的表的数额没有限定。创立联结的骨干规则也同等。首先列出装有表,然后定义表间关系。

第叁3章 创制高级联结

1.
利用表外号:除了用于列名和测算字段外,SQL还同意给表名起外号。

 
 原因:①缩短SQL语句

 
 ②允许在单条SELECT语句中一再行使相同的表。

 
 例:SELECT cust_name, cust_contact

   FROME
Customer AS C, Orders AS O, OrderItems AS OI

   WHERE
C.cust_id = O.order_num AND …

2.
表小名可用于SELECT列表,WHERE、OCR-VDE奥迪Q5 BY子句及言语的别的部分。

3.
表外号只在询问执行中选择。与列别称不等同,表别称不重回到客户机。

4.
自联结:使用表别名数十次引用同一个表。平时作为外部语句用来顶替相同表中检索数据的使用子查询语句。

5.
自然联合:排除数十一遍并发,使每一种列值重返三回。(重复列不回来)

6.
外部联结:联结包蕴了那个在相关表中从不关联行的行。

   例1:

   SELECT
Customers.cust_id, Orders.Order_num

   FROM
Customer LEFT OUTER JOIN Orders

   ON
Customers.cust_id = Order.cust_id;

 
 (LEFT或凯雷德IGHT关键字钦定包罗其全部行的表。(OUTECR-V JOIN)

   例2:

   SELECT
Customers.cust_id, Orders.order_num

   FROM
Customers, Orders

   WHERE
Customers.cust_id *= Orders.cust_id

 
 (在Oracle中用“(+)”代替例子中的*

7.
全身体表面面联结关键字: FULL、OUTE汉兰达、JOIN

8.
可在统一中行使聚集函数。

9.
关于联合使用的要点

 
 ①在意所选拔的统一类型

 
 ②各DBMS援救语法尽不等同,应查阅具体文书档案

 
 ③保证使用科学的统一条件。

 
 ④应当总是提供统一条件,不然会获得笛卡儿积。

 
 ⑤分头测试每一个联结。

第贰4章 组合查询

1.
复合查询(compound
query)或并(union):执行多个查询(SELECT语句)并将结果作为单个查询结果集再次来到。

 
 使用意况:

 
 ①在单个查询中从不一样的表类似重临结构数据。

 
 ②对单个表执行两个查询,按单个查询重返数据。

2.
复合查询操作符UNION,放置于两条SELECT语句之间即可。

3.
UNION使用规则:

 
 ①UNION必须由两条或两条以上的SELECT语句组成,语句间用UNION分隔。

 
 ②UNION中的种种查询必须包涵相同的列、表明式或聚集函数。

 
 ③列数据类型必须同盟:类型不必完全相同,但不能够不是DBMS能够隐含地转换的门类。

4.
UNION从询问结果集中活动去除了重新的行。

 
 使用UNION ALL代替UNION,则赶回全体匹配行。

5.
对组合查询结果排序,用O卡宴DER
BY放在最后一条SELECT语句之后,只可以用三个OLacrosseDE逍客 BY。

6.
其余类其余UNION:

 
 ①EXCEPT:检索第一个表中留存,第1个表不设有的行。

 
 ②INTE奥迪Q5SECT:检索八个表中都留存的行。

第二5章 插入数据

1.
INSEXC60T语句,用来插入(或抬高)行到数量库表的。

   方式:

 
 ①插入完整的行

 
 ②插入行的一有的

 
 ③插入有些查询的结果(使用INSE本田UR-VT需DBMS中一定安全权限)

2.
插入完整的行:

 
 ◇不安全方式:

   INSERT
INTO Customers

 
 VALUES( ‘10000006’

 
 ‘ToyLand’

   ‘123
Any Street’,

   ‘New
York’,

   NULL,

   NuLL);

 
 ◇安全方式:

   INSERT
INTO Customers (

 
 Cust_id,

 
 Cust_name,

 
 Cust_address)

 
 VALUES(

 
 ‘10000006’,

   ‘Toy
Land’,

   ‘123
Any Street’);

3.
插入部分行,在INSELacrosseT中付出要加盟列的名字,并提供值(如上安全格局)。

 
 省略的列必须满意一下某部条件:

 
 ①该列定义为允许NULL值(无值或空值)。

 
 ②在表定义中给出默许值。那意味着假诺不给出值,将采纳私下认可值。

4.
插入检索出的数据,使用INSE昂科雷T…SELECT…语法。

   INSERT
INTO Customers (

 
 Cust_id,

 
 Cust_contact)

   SELECT
Cust_id,

 
 Cust_contact

   FROM
CustNew;

5.
将三个表的内容复制到1个崭新的表(在运转中开创的表),能够行使SELECT
INTO语句。

  1. INSE中华VT
    SELECT与SELECT INTO首要不同:前者导出数据,而后人导入表。

  2. SELECT
    INTO用法:

       ◇例子1

       SELECT
    *

       INTO
    CustCopy

       FORM
    Customers;

       ◇例子2

       CREATE
    TABLE CustCopy AS

       SELECT
    *

       FROM
    Customers;(MySQL与Oracle用法)

  3. SELECT
    INTO使用须知:

     
     ①别的SELECT选项和子句都得以行使,包罗WHERE和GROUP BY。

     
     ②方可用统一从多少个表插入数据。

     
     ③不管从多少个表中检索数据,数据都只可以插入单个表中。

第26章 更新和删除数据

1.
为了立异(修改)表中的数额,能够应用UPDATE语句。

 
 二种格局:

 
 ①更新表中一定行

 
 ②更新表中有着行

2.
UPDATE语句使用:

 
 ①要立异的表

 
 ②列名和她们的新值

 
 ③分明更新行过滤条件

   UPDATE
Customers

   SET
cust_email = ‘kim@thetoystore.com‘,

 
 cust_contact = ‘Sam 罗Berts’  (也能够用于删除有些列值,设为NULL)

   WHERE
cust_id = ‘1000006’;

3.
为了从二个表中删除(去掉)数据,使用DELETE语句。

 
 三种格局:

 
 ①从表中删除特定的行

 
 ②从表中删除全数行

4.
DELETE使用:(删除行而非表自己)

   DELETE
FROM Customers

   WHERE
cust_id = ‘1000006’;

5.
若要删除表中全体行,使用TRUNCATE TABLE更快(不记录Data变动)

6.
DELETE删除整行而不是删除列。要去除钦定的列,请使用UPDATE语句。

7.
更新和删除的指导标准:

 
 ①除非分明打算更新和删除每一行,不然相对不要采纳不带WHERE子句的UPDATE或DELETE语句

 
 ②承保每一种表都有主键,尽或者像WHERE子句那样采取它(能够钦定各主键、八个值或值的限制)。

 
 ③在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的笔录,避防患编写的WHERE子句不得法。

 
 ④施用强制实行引用完整性的数据库,这样DBMS将不允许删除全体与其余表相关联的数量的行。

 
 ⑤有的DBMS允许数据库管理员施加约束,避防备不带WHERE子句的UPDATE或DELETE。

8.
SQL没有收回(undo)按钮,须小心使用UPDATE和DELETE。

第叁7章 创制和操作表

1.
二种创立表的主意:

 
 ①多数DBMS都具备交互式创设和管理表的工具

 
 ②表也足以一贯用SQL语句来支配。

2.
用到CREATE TALBE创立表,必须付出下列消息:

 
 ①新表的名字,在第叁字CREATE TABLE之后给出;

 
 ②表列的名字和定义,用逗号分隔;

 
 ③有的DBMS还供给内定表的地方。

   CREATE
TABLE Products

   (

 
 prod_id CHAR(10) Not NULL,

 
 prod_desc VARCHAR(1000) NULL,

 
 quantity INTEGER NOT NULL DEFAULT 1

   );

3.
每一种表的列大概是NULL列,只怕是NOT
NULL列,那种情景在创制时由表的定义规定。

  1. NOT
    NULL会阻止插入没有值的列。假设打算插入没有值的列,将回来错误,且插入退步。

    5.
    主键是其唯一标识表中每一行的列,其列必为NOT NULL列。

    6.
    SQL允许钦点暗中认可值,在插入行时要是不给出值,DBMS将电动选用默许值。暗许值在CREATE
    TABLE语句的列定义中用关键字DEFAULT钦赐。

    7.
    为创新表定义,可使用ALTEEnclaveTABLE语句。各DBMS允许更新内容差异大,应考虑上面几点:

     
     ①形似的话在表中含有数据时不用对其开始展览翻新。应在设计表是做充足考虑。

     
     ②全部DBMS都同意给现有的表扩充列,不过对所充实列的数据类型(以及NULL和DEFAULT的使用)有所限制。

     
     ③过多DBMS不允许删除或更改表中的列。

     
     ④众多DBMS对曾经填有数据的列的更改有限量,对未填有数据的列大概没有限制。

     
     ⑤多数DBMS允许重命名表中的列。

    8.
    为利用ALTE昂科威 TABLE更改表结构,必须付出上面包车型地铁新闻:

     
     ①在ALTE普拉多 TABLE现在给出要更改的表名

     
     ②所做改变的列表

       ◇例子1

       ALTER
    TABLE Vendors

       ADD
    vend_phone CHAR(20);

       ◇例子2

       ALTER
    TABLE Vendors

       DROP
    COLUMN vend_phone;

    9.
    繁杂的表结构相似要求手动删除进程,涉及步骤:

     
     ①用新的列布局成立四个新表

     
     ②采用INSEPAJEROT
    SELECT语句从旧表复制数据到新表。固然有供给可选择转换函数和计量字段。

     
     ③检察包括所需数据的新表;

     
     ④重命名旧表(假诺分明,能够去除它);

     
     ⑤用旧表原来的名字重命名新表;

     
     ⑥依照须要,重新成立触发器、存款和储蓄进程、索引和外键。

    10.
    删除表(删除全体表而不是其剧情):使用DROP TABLE语句:

       DROP
    TABLE CustCopy;

    11.
    重命名表,DB贰 、MySQL、Oracle和PostgreSQL用Rename语句;SQL
    Server、Sybase用sp_rename语句。

第②8章 使用视图

1.
视图是杜撰的表。与含蓄数据的表不等同,视图只包蕴使用时动态检索数据的询问。

2.
施用视图的由来:

 
 ①重用SQL语句

 
 ②简化复杂的SQL操作。在编写制定查询后,可便宜地采取它而毋庸知道它的中央查询细节。

 
 ③使用表的组成都部队分而不是全部表。

 
 ④维护数量。能够给用户授予表的特定部分的造访权限而不是整套表的造访权限。

 
 ⑤改动数据格式和象征。视图可回到与底层表的代表和格式分裂的多少。

3.
视图仅仅是用来查看存款和储蓄在别处的一种配备,其本人不包蕴数据,因而他们回到的数额是从其余表中检索出来的。

4.
视图的规则和限量:

 
 ①与表一样,视图必须唯一命名。

 
 ②对于可以创造的视图数目没有界定。

 
 ③为了创制视图,必须拥有丰裕的拜访权限。这几个限制普通由数据库管理员授予。

 
 ④视图能够嵌套,即:可以动用从其余视图中找寻数据的询问来布局八个视图。

 
 ⑤过多DBMS禁止视图查询中利用O奥迪Q3DE揽胜极光 BY子句。

 
 ⑥有的DMBS需要命名再次回到的富有列,假诺是持筹握算字段,则需用别名。

 
 ⑦视图不能够引得,也不能够有关联的触发器或私下认可值。

 
 ⑧有的DBMS把视图作为只读的查询。

 
 ⑨有的DBMS允许创立那样的视图,它不容许进行导致行不在属于视图的插入和翻新。

5.
视图用CREATE VIEW语句创制,用DROP删除、覆盖或更新。

6.
视图最普遍应用之一是隐蔽复杂的SQL,那日常涉及联结。

   CREATE
VIEW ProductCustomers AS

   SELECT
cust_name, cust_contact, prod_id

   FROM
Customers, Orders, OrderItems

   WHERE
Customers.cust_id = Orders.cust_id AND OrderItems.order_num =
Orders.order_num;

7.
视图的另一常见用途是重复格式化检索出的数量。

   CREATE
VIEW VendLocation AS

   SELECT
RTRIM(vend_name) + ‘(‘ + RTRIM(vend_country) + ‘)’ AS vend_title

   FROM
Vendors;

8.
用视图过滤不想要的数额,用WHERE子句于视图成立中。

9.
视图对于简化计算字段的利用尤其有用。

   CREATE
VIEW OrderItemsExpanded AS

   SELECT
order_num, prod_id, quantity, item_price, quantity * item_price AS
expanded_price

   FROM
OrderItems;

第叁9章 使用存款和储蓄进度

1.
仓库储存进度:为其后的选拔而保留的一条或多条SQL语句的聚合。

2.
行使存款和储蓄进度的原委:

 
 ①经过把拍卖封装在不难选拔的单元中,简化复杂的操作。

 
 ②由于不供给反复建立一比比皆是处理步骤,而制止错误保险了数额一致性。

 
 ③简化对转移的治本,安全性。

 
 ④存款和储蓄进度一般以编写翻译过的款式储存,进步了品质。

 
 △综上所述,优点:简单、安全、高质量

 
 △缺点如下:

 
 ①两样DBMS中储存进度语法有所差别。

 
 ②仓库储存进程的编纂比基本SQL语句复杂,供给更高的技术、经验。

3.
用EXECUTE执行存款和储蓄进度,它承受存款和储蓄进程名和内需传递给它的别的参数。

4.
对于不一致DBMS,大概有以下存储进度的实践选用:

 
 ①参数可选,具有不提供参数时的暗许值。

 
 ②不按次序给出参数,以“参数二值”的不二法门提交参数。

 
 ③输出参数,允许在仓库储存进程在正推行的应用程序中更新所用的参数。

 
 ④用SELECT语句检索数据。

 
 ⑤赶回代码,允许存款和储蓄过程重临2个值到正在履行的应用程序。

5.
SQL中开始展览诠释的正式措施是在句首放置– (连个连字符)。

第贰0章 管理实际事务处理

1.
事务管理(transaction
processing)能够用来保卫安全数据库的完整性,它保障成批的SQL操作如故完全履行,要么完全不执行。

 
 术语:事务(transaction)指一组SQL语句;

 
 回退(rollback)指撤销钦命SQL语句的历程;

 
 提交(commit)指将未存款和储蓄的SQL语句结果写入数据库表;

 
 保留点(save
point)指事务处理中装置的近日占位符(placeholder),你能够对它揭穿回退(注意与回退整个事务处理区别)。

2.
事务处理可回退INSE安德拉T、UPDATE和DELETE,不能够回退SELECT、CREATE和DROP操作。

3.
各DBMS有分化方法标识事务处理块。

   ◇SQL
Server:

   BEGIN
TRANSACTION

   …

   COMMIT
TRANSACTION

   ◇MySQL

   START
TAANSACTION

   …

 
 ◇PostgreSQL

   BEGIN;

   …

4.
SQL的ROLLBACK命令用来回退(裁撤)SQL语句:

   DELETE
FROM Orders; ROLLBACK;

5.
一般的SQL语句都以平昔指向数据库表执行和编排的。那就是所谓的蕴藏提交(implicit
commit),即提交(写或保存)操作是电动实行的。

6.
在事务处理块中,提交不会隐含地进行。但差异DBMS做法各异。

   SQL
Server:

   BEGIN
TRANSATION

   DELETE
OrderItems WHERE order_num = 12345

   DELETE
Orders WHERE order_num = 12345

   COMMIT
TRANSACTION

7.
使用保留点,帮忙回退部分事务处理,必须能在事务处理块中伏贴的职分放置占位符。如需回退,可退至某占位符。

 
 SAVEPOINT deletel;

 
 (在SQL Server和Sybase中)

   SAVE
TRANSACTION deletel;

   …

 
 ROLLBACK TRANSACTION deletel;

8.
保留点越来越多越好,那样就能按本身的愿望灵活地拓展回退。

第三1章 使用游标

1.
结果集(result set)SQL查询所检索出的结果。

2.
游标(cursor)是3个储存在DBMS服务器上的数据查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。

3.
不一样DBMS扶助不一样游标选项和特点。常见选项和特点:

 
 ①力所能及标记游标为只读,使数据能读取,但不可能创新和删除。

 
 ②能决定可以推行的定向操作(向前、向后、第三 、末了、相对地点、相对地方等)。

 
 ③能标记某个列为可编写制定的,某个列为不可编辑的。

 
 ④明确限制,使游标对创设它的特定请求(如存款和储蓄进程)或对全部请求可访问。

 
 ⑤提示DBMS对寻找出的多寡(而不是指表中活动数量)做复制,使在游标打开和访问时期数据不扭转。

4.
采纳游标涉及步骤

 
 ①在力所能及利用游标前,必须评释(定义)它。

 
 ②万一注明后,必须打开游标以供役使。用前边定义的SELECT语句,把实际数据检索出来。

 
 ③对此填有数据的游标,依据必要取出(检索)各行。

 
 ④在竣事游标使用时,必须关闭游标,或许的话,释放游标。

5.
游标用DECLARE语句成立,这条语句在分化DBMS中有所分化。

 
 ◇DB2、SQL Server、Sybase中

 
 DECLARE CustCursor CURSOR

   FOR

   SELECT
* FROM Customers

   WHERE
cust_email IS NULL

 
 ◇Oracle、Postgre SQL中

 
 DECLARE CURSOR CustCursor

   IS

   SELECT
* FROM Customers

   WHERE
cust_email IS NULL

  1. 用OPEN
    CU凯雷德SOLX570语句打开游标执行查询,存款和储蓄检查出的数额以供浏览和滚动。

    7.
    用FETCH语句访问游标数据。建议要物色的行,从何处检索它们以及将它们放于何处(如变量名)。

    8.
    游标在行使完成时索要关闭,部分DBMS供给明显释放游标所占财富(CLOSE语句)。

第三2章 了然高级SQL天性

1.
封锁(constraint)管理怎么样插入或拍卖数据库数据的平整。

2.
主键是一种特有的束缚,表中的贰个(组)列的值唯一标识表中的行。

 
 ①任意两行的主键值都不同

 
 ②每行都具有3个主键值(即列中不相同意NULL值)

 
 ③暗含主键值的列不修改或更新

 
 ④主键值不能够重用。假使从表中删除某一行,其主键不分红给新行。

 
 成立主键:

   CREATE
TABLE Vendors

   (

 
 vend_id CHAR(10) NOT NULL PRIMARY KEY,

 
 vend_name CHAR(50) NOT NULL

   );

 
 ——————

   ALERT
TABLE Vendors

   ADD
CONSTRAINT PRIMARY KEY(vend_id);

3.
外键是表中的1个列,其值必须在另一表的主键中列出。用于关联其余表,保证引用完整性。

   例子:

   CREATE
TABLE Orders

   (

 
 Order_num INTEGER NOT NULL PRIMARY KEY,

 
 Order_date DATETIME NOT NULL,

 
 Cust_id CHAR(10) NOT NULL REFERENCES Customers(cust_id)

   );

   或

   ALTER
TABLE Customers

   ADD
CONSTRAINT

 
 FOREIGN KEY(cust_id) REFERENCES Customers(cust_id)

4.
唯一约束用来确定保障八个列(或一组列)中的数据唯一。差异于主键:

 
 ①表可含蓄多少个唯一约束,但各种表只允许1个主键。

 
 ②唯一约束列可含蓄NULL值。

 
 ③唯一约束列可修改或更新。

 
 ④唯一约束列的值可重复使用。

 
 ⑤与主键不相同,唯一约束不可能用来定义外键。

5.
唯一约束能够用UNIQUE关键字在表定义中定义,也可用单独的CONSTRAINT定义。

6.
检查约束用来担保3个列(或一组列)中的数据满意一组内定的基准。

 
 ①检查最小或最大

 
 ②钦命范围

 
 ③只允许特定的值

 
 △数据类型限制了列中可保留的数据类型。检查约束在数据类型内又越发的限制。

   例1:

   CREATE
TABLE OrderItems

   (

 
 Order_num INTEGER NOT NULL,

 
 Quantity INTEGER NOT NULL CHECK(quantity > 0)

   );

   例2:

   ADD
CONSTRAINT CHECK(gender LIKE ‘[MF]’)

7.
索引用来排序数据以加速搜索和排序操作的进程。

 
 ①索引更上一层楼检索操作的习性,但降低数据插入、修改和删除的特性。

 
 ②索引数据可能要侵吞多量的囤积空间。

 
 ③并非全数多少都严丝合缝于索引(如唯一性糟糕的数量)。

 
 ④索引用于数据过滤和数码排序。

 
 ⑤能够在目录中定义多少个列。

 
 △索引用CREATE INDEX语句创制(不一样DBMS语法差别大)

   CREATE
INDEX pro_name_ind

   ON
PRODUCTS(prod_name);

8.
触发器是万分的仓库储存进程,它在特定的数据库活动发生时自动执行。可与一定表上的INSEPAJEROT、UPDATE和DELETE操作相关联。

 
 ◇触发器内代码具有以下数据访问权:

 
 ①INSE途观T操作中的全数新数据;

 
 ②UPDATE操作中的全体新数据和旧数据;

 
 ③DELETE操作中除去的数码。

 
 ◇触发器一些广泛用途:

 
 ①保持数据一致。

 
 ②基于某些表的变动在别的表上实施活动。

 
 ③展开额外的求证并基于须要回退数据。

 
 ④测算总结列的值或更新时间戳。

 
 例子(SQL Sever版):

   CREATE
TRIGGER customer_882828九五至尊手机版,state

   ON
Customers

   FOR
INSERT,UPDATE

   AS

   UPDATE
Customers

   SET
cust_state = Upper(cust_state)

   WHERE
Customers.cust = inserted.cust_id;

 
 ◇约束比触发器快,应该尽也许利用约束。

9.
数据库安全性通过SQL的GRANT和REVOKE语句管理。

 
 须要维护的一些操作:

 
 ①对数据库管理效率(创制表、更改或删除已存在的表等)的走访;

 
 ②对特定数据库或表的拜会;

 
 ③做客的项目(只读、对特定列的访问等);

 
 ④仅透过视图或存款和储蓄进程对表进行走访;

 
 ⑤创设多层次的安全措施,从而允许两种依照登录的拜会和控制。

 
 ⑥限制管理用户账户的能力。

相关文章

Your Comments

近期评论

    功能


    网站地图xml地图