微信扫一扫,找我合作
扫一扫,预览移动版

常用sql语句总结


一、基本使用:

1、连接mysql

	mysql -u root -p


2、查看mysql中有哪些数据库,并连接

    show databases;
    use database_name;


3、查看mysql数据库中存在那些表

    show tables;


4、select语法

SELECT 语句用于从数据库中选取数据,SELECT 语句用于从数据库中选取数据,结果被存储在一个结果表中,称为结果集。

select column_name,column_name from table_name;
select * from table_name;


5、select distinct语法

在表中,一个列可能会包含多个重复值,优势仅仅希望列出不同的值,此时用select distinct 语句用于返回唯一不同的值。

SELECT DISTINCT column_name,column_name  FROM table_name;
example: select distinct access_ip from access_list;


6、where、or、and语句

增加条件查询,过滤数据

SELECT column_name,column_name FROM table_name WHERE column_name operator value;


7、order by语法

ORDER BY 关键字用于对结果集进行排序,默认按照升序对记录进行排序,如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。

SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC|DESC;


8、insert into语法

用于向表中插入新记录

1、方式一,无需指定要插入数据的列名,只需提供被插入的值即可
  INSERT INTO table_name  VALUES (value1,value2,value3,...);
2、方式二,需要指定列名及被插入的值:
  INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);


9、update 语句

用于更新表中已存在的记录。

UPDATE table_name SET column1=value1,column2=value2,...  WHERE some_column=some_value;


10、delete语句

用于删除表中的行。

DELETE FROM table_name WHERE some_column=some_value;


二、高级语句使用

1、select limit rownum语句

其中,limit用于mysql,rownum用于oracle,用于规定要返回的记录的数目,使用场景用于数据分页。

1、mysql
  SELECT column_name(s) FROM table_name LIMIT number;
  example: SELECT * FROM Persons LIMIT 5;
2、oracle
  SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;
  example: SELECT * FROM Persons WHERE ROWNUM <=5;


2、like操作符

用于在 WHERE 子句中搜索列中的进行关键字匹配,用于模糊搜索查询等场景,用通配符%做匹配。

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
example: SELECT * FROM Websites WHERE name LIKE 'G%'; //匹配以G开头的所有字段
         SELECT * FROM Websites WHERE name LIKE '%G'; //匹配以G结尾的所有字段
         SELECT * FROM Websites WHERE name LIKE '%G%'; //包含有G的所有字段


3、in 操作符

用于判断在字段中包含有多个指定值的语句。

SELECT column_name(s) FROM table_name  WHERE column_name IN (value1,value2,...);
example: SELECT * FROM Websites WHERE name IN ('我是谁','你好');


4、between and 操作符

用于选取介于两个值之间的数据范围内的值,这些值可以是数值、文本或者日期。

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;


5、as 别名

可以为表名称或者列名称指定其他的名字

SELECT column_name AS alias_name FROM table_name AS alias_name;
example: select * from access_list as list order by access_time desc;


6、inner join语句,内连接

用于在两张表中关联存在至少一个匹配时返回行,可直接省略inner 。

SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name;

SQL INNER JOIN


7、left join语句,左连接

用于从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;


SQL LEFT JOIN


8、right join语句,右连接

和left join理解一样,用于从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;


SQL RIGHT JOIN


9、full outer join 全连接

只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行。

SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;

SQL FULL OUTER JOIN


10、union语句

用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;


11、select into

用于从一个表复制信息到另一个表。

SELECT * INTO newtable [IN externaldb] FROM table1;
SELECT column_name(s) INTO newtable [IN externaldb] FROM table1;
example: SELECT name, url INTO WebsitesBackup2016 FROM Websites;


12、insert into select

用于从一个表复制数据,然后把数据插入到一个已存在的表中。

INSERT INTO table2 SELECT * FROM table1;
INSERT INTO table2 (column_name(s)) SELECT column_name(s) FROM table1;


13、create database

创建数据库

CREATE DATABASE dbname;


14、create table

创建表

CREATE TABLE table_name
(
  column_name1 data_type(size),
  column_name2 data_type(size),
  column_name3 data_type(size),
  ....
);


15、sql 约束

1)NOT NULL 约束强制列不接受 NULL 值。2)UNIQUE 约束唯一标识数据库表中的每条记录。3)PRIMARY KEY 主键yue,约束唯一标识数据库表中的每条记录。4)FOREIGN KEY外键约束,指向另一个表中的 UNIQUE KEY(唯一约束的键)。5)CHECK 约束用于限制列中的值的范围。6)DEFAULT 约束用于向列中插入默认值。


16、create index

用于在表中创建索引,在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

CREATE INDEX index_name ON table_name (column_name)//多个索引
CREATE UNIQUE INDEX index_name ON table_name (column_name)//唯一索引
example: CREATE INDEX PIndex ON Persons (LastName)


17、drop

用于删除表、数据库、索引

DROP TABLE table_name
DROP DATABASE database_name
DROP INDEX index_name //oracle删除索引
ALTER TABLE table_name DROP INDEX index_name //mysql 删除索引


18、alter table

用于在已有的表中添加、删除或修改列。

ALTER TABLE table_name ADD column_name datatype//添加列
ALTER TABLE table_name DROP COLUMN column_name//删除列


19、auto increment 

用于在新记录插入表中时生成一个唯一的数字,自增数据。也可以修改值起始

ALTER TABLE Persons AUTO_INCREMENT=100


20、视图

视图是是基于 SQL 语句的结果集的可视化的表,视图包含行和列,就像一个真实的表,但是一个虚拟的表,依赖于实体表中。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。您可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。

1)创建视图

CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition;

2)更新视图

CREATE OR REPLACE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition

3)删除视图

DROP VIEW view_name


三、内置函数的使用

1、AVG

返回数值列的平均值。

SELECT AVG(column_name) FROM table_name


2、count

返回匹配指定条件的行数,null不计入。

SELECT COUNT(column_name) FROM table_name;


3、max、min

返回指定列的最大值和最小值。

SELECT MAX(column_name) FROM table_name;
SELECT MIN(column_name) FROM table_name;


4、sum

返回数值列的总数。

SELECT SUM(column_name) FROM table_name;


5、group by

用于结合聚合函数,根据一个或多个列对结果集进行分组。

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;


6、exists

运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。

SELECT column_name(s) FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);


7、ucase、lcase

把字段的值转换为大写和小写。


8、mid

用于从文本字段中提取字符。

SELECT MID(column_name,start[,length]) FROM table_name;


9、len

返回文本字段中值的长度。

SELECT LEN(column_name) FROM table_name;
SELECT LENGTH(column_name) FROM table_name;//mysql


10、round

用于把数值字段舍入为指定的小数位数。

SELECT ROUND(column_name,decimals) FROM table_name;


11、now

返回当前系统的日期和时间。


12、format

用于对字段的显示进行格式化。

SELECT FORMAT(column_name,format) FROM table_name;
阅读量(1582+)
点赞(1582)
评论列表
我要评论