SQL教程
SQL教程
SQL简介
SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
在您的网站中使用 SQL
要创建一个显示数据库中数据的网站,您需要:
RDBMS 数据库程序(比如 MS Access、SQL Server、MySQL)
使用服务器端脚本语言,比如 PHP 或 ASP
使用 SQL 来获取您想要的数据
使用 HTML / CSS ,不区分大小写
RDBMS
RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。
RDBMS 中的数据存储在被称为表的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
SQL select
从 "Websites" 表中选取 "name" 和 "country" 列:
SELECT name,country FROM Websites;
SELECT * FROM Websites:选取所有列
SQL select distinct
SELECT DISTINCT country FROM Websites;去掉 "country" 列重复值:
SQL where
从 "Websites" 表中选取国家为 "CN" 的所有网站:
SELECT * FROM Websites WHERE country='CN';
数值字段,不使用引号。
SELECT * FROM Websites WHERE id=1;
运算符:= <> > < >= <= between 在某个范围内
like 搜索某种模式 in 指定针对某个列的多个可能值
SQL AND & OR
SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
SELECT * FROM Websites WHERE country='USA' OR country='CN';
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');
SQL order by 对结果集按照一个列或多个列,默认按升序进行排序
SELECT * FROM Websites ORDER BY alexa;
SELECT * FROM Websites ORDER BY alexa DESC; 降序
SELECT * FROM Websites ORDER BY country,alexa;
SQL insert into向表中插入新记录 id自动更新
INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN');
SQL update更改表中已存在的记录
UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程';
执行没有 WHERE 子句的 UPDATE应用到所有
SQL delete
DELETE FROM Websites WHERE name='Facebook' AND country='USA';
DELETE FROM Websites ;删除所有
SQL高级教程
1. SELECT TOP,LIMIT,ROWNUM规定要返回的记录的数目。
SQL Server/MS Access语法
SELECT TOP number|percent column_name(s) from table_name;
MySQL语法
SELECT column_name(s) from table_name limit number;
SELECT * from persons limit 5;
Oracle语法
SELECT column_name from table_name where rownum<=number;
SELECT TOP 50 percent * from websites; 百分比为参数
2. LIKE 在 WHERE 子句中搜索列中的指定模式。
SELECT col from tab where col like pattern;
3. 通配符
通配符 | 描述 |
---|---|
% | 替代0个或多个字符 |
- | 替代一个字符 |
[charlist] | 字符列中任何单一字符 |
[^charlist] | 不在字符列中任何单一字符 |
- select * from web where url like 'https%'; 以……开头
- select * from web where url like '%oo%'; 包含00
- select * from web where url like '_oogle'; 任意开始接oogle
(NOT) REGEXP操作正则表达式
select * from web where name REGEXP '^[GFs]'; 以G或F或s开头
select * from web where name REGEXP '^[^GF]'; 不以G或F开头
4. IN
select col from tab where col in(value1,value2,…)
5. BETWEEN
- select col from tab where col (not) between value1 and value2;
- select * from web where() and country not in ('USA');
- select * from web where name between 'A' AND 'H'; name以字母开头
6.别名
- select col as exp from tab; 列的别名
- select cols from tab as exp; 表的别名
- select CONCAT(url,',',alexa,',',country) as site_info from web; 结合三列
- select w.name,w.url,a.count,a.date from web as w,access as a where a.siteid=w.id and w.name=www ; 别名化简SQL语句
7.SQL连接(JOIN)
LEFT/RIGHT/INNER/OUTER JOIN
- SELECT web.name,access.count,access.date from web INNER JOIN access ON web.id=access.siteid ORDER BY access.count
- SELECT col FROM tab1 LEFT JOIN tab2 ON tab1.name=tab2.name 从左表(table1)返回所有的行,如果右表中没有匹配,则结果为 NULL。
- SELECT col FROM tab1 RIGHT JOIN tab2 ON tab1.name=tab2.name
- SELECT col FROM tab1 FULL OUTER JOIN tab2 ON tab1.name=tab2.name 只要tab1和tab2其中一个表存在匹配则返回行
8.UNION合并两个或多个 SELECT 语句的结果
SELECT city,name FROM UNION (ALL包含重复值)SELECT city FROM app ORDER BY city;
SELECT city,name FROM web WHERE city='CN' UNION ALL SELECT city app_name FROM app WHERE city='CN' ORDER BY city; 带where
9.复制
SELECT INTO从一个表复制信息到另一个表
SELECT * INTO newtab FROM tab WHERE 1=0; 创建新表
SELECT cols INTO newweb FROM web; 复制一些列到新表
SELECT web.name,access.count,access.date INTO newweb FROM web LEFT JOIN access ON web.id=access.siteid; 复制多个表数据到新表
*MySQL数据库不支持SELECR……INTO,支持INSERT INTO……SELECT
*CREATE TABLE AS SELECT * FROM
INSERT INTO tab2 SELECT * FROM tab1;复制表1到另一个已存在的表2
INSERT INTO newweb (name,city) SELECT name,city FROM web WHERE id=1;
10.CREATE DATABASE语句用于创建数据库
CREATE DATABASE wenyu;
CREATE TABLE table_name
(
col_name1 data_type(size),
col_name2 data_type(size),
name varchar(255)
);
data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。size 参数规定表中列的最大长度。
11.约束(Constraints)用于规定表中的数据规则。
CREATE TABLE 在创建表时规定; ALTER TABLE 在表创建之后规定
NOT NULL--某列不能存储 NULL 值。
CREATE TABLE Persons(
ID int NOT NULL,
name varchar(255) NOT NULL
);设置列不接受NULL值
ALERT TABLE persons MODIFY Age int NOT NULL; 添加约束
ALERT TABLE persons MODIFY Age int NULL; 删除约束
UNIQUE -- 保证某列的每行必须有唯一的值。
ID int NOT NULL UNIQUE; SQL
CONSTRAINT uc_PersonID UNIQUE (name); MySQL命名约束
ALERT TABLE Persons ADD UNIQUE (name);创建约束
ALERT TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (name); 命名约束并定义多个列约束
ALERT TABLE Persons DROP INDEX uc_PersonID; MySQL
ALERT TABLE Persons DROP CONSTRAINT uc_PersonID; SQL
PRIMARY KEY -- NOT NULL 和 UNIQUE 的结合。
每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。PRIMARY KEY (name);
ID int NOT NULL PRIMARY KEY;
CONSTRAINT pk_PersonID PRIMARY KEY (ID,name); MySQL命名约束
ALERT TABLE Persons ADD PRIMARY KEY(name);创建约束
ALERT TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY(name);
ALERT TABLE Persons DROP PRIMARY KEY; MySQL
ALERT TABLE Persons DROP CONSTRAINT pk_PersonID; SQL
FOREIGN KEY - 一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
CREATE TABLE orders (PRIMARY KEY (OID),FOREIGN KEY (PID) PEFERENCES Persons (PID));
CREATE TABLE orders ( OID int NOT NULL PRIMARY KEY, PID int FOREIGN KEY PEFERENCES Persons(PID) );
PRIMARY KEY (OID),CONSTRAINT fk_PerOrders FOREIGN KEY (PID)
PEFERENCE Persons(PID); 命名
ALERT TABLE Orders ADD FOREIGN KEY (name) PEFERENCE Persons(name);
ALERT TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (name) PEFERENCE Persons (name);
ALERT TABLE Persons DROP FOREIGN KEY fk_PerOrders; MySQL
ALERT TABLE Persons DROP CONSTRAINT fk_PerOrders; SQL
SQL教程的更多相关文章
- 郝斌老师的SQL教程
时隔两年,重拾数据库编程.郝斌老师的sql教程通俗易懂,用作复习简直不能太赞.
- SQL 教程
SQL 教程 http://www.w3school.com.cn/sql/
- 请推荐一本SQL教程
sql系列教程如下 sql教程 SQL 是用于访问和处理数据库的标准的计算机语言. 在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据, 这类数据库包括:mysql.SQL Server ...
- SQL 教程数据库包括:Oracle, Sybase, SQL Server, DB2, Access 等等,您将学到如何使用 SQL 访问和处理数据系统中的数据
SQL 基础教程 SQL 教程 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL in ...
- 学习笔记之SQL 教程
SQL 教程 | 菜鸟教程 http://www.runoob.com/sql/sql-tutorial.html SQL,指结构化查询语言,全称是 Structured Query Language ...
- w3c上的SQL 教程---基本语法 语句学习
SQL 教程路径:http://www.w3school.com.cn/sql/index.asp
- SQL-W3School-基础:SQL 教程
ylbtech-SQL-W3School-基础:SQL 教程 1.返回顶部 1. SQL 是用于访问和处理数据库的标准的计算机语言. 在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据, ...
- SQL 教程学习进度备忘
书签:跳过:另外跳过的内容有待跟进 __________________ 学习资源:W3School. _________________ 跳过的内容: 1. “SQL select”底部的“ AD ...
- [SQL] SQL学习笔记之基础操作
1 SQL介绍 SQL 是用于访问和处理数据库的标准的计算机语言.关于SQL的具体介绍,我们通过回答如下三个问题来进行. SQL 是什么? SQL,指结构化查询语言,全称是 Structured Qu ...
- W3Cschool菜鸟教程离线版下载链接
请在电脑上打开以下链接进行下载w3cschool 离线版(chm):http://pan.baidu.com/s/1bniwRCV(最新,2014年10月21日更新)w3cschool 离线版(htm ...
随机推荐
- 黑马程序员Javaweb综合案例错误总结整理
案例整理(呕心沥血的教训) 其他的我大部分还是不知道那里出了问了,我这个新建的项目must3终于成功了 那个品牌名称和企业名称没有,是要在BrandMapper里加注解@ResultMap 一直报那个 ...
- 浪潮QQ群成员提取器 V2022
浪潮QQ群成员提取软件 V2021 最新升级版 使用扫描安全登录QQ,批量获取群列表,然后在读取指定群的群成员列表支持过滤群主.群管理员 支持按最后发言时间提取活跃用户 支持识别僵尸粉和过滤可以导出文 ...
- mybatis-plus逻辑删除deleted
项目中数据库表设计原则用到了逻辑删除:数据本身没有被删除,只是将deleted字段设置为1 mybatis-plus在逻辑删除方面的设置如下: mybatis-plus: configuration: ...
- wpf dataGrid 获取单元格,并对单元格中的对象操作
先上图: 要求:对第一行的"选项内容举例..."的控件进行隐藏,如下: 前端代码: <Window x:Class="DataGridPractice.MainWi ...
- c++基础: uint8_t uint16_t uint32_t uint64_t size_t ssize_t数据类型
https://blog.csdn.net/lzx_bupt/article/details/7066577 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个 ...
- 用字典代替'if-elif-else'
在实际应用中,我们经常会需要采用if-elif-else控制语句以根据不同条件,作出不同的操作.if-elif-else固然可以,但是它也存在冗余的缺点,特别是当条件较多时这一缺点尤为明显.因此,本文 ...
- 摹客演示Axure原型,适配更丰富机型
Hi!各位小伙伴!又到了摹客的新功能播报时间.本次更新,对Axure原型的演示进行了优化,支持预览不同分辨率的布局:在设计规范方面,非编辑者的界面标识也更加清晰:另外还有一些细节体验的优化.下面就一起 ...
- 整数中出现1的次数(从1到n整数中1出现的次数)
offer_31 概要:整数中出现1的次数(从1到n整数中1出现的次数) 题目描述 求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有 ...
- 在MyBatis-Plus整合dynamic-datasource @DS失效
因为是事务导致的 解决方案: 1.删除事务 2.使用分布式事务 3.修改事务的传播机制 3.使用DS的本地事务 @DSTransactional 但切记不可和Spring的事务共存 附传播机制 事务传 ...
- ORACLE备份脚本(4-RMAN1级增量备份)
创建目录 mkdir -p /bak/level1 mkdir -p /bak/arch1 chown -R oracle:oinstall /bak/ vi rmanlevel1.sh ...