复习了下常规的sql语句,主要以适用mysql为主。
一. 基础语句
1、创建数据库demo
CREATE DATABASE demo;
2、选择数据库demo
use demo;
3、创建数据表(create table)
CREATE TABLE table_name (
column_name1 data_type(size),
column_name2 data_type(size),
....
);
4、查看表
show tables from database_name;
5、查看列属性
SHOW COLUMNS FROM table_name;
6、在已有的表中添加、删除或修改列(ALTER TABLE)
添加列
ALTER TABLE table_name ADD column_name datatype;
修改列(元素属性)
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
删除列
ALTER TABLE table_name DROP COLUMN column_name;
7、删除表
DROP TABLE table_name;
8、增相关
向表中插入新记录(INSERT INTO)
无需指定要插入数据的列名,只需提供被插入的值即可
INSERT INTO table_name VALUES (value1,value2,value3,...);
需要指定列名及被插入的值
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
9、查相关
从数据表中选取数据(SELECT)
SELECT column_name,column_name FROM table_name;
SELECT * FROM table_name;
从数据表中选取唯一的数据(SELECT DISTINCT )
SELECT DISTINCT column_name,column_name FROM table_name;
过滤记录(WHERE )
SELECT column_name,column_name FROM table_name
WHERE column_name operator value;
基于一个以上的条件对记录进行过滤(AND & OR)
AND
SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
OR
SELECT * FROM Websites WHERE country='USA' OR country='CN';
按照一个列或者多个列对结果集进行排序(ORDER BY)
SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC|DESC;
10、改相关
更新表中的记录(UPDATE)
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value; //和WHERE一起使用,不然会导致所有数据都被更新
11、删相关
删除表中的记录(DELETE)
DELETE FROM table_name WHERE some_column=some_value;
二. SQL 通配符(用于搜索表中的数据)
%
替代 0 个或多个字符
_
替代一个字符
[charlist]
字符列中的任何单一字符
[^charlist] 或 [!charlist]
不在字符列中的任何单一字符
三. drop和delete
删除数据库、表、表的列用drop
表中删除数据用delete
四. SELECT limit
规定要返回的记录的数目
SELECT column_name(s) FROM table_name LIMIT number;
五. 关联查询
1、笛卡尔积(多种写法)
SELECT * FROM tableA CROSS JOIN tableB;
select * from tableA nature join tableB;
select * from tableA natura join tableB
2、内连接(交集)
INNER JOIN
SELECT * FROM tableA LEFT JOIN tableB ON tableA.typeId=tableB.id;
3、左连接(交集+左表剩下的数据)
LEFT JOIN
select * from tableA left join tableB on tableA.id=tableB.id;
4、右连接(交集+右表剩下的数据)
RIGHT JOIN
select * from tableA right join tableB on tableA.id=tableB.id;
5、外连接(并集:交集+左表剩下的数据+右表剩下的数据)
OUTER JOIN
mysql不支持,通过union合并左右连接来实现
select * from tableA left join tableB on tableA.id=tableB.id union select * from tableA right join tableB on tableA.id=tableB.id;
6、USING子句
USING的功能相当于ON,区别在于USING指定一个属性名用于连接两个表,而ON指定一个条件(返回结果会将条件列去重)
select * from tableA inner join tableB using(id);
7、自然连接(using子句简化版,会找出两个表中相同的列进行连接)
NATURAL JOIN
select * from tableA natural join tableB;
六. UNION
1、UNION 操作符用于合并两个或多个 SELECT 语句的结果集
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
2、UNION 操作符选取不同的值。如果允许重复的值,使用 UNION ALL
七. IN
1、IN 操作符允许您在 WHERE 子句中规定多个值
2、SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);
一般嵌套查询会用IN或者直接(括号作为一个整体)(不推荐使用),先运行在嵌套在最内层的语句,再运行外层
八. MySQL 数据类型(常用)
1.1. Text
1.1.1. CHAR(size)
- 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符
1.1.2. VARCHAR(size)
- 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符
1.1.3. TEXT
- 存放最大长度为 65,535 个字符的字符串
1.2. Number
1.2.1. INT(size)
- 带符号范围-2147483648到2147483647,无符号的范围是0到4294967295。 size 默认为 11
1.2.2. FLOAT(size,d)
- 带有浮动小数点的小数字。在 size 参数中规定显示最大位数。在 d 参数中规定小数点右侧的最大位数
1.3. Date/Time
1.3.1. DATE
- 日期。格式:YYYY-MM-DD
1.3.2. DATETIME()
- 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS
引用
https://www.runoob.com/sql/sql-syntax.html
https://www.cnblogs.com/fudashi/p/7491039.html