类型
较少文本:
-
CHAR存储定长数据,需要定义长度 -
VARCHAR存储变长数据,需要在括号里定义长度,存储效率没char高
- 字母、数字、标点符号 占用一个字节
- 中文占用三个字节
- 知道固定长度用
char,经常变化用varchar- 超过255字节用
varchar或者text
较长文本:
-
TEXT保存字符串文本 -
BLOB保存二进制文本
日期:
-
DATATIMEYYYY-MM-DD HH:MM:SS -
DATASTAMP时间戳 YYYYMMDD HHMMSS
常用语句
1. 插入INSERT
- 多行用
INSERT INTOtable_name ( field1, field2,...fieldN )VALUES( value1, value2,...valueN ), ( value1, value2,...valueN ); - 单行用
value
2. 查询SELECT
-
SELECTcolumn_name,column_nameFROMtable_name
WHEREcondition
LIMITN; -
SELECT * fromtable_nameWHEREcolumn_name = '菜鸟教程';
3. WHERE
-
WHEREcondition1AND/ORcondition2..... -
WHEREcolumn_name =(SELECT MAX(column_name) FROMtable_name
4. 更新UPDATE
UPDATE table_name SET field1=new-value1, field2=new-value2
WHERE condition;
5. 删除表中数据
DELETE FROM table_name WHERE condition;
6.LIKE
SELECT * from table_name WHERE column_name LIKE '%COM';
获取表中column_name字段中以com结尾的记录
7. UNION - 连接SELECT语句
SELECT country FROM table_name1
UNION/ UNION ALL
SELECT country FROM table_name2
ORDER BY country;
SELECT column1, column2 FROM table_name1 WHERE conditions
UNION/ UNION ALL
SELECT column1, column2 FROM table_name2 WHERE conditions
ORDER BY column_name;
-
UNION语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据) -
UNION ALL语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)
菜鸟教程
8. 连接JOIN
-
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。 -
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。 -
RIGHT JOIN(右连接): 与LEFT JOIN相反,用于获取右表所有记录,即使左表没有对应匹配的记录
left join
SELECTa.column_name, b.column_name
FROMtable_name1ASa
LEFT JOIN
table_name2ASb
ONa.column_x_name = b.column_x_name;
9. 排序 OEDER BY
-
SELECT * fromtable_nameORDER BYcolumn_nameASC; -
SELECT * fromtable_nameORDER BYcolumn_nameDESC;
10. 分组 GROUP BY
GROUP BY语句根据一个或多个列对结果集进行分组。- 在分组的列上我们可以使用
COUNT,SUM,AVG,等函数。
- 使用
GROUP BY语句 将数据表按名字进行分组,并统计每个人有多少条记录:
SELECTcolumn_name1,COUNT(*)AScolumn_name2
FROMtable_name
GROUP BYcolumn_name; -
WITH ROLLUP可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
例如我们按名字进行分组,再统计每个人登录的次数:
SELECTcolumn_name1,SUM(记录登陆次数的列)AScolumn_singinCount
FROMtable_name
GROUP BYcolumn_singinCount
WITH ROLLUP;
菜鸟教程 -
HAVING后接条件判断 #条件判断的字段必须是聚合函数返回的结果
SELECTdept,COUNT(user_name)AScount_tmpFROMtable_nameGROUP BYdeptHAVINGcount_tmp>1;









网友评论