MySQL基本sql语句总结
2024-10-12 20:29:45
约束
主键约束
- primary key
- primary key(字段名...)
外键约束
constraint fk_table1_table2 foreign key(字段) references table2(字段)
其它约束
- unique
- not null
- default
- auto_increment
CREATE TABLE t_emp(
id INT PRIMARY KEY auto_increment,
name VARCHAR(22) not null unique,
sex VARCHAR(2) DEFAULT '男'
) DEFAULT CHARSET=utf8;
表操作
查看表结构与修改表名
查看数据表基本结构
desc 表名
查看数据表详细结构
show create table 表名 \G
不仅可以返回给我们建表时所写的详细语句,而且还可以查看存储引擎和字符编码
修改表名
ALTER TABLE 旧表名 RENAME 新表名;
修改字段名与字段数据类型
修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
修改字段数据类型
ALTER TABLE 表名 MODIFY 字段名 数据类型;
添加与删除字段
- first 在表的第一列添加字段
- after 在表的指定列后添加字段
- drop 删除字段
修改字段的排列位置
ALTER TABLE 表名 MODIFY 字段1 数据类型 FIRST|AFTER 字段2;
删除表的外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;
增删改
插入数据
INSERT INTO 表名 (字段名) VALUES (内容), (内容), (内容)...;
更新数据
UPDATE 表名 SET 字段名1 = 内容1, 字段名2 = 内容2, 字段名3 = 内容3 WHERE 过滤条件;
删除数据
DELETE FROM 表名 WHERE 条件语句;
清空表
TRUNCATE 表名
查询
单表查询
SELECT 字段名 FROM 表名;
带in关键字的查询
SELECT 字段名 FROM 表名 WHERE 字段名 (not) IN (n1,n2,n3,...);
范围查询
SELECT 字段名 FROM 表名 WHERE 字段名 (not) BETWEEN n1 AND n2;
带like的字符匹配查询
- 使用通配符
%
模糊匹配数据内容(百分号通配符%
可以匹配任意长度的字符,甚至包括零字符。)
SELECT 字段名 FROM 表名 WHERE 字段名 LIKE '字符%';
- 使用通配符
_
模糊匹配数据内容(下划线通配符_
只能模糊匹配1个
字符。)
SELECT 字段名 FROM 表名 WHERE 字段名 LIKE '字符_';
- 使用通配符
查询空值与去除重复结果
int (not) null
去重
SELECT DISTINCT 字段名 FROM 表名;
带 AND 与 OR 的多条件查询
SELECT 字段名 FROM 表名 WHERE 表达式1 AND / OR 表达式2;
对查询结果进行排序
SELECT 字段名 FROM 表名 ORDER BY 字段名 [ASC[DESC]];
分组查询
SELECT 字段名 FROM 表名 GROUP BY 字段名;
限制查询
SELECT 字段名 FROM 表名 LIMIT [OFFSET,] 记录数;
第一个参数,
OFFSET
,可选参数,表示偏移量第二个参数,记录数,表示返回查询结果的条数
连接查询
内连接查询
表1 [inner] join 表2 on 表1.字段=表2.字段
外连接查询
表1 left/right [outer] join 表2 on 表1.字段=表2.字段
子查询
带比较运算符的子查询
eg:
select name, age from tb_emp where age > (select avg(age) from tb_emp);
关键字子查询
tb_salary
id position salary 1 Java 8000 2 Java 8400 3 Java 9000 4 Python 6500 5 Python 10000 #1.使用 ALL 关键字进行查询
select position, salary from tb_salary where salary > all (select salary from tb_salary where position = 'Java');
#2.使用 ANY 关键字进行查询
select position, salary from tb_salary where salary > any (select salary from tb_salary where position = 'Java');
#3.使用 IN 关键字进行查询
select position, salary from tb_salary where position in ('Java');
视图
创建视图
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
删除视图
DROP VIEW view_name;
最新文章
- 去掉tableView的header view的粘黏性
- hdu 5692 Snacks 线段树+dfs
- Webpack打包进阶
- IOS第三方字体
- struts2拦截器拦截成功后每次请求都出现拦截时的错误信息
- Objective-C的内省(Introspection)小结
- JavaScript DOM高级程序设计 5动态修改样式和层叠样式表1(源代码)--我要坚持到底!
- 【USACO 1.2.5】双重回文数
- python 中的input()和raw_input()功能与使用区别
- Ftplib模块的用法
- 洛谷 P1055 ISBN号码【字符串+模拟】
- 【死磕 Spring】----- IOC 之 加载 Bean
- python算法&;二分查找法
- 《AngularJS入门与进阶》图书简介
- Pytorch中的squeeze()和unsqueeze()函数
- sass那些事儿
- Linux运维工程师必学必备的8项IT技能
- socketserver实例化过程
- Guid 几种格式化
- pta 习题集5-19 列车厢调度
热门文章
- [刷题] 279 Perfect Squares
- Linux命令nohup实现命令后台运行并输出到或记录到日志文件
- CentOS 7.6 操作系统 安装指导书 (鲲鹏920处理器) 01
- 马哥Linux--elasticsearch
- Cron 定时任务命令-配置文件详解
- addrinfo结构体原型-(转自 cxz2009)
- MyBatisPlus详细总结记录
- unity inputfield 过滤emoji输入
- Java枚举类与注解详解——一篇文章读懂枚举类与注解详
- [leetcode] 90. 子集 II.md