快速回顾
语句 |
语法 |
AND / OR |
SELECT column_name(s) FROM table_name WHERE condition AND|OR condition |
ALTER TABLE (add column) |
ALTER TABLE table_name ADD column_name datatype |
ALTER TABLE (drop column) |
ALTER TABLE table_name DROP COLUMN column_name |
AS (alias for column) |
SELECT column_name AS column_alias FROM table_name |
AS (alias for table) |
SELECT column_name FROM table_name AS table_alias |
BETWEEN |
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 |
CREATE DATABASE |
CREATE DATABASE database_name |
CREATE INDEX |
CREATE INDEX index_name ON table_name (column_name) |
CREATE TABLE |
CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, ……. ) |
CREATE UNIQUE INDEX |
CREATE UNIQUE INDEX index_name ON table_name (column_name) |
CREATE VIEW |
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition |
DELETE FROM |
DELETE FROM table_name (Note: Deletes the entire table!!)orDELETE FROM table_name WHERE condition |
DROP DATABASE |
DROP DATABASE database_name |
DROP INDEX |
DROP INDEX table_name.index_name |
DROP TABLE |
DROP TABLE table_name |
GROUP BY |
SELECT column_name1,SUM(column_name2) FROM table_name GROUP BY column_name1 |
HAVING |
SELECT column_name1,SUM(column_name2) FROM table_name GROUP BY column_name1 HAVING SUM(column_name2) condition value |
IN |
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,..) |
INSERT INTO |
INSERT INTO table_name VALUES (value1, value2,….)orINSERT INTO table_name (column_name1, column_name2,…) VALUES (value1, value2,….) |
LIKE |
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern |
ORDER BY |
SELECT column_name(s) FROM table_name ORDER BY column_name [ASC|DESC] |
SELECT |
SELECT column_name(s) FROM table_name |
SELECT * |
SELECT * FROM table_name |
SELECT DISTINCT |
SELECT DISTINCT column_name(s) FROM table_name |
SELECT INTO (used to create backup copies of tables) |
SELECT * INTO new_table_name FROM original_table_name or SELECT column_name(s) INTO new_table_name FROM original_table_name |
TRUNCATE TABLE (deletes only the data inside the table) |
TRUNCATE TABLE table_name |
UPDATE |
UPDATE table_name SET column_name=new_value [, column_name=new_value] WHERE column_name=some_value |
WHERE |
SELECT column_name(s) FROM table_name WHERE condition |
基本操作
1 2
| net start mysql -- 启动服务(windows命令行操作) mysql -h 地址 -P 端口 -u 用户名 -p 密码 -- 连接服务器
|
数据库操作
创建库
CREATE DATABASE[IF NOT EXISTS] 数据库名 数据库选项
查看库
SHOW DATABASES[ LIKE 'PATTERN']
修改库
ALTER DATABASE 库名 选项信息
删除库
DROP DATABASE[ IF EXISTS] 数据库名
表操作
创建表
1 2 3 4 5 6 7 8
| CREATE [TEMPORARY] TABLE[IF NOT EXISTS] [库名]表名 ( 表的结构定义 )[表选项] -- 表选项: CHARSET = charset_name -- 字符集 ENGINE = engine_name -- 存储引擎 AUTO_INCREMENT = 行数 -- 自增起始数 DATA DIRECTORY = '目录' -- 数据文件目录 INDEX DIRECTORY = '目录' -- 索引文件目录 COMMENT = 'string' -- 表注释
|
查看表
1 2 3
| SHOW CREATE TABLE 表名 -- 信息更详细 DESC 表名 -- 查看表结构 SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
|
修改表
1 2 3 4 5 6 7 8 9 10 11
| ALTER TABLE 表名 操作名 -- 操作名 ADD[ COLUMN] AFTER|First -- 增加字段 ADD PRIMARY KEY(字段名) -- 创建主键 ADD UNIQUE|INDEX [索引名] (字段名) -- 创建唯一索引或者普通索引 DROP[ COLUMN] 字段名 -- 删除字段 MODIFY[ COLUMN] 字段名 字段属性 -- 支持对字段属性进行修改,不能修改字段名(所有原有属性也需写上) CHANGE[ COLUMN] 原字段名 新字段名 字段属性 -- 支持对字段名修改 DROP PRIMARY KEY -- 删除主键(删除主键前需删除其AUTO_INCREMENT属性) DROP INDEX 索引名 -- 删除索引 DROP FOREIGN KEY 外键 -- 删除外键
|
删除表
1 2
| DROP TABLE[ IF EXISTS] 表名 TRUNCATE [TABLE] 表名
|
区别:
truncate |
delete |
删除表再创建 |
逐条删除 |
重置auto_increment的值 |
不重置auto_increment的值 |
不知道删除了几条 |
知道删除了几条 |
保留分区 |
不保留分区 |
其他表操作
1 2 3 4 5 6
| CREATE TABLE 表名 LIKE 要复制的表名 -- 复制表结构 CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名 -- 复制表的结构与数据 CHECK TABLE tbl_name [, tbl_name] ... [option] ... -- 检查表是否有错误 OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... -- 优化表 REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM] -- 修复表 ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... -- 分析表
|
数据操作
增
1 2 3
| INSERT [INTO] 表名 [(字段列表)] VALUES (值列表)[, (值列表), ...]
INSERT [INTO] 表名 SET 字段名=值[, 字段名=值, ...]
|
删
1
| DELETE FROM 表名[ 删除条件子句] -- 没有删除条件子句,则会删除全部
|
改
1
| UPDATE 表名 SET 字段名=新值[, 字段名=新值] [更新条件]
|
查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| SELECT [ALL|DISTINCT] select_expr FROM -> WHERE -> GROUP BY [合计函数] -> HAVING -> ORDER BY -> LIMIT
/* ALL|DISTINCT: ALL:显示全部,默认为ALL DISTINCT:去除重复数据 select_expr: 1.可以用 * 表示所有字段。 2.可以使用表达式(计算公式、函数调用、字段也是个表达式) 3.可以为每个列使用别名 GROUP BY: 分组子句 合计函数: 需要配合GROUP BY使用 count、sum、max、min、avg…… HAVING: 相当于命令行中的管道符 “|”,懂我意思吧 ORDER BY: 升序:ASC 降序:DESC LIMIT: 限制结果条数 */
|
常见函数
字符函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #1.length 获取参数值的字节个数 SELECT LENGTH('join'); SELECT LENGTH('张三丰') #一个汉字占三个字节;
#2.concat 拼接字符串 SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;
#3.upper、lower SELECT UPPER('john'); SELECT LOWER('JOHN');
#4.substr、substring #索引从1开始 SELECT SUBSTR('李莫愁爱上陆展元',7) out_put; #截取从指定索引处后面的所有字符 SELECT SUBSTR('李莫愁爱上陆展元',1,3) out_put; #截取从索引处开始指定字符长度的字符
#5.instr 返回子串在大字符串中的起始索引,找不到则返回0 SELECT INSTR('杨不悔爱上了殷六侠','殷六侠') AS out_put FROM employees;
#6.trim 去除两边字符 SELECT TRIM(' 张翠山 '); SELECT TRIM('a' FROM 'aaa张翠山aaa');
#7.lpad、rpad 用指定的字符左/右填充指定的长度 SELECT LPAD('殷素素',10,'*');
#8.replac 替换 SELECT REPLACE('(周芷若)张无忌爱上了周芷若','周芷若','赵敏')
|
数学函数
1 2 3 4 5
| round() #取整 ceil() #向上取整 floor() #向下取整 truncate() #截断 mod() #取余
|
日期函数
1 2 3 4 5 6 7 8 9 10 11 12 13
| now() curdate() curtime() year() mouth() mouthname() #英文月份名 day() hour() minute() second()
str_to_date('9-13-1999','%m-%d-%Y') #将日期格式的字符转化成指定格式的日期 date_fromat('2018/6/6','%Y年%m月%d日') #将日期转换成字符
|
格式符 |
功能 |
%Y |
四位年份 |
%y |
两位年份 |
%m |
月份(01,02…) |
%c |
月份(1,2…) |
%d |
日(01,02,…) |
%H |
小时(24小时) |
%h |
小时(12小时) |
%i |
分钟 |
%s |
秒 |
控制函数
1 2 3 4 5 6 7 8 9 10
| 1.if() #相当于java三目运算 if(10>5,'大','小')
2.case case 要判断的字段或表达式 when 常量1 then 要显示的值1或语句1 when 常量2 then 要显示的值2或语句2 ... else 要显示的值n或语句n end;
|
分组函数
1 2 3 4 5 6 7 8 9 10 11 12 13
| 功能:用作统计使用,又称聚合函数或统计函数
分类:sum、avg、max、min、count
特点: 1.sum、avg一般用于处理数值型 count、min、max可以处理任何类型 2.分组函数都忽略null值 3.可以和distinct搭配实现去重 select sum(distinct salary),sum(salary) from employees; 4.count函数详细介绍 select (*) from employees; //统计行数 5.和分组函数一同查询的字段要求是group by后的字段
|
参考:
w3school:https://www.w3school.com.cn/sql/sql_quickref.asp
格物:https://shockerli.net/post/1000-line-mysql-note/
javaGuide:https://snailclimb.gitee.io/javaguide/#/docs/database
尚硅谷:https://www.bilibili.com/video/BV12b411K7Zu?from=search&seid=12749719158094983926