MySQL基础命令
一)基础命令
1)对数据库的操作
1.使用
use 库名;
2.创建
create database 库名;
3.删除
drop database 库名;
4.显示数据库,表
show databases;
show tables;
2)对数据表的操作
1.创建表
create table 表名(字段 字段类型,id int,name varchar(32));
2.删除表
drop table 表名;
3.修改表名
alter table 旧name rename 新name;
4.查看表的基本结构
describe 表名;
3)对数据的操作
1.添加数据
insert into 表名(字段,id,name)values(值,1,“zl”);
2.修改数据
update 表名 set 字段=新值 where id=1(条件);
3.删除数据
delete from 表名 where 条件;
4)对表的字段的操作
1.修改字段名
alter table 表名 change 旧字段名 新字段名 新数据类型;
2.修改字段数据类型
alter table 表名 modify 字段名 数据类型;
3.添加字段
alter table 表名 add 新字段名 数据类型 [约束条件] [first|after] 已存在字段名;
4.删除字段
alter table 表名 drop 字段名;
二)约束
NOT NULL 约束:确保某列不能有 NULL 值。
DEFAULT 约束:当某列没有指定值时,为该列提供默认值。
UNIQUE 约束:确保某列中的所有值是不同的。
PRIMARY Key 约束:唯一标识数据库表中的各行/记录。
CHECK 约束:CHECK 约束确保某列中的所有值满足一定条件。
1)常用约束
唯一约束:unique
非空约束:not null
默认约束:default ’值‘
注意:值为字符串型使用单引号,为整型则不需要加任何符号;若加的是中文默认值,则需加上 default charset=utf8
例如:
CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22) not null unique,
sex VARCHAR(2) DEFAULT '男'
) DEFAULT CHARSET=utf8;
2)主键约束【primary key】
定义列同时:id int primary key
定义列之后:primary key(id)
多字段联合主键:primary key(字段1,字段2)
3)外键约束【foreign key】
语法:[CONSTRAINT 外键名] FOREIGN KEY 字段名 REFERENCES 主表名(主键名)
例如;
CREATE TABLE t_dept
(
deptId INT PRIMARY KEY,
name VARCHAR(22),
location VARCHAR(50)
);
CREATE TABLE t_emp
(
id INT PRIMARY KEY,
name VARCHAR(22),
deptId INT,
CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES t_dept(deptId)
);
4)检查约束【check】
语法:constraint check_name check(条件)
例:创建一个学生表
create table students(
id int primary key,
name varchar(32),
gender varchar(10),
birthday date,
constraint ck_gender check(gender='男' or gender='女')
);
5)删除约束
alter table 表名 drop constraint 约束名;
三)查询语句
1)单表查询+条件查询
select *from 表名;
select 字段1,字段2 from 表名;
select 字段名 from 表名 where 字段名 in (n1,n2,n3);【括号内的数字必须为INT型】
select 字段名 from 表名 where 字段名 not in (n1,n2,n3);【除了括号中出现内容外的所有内容】
select 字段名 from 表名 where 字段名 between n1 and n2;
select 字段名 from 表名 where 字段名 not between n1 and n2;
select * from 表名 where 字段名 is null;【查询空值】
select distinct 字段名 from 表名;【去除重复结果】
select * from 表名 where 条件1 and 条件2;【多条件查询】
select * from 表名 where 条件1 or 条件2;
2)排序查询
select * from 表名 where 条件 order by 字段名 desc;【desc:降序,asc:升序】
例:要求显示所有雇员的信息,按照工资由高到低排序,若工资相等,则按照雇佣日期由早到晚排序
SELECT* FROM emp ORDER BY sal DESC,hiredate asc;
3)模糊查询
select 字段名 from 表名 where 字段名 like "%";【任意通配符】
select 字段名 from 表名 where 字段名 like "_";
注意:
百分号通配符%:可以匹配任意长度的字符,甚至包括零字符
下划线通配符_:只能模糊匹配1个字符
select * from 表名 limit 偏移量,记录数;
例如:
查询班级中第2名到第5名的学生信息
select * from tb_score order by score desc limit 1,4;
4)分组查询
语法:
SELECT 分组字段,统计函数
FROM 表名称1 别名,表名称2 别名,....
[WHERE 条件(s)]
[GROUP BY 分组字段 [having 条件]]
[ORDER BY 排序字段 ASC | DESC,排序字段 ASC | DESC] ;
筛选关键字where 或 having两者区别:
HAVING可以使用统计函数,而WHERE不能使用;
WHERE属于第一次的筛选,而HAVING属于对分组后的数据的第二次筛选
注意:一般情况下,group by都和聚合函数一起使用
例:
-- 查询男女学生的人数(分组和聚合函数)
select gender,count(*) from students group by gender;
5)连接查询:【join on】
1-内连接查询
语法:from 表1 join 表2 on 表1.字段名=表2.字段名
2-外连接查询
类型:左外连接查询和右外连接查询;
语法:from 表1 left/right [outer] join 表2 on 表1.字段=表2.字段
3-全外连接自然连接 FULL JOIN:根据连接条件进行连接,如果连接不上的,左右表记录为null,不丢弃数据
例:三表查询
-- 查询学生姓名、所选课程名称和成绩(连接查询)
-- 写法1:
select students.name,course.cname,score.mark from students
join score on students.id=score.id
join course on course.cnumber=score.cnumber;
-- 写法2:
select students.name,course.cname,score.mark from score
join course on course.cnumber=score.cnumber
join students on students.id=score.id;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下