常用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;
7、left join语句,左连接
用于从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
8、right join语句,右连接
和left join理解一样,用于从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;
9、full outer join 全连接
只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行。
SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;
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;