SQL笔记之开天辟地

order by 和 group by 是不一样的

TIPS

order by 和 group by 是不一样的

通用用法

调用
	select [distinct]from[where 列 运算符 值] [order by1,列2 [desc]]
			去重复					筛选				排序            逆序
插入
	INSERT INTO 表名称 VALUES "值1, 值2,...."
	INSERT INTO table_name (1,2,...) VALUES (1,2,....)

修改
	UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

删除
	DELETE FROM 表名称 WHERE 列名称 =DELETE FROM'等效于'     DELETE * FROM 表 

极值
	SELECT TOP 数字|百分比 列 FROM 表
MySQL
	SELECT column_name(s)
	FROM table_name
	LIMIT m,n     从m+1开始保留n个,m可以不要
Oracle
	SELECT *
	FROM Persons
	WHERE ROWNUM <= 5

LIKE 
	WHERENOT LIKE '%a'或者'a%'或者'%a%'
	WHERELIKE '%a'或者'a%'或者'%a%'

IN
	WHEREIN (value1,value2,...)

BETWEEN    包头不包尾**不同数据库不一样!!!!!!!!!!!!!!
	BETWEEN value1 AND value2
	
SQL Alias  表列别名创建
表:便于查找
	SELECT alias_name.column_name(s)
	FROM table_name
	AS alias_name
列:修改输出列名
	SELECT column_name AS alias_name
	FROM table_name

双表引用:
法1
	SELECT1.1,1.2,.1
	FROM1,2
	WHERE Persons.Id_P = Orders.Id_P 
法2
JOIN	互补信息
	FROM1 JOIN2 ON1.XXX=2.XXX

JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
INNER JOINJOIN没有区别

SQL UNION 合并select输出的结果  
	SELECT column_name(s) FROM table_name1
	UNION "ALL"
	SELECT column_name(s) FROM table_name2
UNION	选取不同的值
UNION ALL  可以重复

SELECT INTO 选择拷贝
	SELECT 列名
	INTO new_table_name [IN externaldatabase] 
	FROM old_tablename

CREATE DATABASE 创建数据库
	CREATE DATABASE database_name

通配符

通配符描述
%替代一个或多个字符
_仅替代一个字符
[字符]字符列中的任何单一字符
[^字符] 或者 [!字符]不在字符列中的任何单一字符

CREATE TABLE 创建表

CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
数据类型描述
integer(size)

int(size)

smallint(size)

tinyint(size)
仅容纳整数。在括号内规定数字的最大位数。
decimal(size,d)

numeric(size,d)
容纳带有小数的数字。

“size” 规定数字的最大位数。“d” 规定小数点右侧的最大位数。
char(size)容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

在括号中规定字符串的长度。
varchar(size)容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

在括号中规定字符串的最大长度。
date(yyyymmdd)容纳日期。

SQL约束

跟在数据类型后头限定数据格式、要求等

NOT NULL

不接受NULL,必须包含值,否则无法继续更新

UNIQUE

提供为唯一性保证

3种形式:
CREATE TABLE Persons
(
Id_P int UNIQUE
UNIQUE(Id_P,其他也可以)
)
建立后
ADD UNIQUE(Id_P)

增加限制名称
ADD CONSTRAINT 限制名称 UNIQUE (Id_P)
撤销
MySQL:
	ALTER TABLE Persons
	DROP INDEX uc_PersonID
SQL Server / Oracle / MS Access:
	ALTER TABLE Persons
	DROP CONSTRAINT uc_PersonID

PRIMARY KEY 主键

主键:必须是唯一值,不能是NULL
必须有且唯一
NOT NULL 限制是必须的
其实就是成行定位基准

MySQL:
	尾部接
	PRIMARY KEY (Id_P)
SQL Server/ Oracle/MS Access:
	Id_P int NOT NULL PRIMARY KEY

定义约束名:
CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)


添加:使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)
	ALTER TABLE Persons
	ADD PRIMARY KEY (Id_P)

	ALTER TABLE Persons
	ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
撤销:
MySQL:
	ALTER TABLE Persons
	DROP PRIMARY KEY
	
SQL Server / Oracle / MS Access:
	ALTER TABLE Persons
	DROP CONSTRAINT pk_PersonID

这上面就很矛盾一下就说必须要建立主键,后面又能添加就很扯

FOREIGN KEY

CHECK

DEFAULT

函数

建立方式

SELECT function() FROM

简单函数

MS Access:
函数描述
AVG(column)返回某列的平均值
COUNT(column)返回某列的行数(不包括 NULL 值)
COUNT(*)返回被选行数
FIRST(column)返回在指定的域中第一个记录的值
LAST(column)返回在指定的域中最后一个记录的值
MAX(column)返回某列的最高值
MIN(column)返回某列的最低值
STDEV(column)
STDEVP(column)
SUM(column)返回某列的总和
VAR(column)
VARP(column)
SQL Server :
函数描述
AVG(column)返回某列的平均值
BINARY_CHECKSUM
CHECKSUM
CHECKSUM_AGG
COUNT(column)返回某列的行数(不包括NULL值)
COUNT(*)返回被选行数
COUNT(DISTINCT column)返回相异结果的数目
FIRST(column)返回在指定的域中第一个记录的值(SQLServer2000 不支持)
LAST(column)返回在指定的域中最后一个记录的值(SQLServer2000 不支持)
MAX(column)返回某列的最高值
MIN(column)返回某列的最低值
STDEV(column)
STDEVP(column)
SUM(column)返回某列的总和
VAR(column)
VARP(column)
MS Access 中的 Scalar 函数
函数描述
UCASE©将某个域转换为大写
LCASE©将某个域转换为小写
MID(c,start[,end])从某个文本域提取字符
LEN©返回某个文本域的长度
INSTR(c,char)返回在某个文本域中指定字符的数值位置
LEFT(c,number_of_char)返回某个被请求的文本域的左侧部分
RIGHT(c,number_of_char)返回某个被请求的文本域的右侧部分
ROUND(c,decimals)对某个数值域进行指定小数位数的四舍五入
MOD(x,y)返回除法操作的余数
NOW()返回当前的系统日期
FORMAT(c,format)改变某个域的显示方式
DATEDIFF(d,date1,date2)用于执行日期计算
AVG()
	SELECT AVG(column_name) FROM table_name
	SELECT AVG(OrderPrice) AS OrderAverage FROM Orders
	SELECT Customer FROM Orders
	WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值