sql基础语句大杂烩
(坑Open Office,这排版。。。)
1、distinct列出不同值,过滤掉相同的值
例:company中有两个相同的值比如(apple和apple)时,则只取出一个值
SELECTDISTINCT
Company FROM Orders
只会列出一个apple 2、通配符
通配符 |
描述 |
---|---|
% |
替代一个或多个字符 |
_ |
仅替代一个字符 |
[charlist] |
字符列中的任何单一字符 |
[^charlist] 或者 [!charlist] |
不在字符列中的任何单一字符 |
3、BETWEEN
操作符
操作符 BETWEEN
... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
例:SELECT
* FROM Persons WHERE LastName BETWEEN
'Adams' AND
'Carter'
注:mysql会将adams与carter都放入结果集。
如需使用上面的例子显示范围之外的人,请使用
NOT 操作符:
SELECT * FROM Persons
WHERE LastName
NOT
BETWEEN 'Adams' AND 'Carter'
4、表连接
(1)LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
例:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
说明:LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。 左表会全部列出,右表有则列出,没有则空。
(2)RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
例:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
说明:RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。
(3)FULL JOIN: 只要其中一个表中存在匹配,就返回行
例:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons FULL JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
说明:FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。
(4)JOIN 、 INNER JOIN:内连接,在表中存在至少一个匹配时,INNER JOIN 关键字返回行
例:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
说明:
INNER JOIN
关键字在表中存在至少一个匹配时返回行。如果
"Persons"
中的行在
"Orders"
中没有匹配,就不会列出这些行。
5
、
union
UNION
操作符用于合并两个或多个
SELECT
语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。(w3c上:列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。 但是依据实际操作如下图好像不需要数据类型相同,待深究!)
union会过滤掉重复值,union all不会
例:SELECT E_Name FROM Employees_ChinaUNION
SELECT E_Name FROM Employees_USA
SELECT E_Name FROM Employees_ChinaUNION ALL
SELECT E_Name FROM Employees_USA
当两张表结果集对应的列名不同时,结果集中列名为第一张表列名
6、SELECT
INTO
SELECT
INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT
INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
Select
into 可以加where条件
例1、(1)SELECT
* INTO
Persons_backup FROM Persons备份整张表
(
2
)
SELECT
* INTO
Persons IN
'Backup.mdb' FROM Persons 向另外一个数据库中copy表
例2、SELECT
LastName,FirstName INTO
Persons_backup FROM Persons只拷贝某些列
例3、SELECT
Persons.LastName,Orders.OrderNo INTO
Persons_Order_Backup FROM
Persons INNER
JOIN
Orders ON
Persons.Id_P=Orders.Id_P 利用表连接copy表。
7、表约束(Constraints)
(1)not
null
(2)PRIMARY
KEY 拥有自动定义的
UNIQUE
约束
例:CREATE
TABLE Persons(
Id_P
int NOT NULL,
LastName
varchar(255) NOT NULL,
FirstName
varchar(255),
Address
varchar(255),
City
varchar(255),
UNIQUE
(Id_P)
)
如果需要命名
UNIQUE
约束,以及为多个列定义
UNIQUE
约束,请使用下面的
SQL
语法:
CREATE TABLE Persons(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)
当表已被创建时,如需在 "Id_P" 列创建 UNIQUE 约束,请使用下列 SQL:
ALTER TABLE PersonsADD UNIQUE (Id_P)
如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:
ALTER TABLE PersonsADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
如需撤销 UNIQUE 约束,请使用下面的 SQL: ALTER TABLE PersonsDROP INDEX uc_PersonID
(3)
SQL PRIMARY KEY
约束(主键)
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P)
)
如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
)
如果在表已存在的情况下为 "Id_P" 列创建 PRIMARY KEY 约束,请使用下面的 SQL:
ALTER TABLE PersonsADD PRIMARY KEY (Id_P)
如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法:
ALTER TABLE PersonsADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
如果使用
ALTER TABLE
语句添加主键,必须把主键列声明为不包含
NULL
值(在表首次创建时)。
如需撤销
PRIMARY KEY
约束,请使用下面的
SQL
:
ALTER TABLE Persons
DROP PRIMARY KEY
(4)
SQL FOREIGN KEY
约束(外键)
一个表中的
FOREIGN KEY
指向另一个表中的
PRIMARY KEY
。
例:
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
(5)SQL CHECK 约束
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
例:
CREATE TABLE Persons(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)8
、
create index(
创建索引
)
CREATE INDEX index_name
ON table_name (column_name)
创建唯一索引:CREATE UNIQUE INDEX index_name ON table_name (column_name)
创建一个名为PersonIndex的索引 CREATE INDEX PersonIndex ON Person (LastName)
如果希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC: CREATE INDEX PersonIndex ON Person (LastName DESC)
希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开: CREATE INDEX PersonIndex ON Person (LastName, FirstName)
删除索引:ALTER TABLE table_name DROP INDEX index_name
9、ALTER语句
ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
添加列:ALTER TABLE table_name ADD column_name datatype
删除列:ALTER TABLE table_name DROP COLUMN column_name
要改变表中列的数据类型,请使用下列语法: ALTER TABLE table_name ALTER COLUMN column_name datatype
sql基础语句大杂烩的更多相关文章
- T——SQL基础语句(定义变量,赋值,取值,分支,循环,存储过程)
T--SQL基础语句 1.定义变量: declare @变量名 数据类型 ; declare @a int ; declare @b nvarchar(10) ; 2.赋值: 法1:set @变量名 ...
- SQL基础语句(详解版)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/CZXY18ji/article/deta ...
- sql基础语句50条
curdate() 获取当前日期 年月日 curtime() 获取当前时间 时分秒 sysdate() 获取当前日期+时间 年月日 时分秒 */ order by bonus desc limit ( ...
- sql 基础语句
一.基础 2 31.说明:创建数据库 4Create DATABASE database-name 5 62.说明:删除数据库 7drop database dbname 8 93.说 ...
- SQL基础语句入门
SQL语句入门 起因 学校开设数据库相关的课程了,打算总结一篇关于基础SQL语句的文章. SQL介绍 SQL最早版本是由IBM开发的,一直发展到至今. SQL语言有如下几个部分: 数据定义语言DDL: ...
- SQL 基础语句整理
SQL教程 SELECT 语句 SELECT * FROM 表名称 DISTINCT 语句 SELECT DISTINCT 列名称 FROM 表名称 SELECT LastName,FirstName ...
- sql基础语句(技巧)
1.压缩数据库 dbcc shrinkdatabase(dbname) 2.转移数据库给新用户已存在用户权限 exec sp_change_users_login'update_one','newga ...
- SQL基础语句(提升)
1.复制表(只复制结构,源表名:a 新表名:b) select * into b from a where 1<>1 2.拷贝表 insert into b(a,b,c) select d ...
- sql基础语句
1.创建数据库 create database 数据库名称 2.删除数据库 drop database 数据库名称 3.备份sql server 创建备份数据的device use master e ...
随机推荐
- EDA技术与ASIC设计和FPGA开发有什么关系?FPGA在ASIC设计中有什么用途?
利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC的设计和实现:FPGA和CPLD是实现这一途径的主流器件.FPGA和CPLD通常也被称为可编程专用IC,或可编程ASIC.FPGA和C ...
- 《TCP/IP高效编程:改善网络程序的44个技巧》源码在Linux上的编译
为了先完整编译通过,需要以下几个步骤: 1.进入linux子目录,执行 make.(此步骤为打补丁.) 2.返回上一级目录,打开文件 simplec.c,添加头文件 #include <stdi ...
- PHP项目感悟 -- 从CI框架来看iOS的MVC
其实这几天一直都想找时间把这个感悟整理出来,也是这一段一直思考的问题,因为这一段参加一个PHP后台项目的开发,框架使用的是CI,随着项目的进展,对于CI接触的也越多,但是由于理解的可能并不深刻,我也只 ...
- JavaScript中String的math方法与RegExp的exec方法的区别
1.exec是正则表达式的方法,方法参数为字符串.match为字符串的方法,参数为正则表达式对象. 2.match与exec都返回数组.如果调用exec方法的正则表达式没有分组内容,则返回第一个匹配的 ...
- I am Nexus Master!(虽然只是个模拟题。。。但仍想了很久!)
I am Nexus Master! The 13th Zhejiang University Programming Contest 参见:http://www.bnuoj.com/bnuoj/p ...
- Java解析网段下包含的所有IP地址
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;impor ...
- 重启Ubuntu后Hadoop的namenode起不来的解决办法
因为Ubuntu每次重启之后都会将/tmp目录清空,而默认配置下每次hadoop name node -format总是将数据信息定位到/tmp/hadoop-${user.name}中,因此需要修改 ...
- json 对c++类的序列化(自动生成代码)
[动机] 之前写网络协议的时候,使用的是google protobuf,protobuf不但在性能和扩展性上有很好的优势,protoc自动生成c++类代码的工具,这点确实给程序员带来了很多便利. 做后 ...
- docker on centos
docker最好在centos7上安装,centos6.5上似乎麻烦不少 这里直接在centos7上安装,要提前装一下epel的repo yum install docker 安装就行 chkconf ...
- 大数据存储:MongoDB实战指南——常见问题解答
锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...