SQL基础知识汇总

参考:https://mp.weixin.qq.com/s/RCoROHY7C4oFVq0lUhzPwg

SQL运行先后顺序

(8)SELECT (9)DISTINCT (11)[Top Num][select list]
(1)FROM [left_table]
(3)[join_type]JOIN [right_table]
(2) ON [join_condition]
(4)WHERE [where_condition]
(5)GROUP BY [group_by_list]
(6)WITH [CUBE | RollUP]
(7)HAVING [having_condition]
(10)ORDER BY [order_by_list]

SELECE

select column_name from table_name

DISTINCT

distinct用于返回唯一不同的值
select distince column_name from table_name
例:
select distince Company from Orders

TOP/LIMIT/WHERE

规定要返回的记录的数目
SQL Server:
select Top number|percent column_name(s) from table_name
例:
select Top 2 * from Persons
select Top 50 percent from Persons

MySQL:
select column_name(s) from table_name limit number
例:
select * from Persons limit 5

Oracle:	
select column_name(s) from table_name where rownum<=number
例:
select * from Persons where rownum<=5

WHERE

select column_name from table_name where column_name  operator valuse
例:
select * from renrendai where title='装修'
select * from renrendai where months=6
select * from renrendai where officeType like '%机关'
select * from renrendai where amount between 2000 and 4000
operator名称
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于
between在某个范围内
like搜索某种模式

OR/AND

在where子句中将多个条件结合

ORDER BY

用于升序或降序对结果集进行排序
select column1,column2,... from table_name order by column1,column2,...ASC|DESC
select * from Customers order by '省份' ASC,'姓名' DESC

INSERT INTO

insert into table_name (column1,column2,...) values (value1,value2,...)
insert into table_name values (value1,value2,...)

Auto_increment

alter tabel table_name Modify acctid int(11) Auto_incrementame
对于自动递增字段,在将新纪录插入到表中时自动生成

UPDATE

update table_name set column1=value1,column2=value2,... where condition

DELETE

delete from table_name where condition

LIKE

select column1,column2,... from table_name where column like pattern

通配符

通配符解释
%表示0个,1个或多个字符
_表示单个字符
[charlist]定义要匹配的字符的集合和范围 MS Access/SQL Server
[!charlist]or[^charlist]定义不匹配的字符的集合和范围 MS Access/SQL Server

IN

select  column_name(s) from table_name where column_name in (value1,value2,...)
select  column_name(s) from table_name where column_name in (select statement)
例:
select * from renrendai where amount in(select amount from test1)

BETWEEN

select  column_name(s) from table_name 
	where column_name between value1 and value2
例:
select * from rrenrendai 
	where (amount between 1000 and 2000) AND not position in ('公务员','管理人员')

SQL通用数据类型

这里写图片描述

创建新数据库

CREATE DATABASE deldb

创建新表

CREATE TABLE test1(
	NAME VARCHAR(10),
	age INT(3),
	birthday DATE,
	POSITION VARCHAR(50)
	)

插入列

ALTER TABLE test1 ADD userid INT

删除列

ALTER TABLE test1 DROP COLUMN age

创建索引

CREATE INDEX id ON test1 (userid)

重命名

SELECT POSITION AS address FROM test1##??这个是什么数据库的语法

重命名列名称

ALTER TABLE test1 CHANGE POSITION address VARCHAR(50) #MySQL数据库

重命名表名称

RENAME TABLE test1 TO Users

创建视图

CREATE VIEW lookview AS SELECT nickName FROM renrendai 
	WHERE gender='女' AND amount>400000

这里写图片描述

删除一条记录

DELETE FROM test1 WHERE LoanId=2000003

删除全部记录

DELETE FROM account

删除表

DROP TABLE stu

删除INDEX索引

ALTER TABLE users DROP INDEX id

group by分组

SELECT AVG(amount),AVG(sumCreditPoint),marriage FROM renrendai 	
	WHERE POSITION IN ('公务员','管理人员') 
	GROUP BY marriage HAVING marriage!='null'

这里写图片描述

INNER JOIN内连接

SELECT * FROM USER INNER JOIN account ON user.`acctid`=account.`acctid`

这里写图片描述

LEFT JOIN左连接

SELECT *FROM USER 
	LEFT JOIN account ON user.`acctid`=account.`acctid`

这里写图片描述

right join右连接

SELECT * FROM USER 
	RIGHT JOIN account ON user.`acctid`=account.`acctid` 
	ORDER BY money DESC

这里写图片描述

full join全连接 (MySQL没有)

SELECT * FROM USER 
	FULL JOIN account ON user.`acctid`=account.`acctid`

建立新表

INSERT INTO newtable (acctid,NAME,age,address)
	SELECT * FROM USER 
	WHERE acctid BETWEEN 14 AND 16

这里写图片描述

清空表

TRUNCATE TABLE newtable

去重并集

SELECT (acctid) FROM USER 
	UNION SELECT (acctid) FROM account

这里写图片描述

不去重并集

SELECT (acctid) FROM USER 
	UNION ALL SELECT (acctid) FROM account

这里写图片描述

更新

UPDATE USER SET NAME='zhang'WHERE acctid =16

IS NULL

SELECT * FROM USER WHERE NAME IS NULL

这里写图片描述

IS NOT NULL

SELECT * FROM  USER WHERE NAME IS NOT NULL

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值