SQL基本语法备忘
注:以下演示是在mysql命令行下的操作
数据库相关操作
create database mytest; --创建数据库
create database if not exists mytest; --如果mytest不存在就创建
create database `create`; --加反引号创建名字为关键字的数据库
create database mytest charset=utf8; --指定创建mytest的字符集为utf8
alter database mytest charset=gbk; --改变mytest的字符集为gbk
show databases; --显示所有的数据库
show create database mytest; --查询mytest的字符集
use mytest; #使用当前数据库
drop database mytest; --删除mytest数据库
drop database if exists mytest; --如果mytest存在就删除
注意:SQL语句对大小写不敏感
数据表的 创建、删、查
一些概念
行也叫记录,一行就是一条记录;
列也叫字段,一列是一个字段,
常用操作
/*创建数据表*/
create table teacher(
id int(4) not null primary key auto_increment, #not null 不为空; primary key 主键(写了主键可以不写not null); auto_increment自动增长
name char(20) not null,
sex char(10) not null,
addr char(20) not null default '地址不详' --default 默认值 这里的数据库字符集必须为gbk或utf8
);
/*查看所有数据表*/
show tables;
/*查看创建表*/
show create table teacher;
show create table teacher \G; -- 加上\G参数看上去清晰些
/*显示表结构*/
describe teacher;
desc teacher; --简写
/*删除表*/
drop table teacher;
drop table teacher1, teacher2, teacher3; --删除三个表
数据的操作
/*插入数据(增)*/
insert into 表名(字段名1, 字段名2) values(值1, 值2);
-----------
insert into teacher(id, name, sex, addr) values(1, 'Leo', 'Male', 'beijing'); --常规插入
insert into teacher(name, sex, addr) values('LiHua', 'Male', 'hangzhou'); --自增插入
insert into teacher(sex, name, addr) values('Female', 'Able', 'shanghai'); --插入字段可以和数据库中的字段顺序不一致,但是值和插入字段的顺序必须一致
insert into teacher values(3, 'ZhangSan', 'Male', 'guangzhou'); --插入字段是可以省略的,插入的值和数据表的字段顺序以及个数都一致
insert into teacher values(null, 'LiBai', 'Male', 'guangzhou'); --自动增长的省略插入
insert into teacher values(null, 'DuFu', 'Female', default); --默认值的省略插入
/*删除数据(删)*/
delete from 表 [where 条件]
-----------
delete from teacher where name='LiBai'; --删除李白老师的数据
delete from teacher; --将teacher表中的数据全部删除
/*更新数据(改)*/
update 表名 set 字段1=值1, 字段2=值2 where 条件
-----------
update teacher set name = 'ivan' where id = 1;
/*查询数据(查)*/
select 列名 from 表 [where 条件] [order by 排序字段 asc|desc] [limit 起始位置,获取的记录数]
-----------
select * from teacher; --查询所有老师的所有字段
select id, name from teacher; --查询id和name列的数据
select * from teacher where sex='Male'; --查询性别是男的老师
select * from teacher where sex='Male' and addr='shanghai'; --查询所有上海的男老师
select * from teacher where sex='Female' or (sex='Male' and addr='shanghai'); --查询所有女老师或上海的男老师
select * from teacher where addr='shanghai' or addr='guangzhou'; --查询所有上海和广州的老师
select * from teacher where id>=3; --查询所有id号大于等于3的老师
select * from teacher order by id desc; --按id由高到低排列
select * from teacher where sex='Male' order by id desc; --男老师按id由高到低排序
select * from teacher limit 3; --取前三条数据
select * from teacher limit 0,3; --从零开始取,取三条数据,效果同上句 (零是第一条数据)
select * from teacher order by id desc limit 3; --取出倒数三个老师的数据
其他补充
where 句子
select 你要的信息 from 数据表(或多个) where 满足的条件(条件判断)
注:where可以用于select,update或delete中
order by 句子
order by 数字 --按第几列排序。
ASC默认升序,可以不写。反之,DESC是降序。
技巧:可以使用order by "数字" , 判断数据表的字段长度。
union句子
select 你要的信息 from 数据表1 union select 你要的信息 from 数据表2
聚合函数
sum():求和
select sum(id) from teacher; --求teacher表中id和
avg():求平均值
select avg(id) from teacher; --求teacher表中id平均值
max():最大值
select max(id) from teacher; --求teacher表中最大id
min():最小值
select min(id) from teacher; --求teacher表中最小id
count():记录数
select count(*) from teacher; --求teacher表总记录数
select count(id) from teacher; --求teacher表总记录数,同上
select count(*) from teacher where sex='Male'; --求男老师人数
MySQL注释
/**/
能够插在句子中间的注释,
#
句子末尾直到该行结束,
--
句子末尾直到该行结束
注:重复的姓名要显示,使用union all
数据类型
bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
int 整形 从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节
smllint 从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。
tinyint 从 0 到 255 的整型数据。存储大小为 1 字节。
decimal(3,1) 小数;3是总位数,1是小数位数
char(10) 定长
varchar(10) 可变长度
text 大段文本
Mysql中常见的内置函数
select database(); #打印当前数据库名称
select current_user; #打印当前用户
select load_file('C:\\Windows\\System32\\drivers\\etc\\hosts'); #打印一个文件内容
select version(); 数据库版本
小技巧:into + outfile 写入文件
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单