Database---MySQL数据库基础
Structure Query Language(结构化查询语言)简称SQL
1、DDL(Data Definition Language) 数据定义语言,用来操作数据库、表、列等; 常用语句:CREATE、 ALTER、DROP 2、DML(Data Manipulation Language) 数据操作语言,用来操作数据库中表里的数据;常用语句:INSERT、 UPDATE、 DELETE 3、DCL(Data Control Language) 数据控制语言,用来操作访问权限和安全级别; 常用语句:GRANT、DENY 4、DQL(Data Query Language) 数据查询语言,用来查询数据 常用语句:SELECT
三大范式
1、第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据线;也就是说:每列的值具有原子性,不可再分割。
2、第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF)。如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。
3、第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。
创建库
create database db001;
展示库
show create database db1;
删除库
drop database db1;
切换
use db1;
查看当前使用的数据库
select database();
在操作数据表之前应使用“USE 数据库名;”指定操作是在哪个数据库中进行先关操作,否则会抛出“No database selected”错误。
create table student( id int,name varchar(255), gender varchar (10), birthday date);
查看数据表
show tables;
查看表的基本信息
show create table student;
查看表的字段
desc student;
修改表名
alter table student rename to stu;
修改字段名
alter table stu change name sname varchar(10);
修改字段数据类型
alter table stu modify sanme int;
增加字段
alter table stu add address varchar(20);
删除字段
alter table stu drop address;
删除表
drop table stu;
数据表的约束
primary key 主键:约束用于唯一标识对应的记录
foreign key 外键:外键约束
not null 非空约束
unique 唯一性约束
default 默认值约束,用于设置字段默认值
主键约束
create table student( id int primary key,name varchar(20));
非空约束
create table student (id int ,name varchar not null);
默认值约束
create table student (id int, name varchar,gendet varchar(10) default 'male');
唯一性约束
create table student(id int,name varchar unique);
外键约束
建立主表
create table student(id int primary key,name varchar(20));
建立副表
create table class(classid int primary key,studentid int);
alter table class add constraint fk_class_studntid foreign key(studentid) references student05(id);
数据一致性
主表中的数据发生变化,从表对应数据也应有相应操作
删除外键
alter table class drop foreign key fk_class_studentid;
外键约束注意
从表的外键常为主表主键
为表中字段插入数据
insert into student (id,name,age,gender) values(1,'a',18,'male')
更新表中部分数据
update student set age=19,gendet='female' where name='giegie';
更新表中全部数据
update studnet set age=20;
删除部分数据
delete from student where age=17;
删除全部数据
delete from student;
查询所有字段
select * from student;
查询指定字段
select age from student;
关系运算符查询
select * from student where age<=17;
BETWEEN ADD 关键字查询
select * from student age between 19 and 20;
ADD关键字查询
select *from student where age < 18 and gender ='female';
OR关键字查询
select *from student where age>18 or gender = 'male';
LIKE关键字
select * from student where name like 'a';
含%通配的字符串
%用于匹配任意长度的字符串
select * from student where name like 'a%';
select * from student where name like '%d';
select * from student where name like '%a%';
含有_通配符的字符串
一个_代表一个字符
select * from student where name like ' aaa__';
使用limit限制查询结果的数量
查询学生表中年纪最小的3位同学
select * from student order by age asc limit 3;
使用GROUP BY进行分组查询
表与关联的关系
一对一
一对多
多对一
关联查询
查询Java班所有学生的MySQL命令
select * from student where classid = (select cid from class where = 'Java');
关联关系删除数据
例如:从班级表中删除Java班
先删除学生表中相关联的学生,否则学生表中的cid就失去了关联
delete from student where classid = (select cid from calss where cname='Java');
delete from class where cname ='Java';
交叉连接查询(实际运用中无意义)
返回的记过是被链接的两个表中所有数据行的笛卡尔积,也称笛卡尔链接
SELECT * FROM 表1 CROSS JOIN 表2;
内连接查询
又称简单链接或自然链接,对两个表中的数据进行比较,列出条件匹配的数据行
select employee.ename,department.dname from department inner join employee
on department.did+empluyee.departmentid;
SELECT 查询字段1,查询字段2, ... FROM 表1 [INNER] JOIN 表2 ON 表1.关系字段=表2.关系字段
外连接查询
需要返回符合条件的以及左表或右表或两个表中的所有数据
SELECT 查询字段1,查询字段2, ... FROM 表1 LEFT | RIGHT [OUTER] JOIN 表2 ON 表1.关系字段=表2.关系字段 WHERE 条件
select class.cid,class.cname,student.sname from class left outer jion student on class.cid=
student.classid;
select class.cid,class.name,student.sname from class right outer join student on class.cid=
studnet.cid
子查询
一个查询语句嵌套在另一个查询语句内部
首先执行子查询中的语句,再将返回的结果作为外层查询的过滤条件
查询Лукич所在班级的信息
select * from class where cid=(select classid from student where sname='Лукич');
查询比Лукич所在班级编号还大的班级的信息
select * from class where cid>(select classid from student where sname='Лукич');
关键字EXISTS子查询
关键字后的参数可以是任意一个子查询,不返回任何数据只返回TRUE或FALSE,返回为TRUE时,外层查询执行
select * from class where exists (select * from student where sname ='Лукич');
关键字ANY子查询
表示满足其中任意一个条件就返回一个结果作为外层查询条件
select * from class where cid > any (select classid from student);
关键字ALL子查询
满足所有内层查询条件返回结果
select * from class where cid> all( select classid from student);
__EOF__

本文链接:https://www.cnblogs.com/3-DG/p/17745350.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!