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

tech2022-07-10  236

一.基本操作语句

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)