【SQL学习历程】2.常用的SQL语句

一.基本操作语句

SQL语句优先级:
SELECT column_name         --查找列,多列间用逗号隔开
FROM table_name            --目标表
WHERE where_condition      --过滤条件
GROUP BY colunm_name       --按列值分组
HAVING having_condition    --过滤分组
ORDER BY column_name       --按列进行排序
LIMIT limit_condition      --对结果限定
一些基本语句:
-- 1.创建数据库
CREATE DATABASE database_name

-- 2.删除数据库
DROP DATABASE database_name

-- 3.创建表
CREATE TABLE table_name(col1 type [NOT NULL] [PRIMARY KEY], col2 type[NOT NULL],...)
--根据已有的表创建新表
CREATE TABLE table_new LIKE table_old --用旧表创建新表
CREATE TABLE table_new as select col1,col2,.. FROM table_old DEFINITION ONLY --根据旧表列名创建新表

--4.删除表
DROP TABLE table_name

--5.增加一列
ALTER TABLE table_name ADD COLUMN col type

--6.对主键操作
ALTER TABLE table_name ADD PRIMARY KEY(col) --添加主键
ALTER TABLE table_name DROP PRIMARY KEY(col) --删除主键

--7.对索引操作
CREATE [UNIQUE] INDEX index_name ON table_name(col) --创建索引
DROP INDEX index_name --删除索引

--8.对视图操作
CREATE VIEW view_name AS SELECT statement --创建视图
DROP VIEW view_name --删除视图

--9.其他简单语句
SELECT * FROM table_name WHERE where_condition --单一条件查询
INSERT INTO table_name(field1,field2) VALUES (value1,value2) --插入
DELETE FROM table_name WHERE where_condition --单一条件删除
UPDATE table_name SET field1=value1 WHERE where_condition --更新
SELECT * FROM table_name WHERE field1 LIKE '%value1%' --使用like查找。
--like语句条件中,如果希望查询结尾,则使用'%value',
--希望查询开头,使用'value%',希望查询整个字段中包含的,
--使用'%value%'.此外,还有 NOT LIKE 之类的用法。
SELECT * FROM table_name ORDER BY field1,field2[DESC] --排序。其中desc是倒序排序。
SELECT COUNT AS TOTALCOUNT FROM table_name --求总数
SELECT SUM(field) AS SUMVALUE FROM table_name --求和,求平均(avg)、最大(max)、最小(min)都是一样的用法。
SP_RENAMEDB'old_name','new_name' --修改数据库名称

--表连接,使用方式在第一篇文章中写过了,这里只展示语句
SELECT A.A,A.B,B.C FROM
(SELECT A,B FROM A)C --将select的结果存在临时表C
(SELECT A,C FROM B)D
ON A.A=B.A

--表合并
SELECT * FROM
(SELECT column1 FROM A
UNION ALL 
SELECT column1 FROM B)T

--去重
SELECT DISTINCT column_name FROM table_name --罗列不同列
SELECT COUNT(DISTINCT COLUMN_name) FROM table_name -- 统计不同列个数

二.文本和时间处理函数

--文本处理函数
LEFT()      --返回串左边的字符
LENGTH()    --返回串的长度
LOCATE()    --找出串的一个子串
LOWER()     --将串转换为小写
LTRIM()     --去掉串左边的空格
RIGHT()     --去掉串右边的字符
RTRIM()     --去掉串右边的空格
SOUNDEX()   --返回串的soundex值
SUBSTRING() --返回字串的字符
UPPER()     --将串转换为大写

--时间处理函数
ADDDATE()      --增加一个日期
ADDTIME()      --增加一个时间
CURDATE()      --返回当前日期
CURTIME()      --返回当前时间
DATE()         --返回日期时间的日期部分
DATE_ADD()     --日期运算
DATE_FORMAT()  --返回一个格式化的日期或时间串
DAY()          --返回天数部分
DAYOFWEEK()    --返回一天是星期几
HOUR()         --返回小时部分
MINUTE()       --返回分钟部分
MONTH()        --返回月数部分
NOW()          --返回当前日期时间
SECOND()       --返回秒部分
TIME()         --返回日期时间时间部分
YEAR()         --返回年部分

--数值处理函数
ABS()  --绝对值
COS()  --余弦值
EXP()  --指数值
MOD()  --除的余数
PI()   --圆周率
RAND() --随机数
SIN()  --正弦
SQRT() --平方根
TAN()  --正切

三.进阶语句

--复制表(只复制结构)源表:A,新表:B
SELECT * INTO B FROM A WHERE 1<>1--或
SELECT TP 0 * INTO 

--拷贝表(拷贝数据),源表:A,新表:B
INSERT INTO B(A,B,C)SELECT D,E,F FROM A

--子查询,IN和EXIST的区别在第一篇文章中
SELECT A,B,C FROM A WHERE A IN(SELECT D FROM B)`

--RANK,DENSE RANK 和 ROW_NUMBER
SELECT *,ROW_NUMBER() OVER (condition) AS ROW_num FROM table_name
--区别在于,当排序的值相等时,row直接往下计数,rank会将相等的值计为同一序列,下一个值再加上并列的数量,
--dense则是计为同一序列后,不为并列的数量计数,因此总数会更少。

--日期计算
DATEDIFFER(enddate,startdate) --计算时间差
DATE_SUB(startdate,days) --开始日期-days
DATE_ADD(startdate,days) --开始日期+days

常用函数暂时想到这么多,有用到的再随时补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值