欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SQL簡(jiǎn)單使用-進(jìn)階篇

與上一篇的《SQL簡(jiǎn)單使用-基礎(chǔ)篇》相連續(xù)的篇章,《SQL簡(jiǎn)單使用-基礎(chǔ)篇》以下簡(jiǎn)稱《基礎(chǔ)篇》。在《基礎(chǔ)篇》中,主要簡(jiǎn)單的帶大家了解一下SQL命令中最主要的增刪改查命令的使用,增INSERT INTO、刪DETELE/DROP/TRUNCATE、改UPDATE、查SELECTE。因?yàn)樵鰟h改查是SQL命令的核心也是最基礎(chǔ)的部分,所以本篇張還是圍繞增刪改查的使用進(jìn)行進(jìn)階性的介紹與使用。

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)公司推出金口河免費(fèi)做網(wǎng)站回饋大家。

先從《基礎(chǔ)篇》中提到的where子句里面的通配符講起。

1.like 用于在where子句中搜索列中的指定模式
示例:
select * from websites where name like '%oo%';
注:(%分號(hào)表示任意數(shù)據(jù),_表示任意一個(gè)數(shù)據(jù),動(dòng)手練兩邊就能熟悉)
'G%' 搜索以G開(kāi)頭的數(shù)據(jù)
'%G' 搜索以G結(jié)尾的數(shù)據(jù)
'%g%' 搜索包含g的數(shù)據(jù)
'G' 搜索以G開(kāi)頭的兩位數(shù)據(jù)
'G' 搜索以G結(jié)尾的兩位數(shù)據(jù)
'G' 搜索包含G的三位數(shù)據(jù)

1.1 通配符還有一種(%、_和[charlist])
示例:[charlist]使用
select * from websites where name REGEXP '^[A-H]';

2.between 用于選取介于兩個(gè)值之間的數(shù)據(jù)范圍內(nèi)的值
示例:
select * from websites where alexa between 1 and 20;
示例:添加not使用
select * from websites where alexa not between 1 and 20;
示例:結(jié)合IN使用
select * from websites where ( alexa BETWEEN 1 and 20) and country in ('USA','CN');
示例:文本
select * from websites where name between 'A' and 'H'; 不包含H

3.top 用于規(guī)定返回記錄的數(shù)據(jù),實(shí)用
示例:SQL server (SELECT TOP number|percent column_name(s) FROM table_name;)
select top 50 percent * from websites;
示例:Oracle(SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;)
select * from websites where ROWNUM &lt;5;
示例:MySQL (SELECT column_name(s) FROM table_name LIMIT number;)
select * from websites limit 3;

4.IN 操作符允許在where子句中規(guī)定多個(gè)值
示例:查看表websites中name列的多條數(shù)據(jù)
select * from websites where name in('baidu','Google');

5.別名 可以為表名稱或列名稱指定別名。
語(yǔ)法:列名稱語(yǔ)法
SELECT column_name AS alias_name FROM table_name;
示例:
select name AS n,country AS c from websites;
語(yǔ)法:表名稱語(yǔ)法
SELECT column_name(s) FROM table_name AS alias_name;
示例:
select w.name,w.url,a.count,a.date from websites AS w ,access_log AS a where w.id=a.site_id and w.name='菜鳥教程';
注:
1.在查詢中涉及超過(guò)一個(gè)表
2.在查詢中都是用了函數(shù)
3.列名稱很長(zhǎng)或者可讀性差 都需要把兩個(gè)列或者多個(gè)列結(jié)合在一起。

6.join 子句用于把來(lái)自兩個(gè)表或者多個(gè)表的行結(jié)合起來(lái),基于這些表之間的共同字段
join類型有一下幾種:
INNER JOIN:如果表中有至少一個(gè)匹配,則返回行
LEFT JOIN:即使右表中沒(méi)有匹配,也從左表返回所有的行
RIGHT JOIN:即使左表中沒(méi)有匹配,也從右表返回所有的行
FULL JOIN:只要其中一個(gè)表中存在匹配,則返回行(MYSQL不支持

首先,連接的結(jié)果可以在邏輯上看作是由SELECT語(yǔ)句指定的列組成的新表。
左連接與右連接的左右指的是以兩張表中的哪一張為基準(zhǔn),它們都是外連接。
外連接就好像是為非基準(zhǔn)表添加了一行全為空值的萬(wàn)能行,用來(lái)與基準(zhǔn)表中找不到匹配的行進(jìn)行匹配。假設(shè)兩個(gè)沒(méi)有空值的表進(jìn)行左連接,左表是基準(zhǔn)表,左表的所有行都出現(xiàn)在結(jié)果中,右表則可能因?yàn)闊o(wú)法與基準(zhǔn)表匹配而出現(xiàn)是空值的字段。
來(lái)源:《數(shù)據(jù)庫(kù)系統(tǒng)原理教程》,王珊,陳紅編著,P86

示例: inner join

SELECT
    websites.id,
    websites.NAME,
    access_log.count,
    access_log.date
FROM
    websites
INNER JOIN access_log ON websites.id = access_log.site_id;

7.union 用于合并兩個(gè)或多個(gè)select語(yǔ)句的結(jié)果集
語(yǔ)法:
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
示例: union 去重

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country; 

示例:union all 顯示所有包括重復(fù)部分

select country from websites
union all
select country from apps;

示例:帶有where的union all

select country,name from websites where country='CN'
union all
select country,app_name from apps where country='CN' order by country;
  1. into 從一個(gè)表復(fù)制數(shù)據(jù),把數(shù)據(jù)插入到另一個(gè)新表中
    注:MySQL 數(shù)據(jù)庫(kù)不支持 SELECT ... INTO 語(yǔ)句,但支持 INSERT INTO ... SELECT 。
    語(yǔ)法: 復(fù)制所有的列插入新表中
    SELECT * INTO newtable [IN externaldb] FROM table1;
    語(yǔ)法:只復(fù)制希望的列插入到新表中
    SELECT column_name(s) INTO newtable [IN externaldb] FROM table1;

8.1 insert into select
示例:復(fù)制 "apps" 中的數(shù)據(jù)插入到 "Websites" 中:
INSERT INTO websites (name,country) select app_name,country from apps;

  1. create 用于創(chuàng)建數(shù)據(jù)庫(kù)或者數(shù)據(jù)表
    語(yǔ)法:創(chuàng)建數(shù)據(jù)庫(kù)
    create database db_name;
    語(yǔ)法:創(chuàng)建數(shù)據(jù)表
    create table table_name
    (
    column_name1 data_type(size),
    column_name2 data_type(size),
    column_name3 data_type(size),
    ... ...
    );    date_type 數(shù)據(jù)類型,size參數(shù)規(guī)定表中列的最大長(zhǎng)度

示例:創(chuàng)建名稱為runoob的數(shù)據(jù)庫(kù)
create database runoob;
示例:創(chuàng)一個(gè)student_informaton表,包含五列:student_id,student_name,student_class,student_tele,student_add

create table student_infomation 
(
student_id int(10),
student_name char(4),
student_class char(10),
student_tele int(11),
student_add varchar(255)
);

前面是列名,后面跟的是對(duì)于列名的數(shù)據(jù)類型

10.約束 用于規(guī)定表中的數(shù)據(jù)規(guī)則
約束可以在創(chuàng)建表的時(shí)候通過(guò)create table語(yǔ)句規(guī)定,或者在表創(chuàng)建之后通過(guò)alter table語(yǔ)句規(guī)定
語(yǔ)法:crate table + constraint

create table table_name
(
column_name1 type_data(size) constraint,
column_name2 type_data(size) constraint,
column_name3 type_data(size) constraint,
... ...
);

在SQL中,我們有如下約束:
NOT NULL指示某列不能存儲(chǔ) NULL 值,強(qiáng)制字段始終包含值,否則就無(wú)法插入新記錄或者更新記錄。
UNIQUE保證某列的每行必須有唯一的值。
PRIMARY KEY - NOT NULLUNIQUE的結(jié)合。確保某列(或兩個(gè)列多個(gè)列的結(jié)合)有唯一標(biāo)識(shí),有助于更容易更快速地找到表中的一個(gè)特定的記錄。
FOREIGN KEY保證一個(gè)表中的數(shù)據(jù)匹配另一個(gè)表中的值的參照完整性。
CHECK保證列中的值符合指定的條件。
DEFAULT規(guī)定沒(méi)有給列賦值時(shí)的默認(rèn)值。

10.1 not null約束 約束強(qiáng)制不接受到任何null值
示例: student_tele不能為空

create table student_information (
    student_id INT (10) ,
    student_name CHAR (4),
    student_class CHAR (10),
    student_tele INT (11) NOT NULL,
    student_add VARCHAR (255)
);

10.2 UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 約束擁有自動(dòng)定義的 UNIQUE 約束。
請(qǐng)注意,每個(gè)表可以有多個(gè) UNIQUE 約束,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束。
示例:MYSQL

create table student_information (
    student_id INT (10),
    student_name CHAR (4),
    student_class CHAR (10),
    student_tele INT (11),
    student_add VARCHAR (255),
    unique (student_id)
    );

示例:SQL server/oracle

create table student_information (
    student_id int (10) NOT NULL UNIQUE,
    student_name CHAR (4),
    student_class CHAR (10),
    student_tele INT (11),
    student_add VARCHAR (255),
    );

示例:SQL mysql/server/oracle 定義過(guò)個(gè)列的unique約束。

create table student_information (
    student_id int (10) NOT NULL UNIQUE,
    student_name CHAR (4),
    student_class CHAR (10),
    student_tele INT (11),
    CONSTRAINT  stu_inf UNIQUE (student_id,student_name)
    );  這里的 stu_inf 為約束名稱constraint_name,自定義。

alter table時(shí)的unique約束
示例:

alter table student_information
add unique (student_id);

示例:添加多個(gè)unique,

alter table student_information
add constraint stu_inf unique (student_id,student_add);

撤銷unique約束
示例:mysql

alter table student_information
drop index stu_inf;

示例:SQL

alter table student_information
drop constraint stu_inf;

10.3 primary key 主鍵必須包含唯一的值,主鍵不能為null,每個(gè)表都應(yīng)該有一個(gè)主鍵,并且是唯一的。
示例:參照unique,將其中的unique替換為 primary key即可。 上述有添加多個(gè)unique示例,如果改為primary 可以意思就是主鍵由添加的幾個(gè)列組成。

10.4 foreign key 約束
a.可以用來(lái)預(yù)防破壞表之間連接的行為
b.防止非法數(shù)據(jù)插入外鍵列,因?yàn)樗仨毷侵赶虻哪莻€(gè)表中的值之一

示例:MYSQL

create table websites(
  id int(11) NOT NULL,
  name char(20) NOT NULL,
  url varchar(255) NOT NULL,
  alexa int(11) NOT NULL,
  country char(10) NOT NULL,
  primary key (id),
  foreign KEY (id) references apps(id)
);

示例:SQL server/oracle

CREATE TABLE websites
 (
 Id int NOT NULL PRIMARY KEY,
 OrderNo int NOT NULL,
 Id int FOREIGN KEY REFERENCES apps(Id)
 );

示例:MySQL/SQL Server/Oracle

CREATE TABLE websites
 (
 Id int NOT NULL,
 OrderNo int NOT NULL,
 Id int,
 PRIMARY KEY (O_Id),
 CONSTRAINT fk_PerOrders FOREIGN KEY (Id)
 REFERENCES apps(Id)
 );

alter table 使用foreign key約束
示例:

ALTER TABLE Orders
 ADD FOREIGN KEY (P_Id)
 REFERENCES Persons(P_Id)

示例:如需命名 FOREIGN KEY 約束,并定義多個(gè)列的 FOREIGN KEY 約束

ALTER TABLE Orders
 ADD CONSTRAINT fk_PerOrders
 FOREIGN KEY (P_Id)
 REFERENCES Persons(P_Id)

撤銷FOREIGN KEY約束
示例:mysql

alter table Orders drop index fk_PerOrders;

示例:SQL

alter table Orders drop constraint fk_PerOrders;

10.5 CHECK 約束
用于限制列中的值的范圍
示例:MYSQL

create table websites(
  id int(11) NOT NULL,
  name char(20) NOT NULL,
  url varchar(255) NOT NULL,
  alexa int(11) NOT NULL,
  country char(10) NOT NULL,
  check (id>0)
);

alter table 使用check約束
alter table websites add check (id&gt;0);
撤銷check約束(參照unique約束中的alter table)
alter table websites drop check constraint_name;

10.6 DEFAULT 約束
1.用于向列中插入默認(rèn)值
2.如果沒(méi)有規(guī)定其它值,那么將默認(rèn)值添加到所有的記錄
示例:MYSQL

create table student_information (
    student_id INT (10) NOT NULL,
    student_name CHAR (4),
    student_class CHAR (10) DEFAULT '' comment '班級(jí)',
    student_tele INT (11),
    student_add VARCHAR (255)
);  comment 是為 字段或列的屬性添加注釋用的

alter table 使用 default
示例:MYSQL

alter table websites
alter country set default 'CN';

示例:SQL server
alter table websites add constraint ad_c default 'CN' for country;
示例:oracle
alter table websites modify country default 'CN';
撤銷default約束
示例:MYSQL

alter table websites
alter country drop default;

示例:SQL server/oracle

alter tables websites
alter column country drop default;
  1. create index 用于在表中創(chuàng)建索引
    在表中創(chuàng)建索引可以更高效的查詢數(shù)據(jù),用戶無(wú)法查看到索引,他們只能被用來(lái)加速搜索/查詢。
    注:更新一個(gè)包含索引的表所耗費(fèi)的時(shí)間比沒(méi)有索引表的時(shí)間更長(zhǎng),這是由于索引本身也需要更新。因此,理想的做法是僅僅在嘗嘗被所有的列(及表)上面創(chuàng)建索引。
    語(yǔ)法:創(chuàng)建一個(gè)簡(jiǎn)單的索引,允許使用重復(fù)的值
    create index index_name ON table_name (column_name);
    語(yǔ)法:在表中創(chuàng)建唯一的索引,不允許使用重復(fù)的值(create unique table):唯一的索引意味著兩個(gè)行不能擁有相同的索引值。
    create UNIQUE index index_name ON table_name (column_name);

示例:將websites表中name列中創(chuàng)建名為web_index的索引。
create index web_index ON websites (name);

12.drop 可以刪除表,索引和數(shù)據(jù)庫(kù)
DROP INDEX 語(yǔ)句用于刪除表中的索引。
用于 SQL Server 的 DROP INDEX 語(yǔ)法:
DROP INDEX table_name.index_name
用于 DB2/Oracle 的 DROP INDEX 語(yǔ)法:
DROP INDEX index_name
用于 MySQL 的 DROP INDEX 語(yǔ)法:
ALTER TABLE table_name DROP INDEX index_name
DROP TABLE 語(yǔ)句用于刪除表。
DROP DATABASE 語(yǔ)句用于刪除數(shù)據(jù)庫(kù)。

僅僅需要?jiǎng)h除表內(nèi)的數(shù)據(jù),但并不刪除表本身
TRUNCATE TABLE table_name

13.ALTER TABLE 用于在已有的表中添加、刪除或修改列。
添加列的語(yǔ)法:
ALTER TABLE table_name ADD column_name datatype;
刪除表中的列語(yǔ)法:
ALTER TABLE table_name DROP COLUMN column_name datatype;
改變表中數(shù)據(jù)類型語(yǔ)法:
ALTER TABLE table_name MODIFY COLUMN column_name datatype;

示例: 在website表中添加名為column_date的列,然后修改列的數(shù)據(jù)類型,刪除添加的列

alter table websites add column_date date;  添加
alter table websites modify column column_date year;修改
alter table websites drop column column_date;   刪除

參考菜鳥教程請(qǐng)?zhí)砑渔溄用枋稣淼墓P記

新聞名稱:SQL簡(jiǎn)單使用-進(jìn)階篇
分享鏈接:http://www.chinadenli.net/article42/jdhhhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站品牌網(wǎng)站建設(shè)品牌網(wǎng)站制作網(wǎng)站維護(hù)網(wǎng)站排名網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)