一.基本操作语句
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
常用函数暂时想到这么多,有用到的再随时补充。