MySql的DDL和DML和DQL的基本语法

DDL数据定义语言

定义和管理数据对象,如数据库,数据表等。

  • 操作数据库
create datebase 库名;  -- 建库
drop datebase 库名;    -- 删库
show datebases;        -- 查看库
use 库名;              -- 使用库
  • 操作数据表

查看表

show tables;            -- 查看库中所有表
show create table 表名; -- 查看表结构
drop table 表名;        -- 删除表

新建表:新建一个student学生表

create table student(
	sid int primary key auto_increment,
	sname varchar(10) comment '学生姓名',
	ssex char(1) comment '学生性别',
	birthday datetime comment '学生生日',
	classid int comment '学生班号'
)

修改表结构:alter table

-- 将表student名改为stu
alter table student rename as stu;
-- 添加省份字段
alter table stu add shengfen varchar(10) comment '省份';
-- 删除省份字段
alter table stu drop shengfen;
-- 修改sname字段
alter table stu modify sname varchar(20);
-- 修改ssex字段,可修改字段名
alter table student change ssex sex char(2);

DML数据操作语言

对数据库对象中所包含的数据进行增、删、改等操作。

  • 数据新增:insert
    语法:INSERT INTO 表名 [(字段1,字段2,…字段n)] VALUES/VALUE (‘值1’,…‘值n’)[,(‘值1’,…‘值n’)…];
-- 全字段插入可以不写字段名
insert into student values(8,'王五','1999-1-1','男',1);
-- 添加一个学生
insert into student (sid,sname,birthday,ssex,classid) 
		values (1,'张三','1988-2-2','男',1);
-- 一次性插入多条数据
insert into student(sname)values("赵雷"),("浅米"),("天天");
  • 数据删除:delete
-- 删除表中sid为2的学生
delete from student where sid=2 ;
-- 删除表中所有数据(只删除数据,不影响索引)
delete from 表名;
-- 清空表(删除数据和索引)
truncate 表名;
  • 数据修改:update
-- 将张三的性别改为女
update student set ssex='女' where sname='张三';

DQL数据查询语言

用于查询数据库数据。是SQL语句中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多表联查。

  • 单表查询

单表查询较为基础,也非常重要,它为多表联查打下基础,所以必须要熟练掌握。

  1. 全查:查看表中所有数据
-- 全查
select * from student;
  1. 条件查询:使用where子句,针对某个条件进行筛选
-- 条件查询
	-- 2班的女生
select * from student where ssex = '女' and classid = 2;
	-- 编号4-7的学生
select * from student where sid>=4 and sid<=7;
  1. 模糊查询:like,根据关键字进行筛选。 与“%”一起使用,表示匹配0或任意多个字符; 与“_”一起使用,表示匹配单个字符
--模糊查询 like
	-- 王~(后有任意多个字符)
select *from student where sname like '王%';
	-- 某王(前面只有一个字符)
select *from student where sname like '_王';
	-- 包含王
select *from student where sname like '%王%';
  1. 范围查询:in, 查询的字段的值,至少与in 后的括号中的一个值相同;
-- 查询编号在此范围内的学生
select *from student where sid in(2,4,6,7,6,100);
  1. 常用的聚合函数
    聚合函数
-- 学生考试次数,最高分,最低分,平均分,总分
select count(*) 次数,max(score) 最高分,min(score) 最低分,avg(score) 平均分,sum(score) 总分 from sc;

  1. 分组 group by :和聚合函数搭配使用
    group by,对所有的数据进行分组统计;分组的依据字段可以有多个,并
    依次分组。
    having:与GROUP BY结合使用,进行分组
    后的数据筛选
-- 根据性别分组,并统计每种性别的人数
select ssex , count(*) from student group by ssex;
-- 平均分大于85分的课程和平均分
select cid ,avg(score) from sc group by cid having avg(score)>85;
  1. 排序:order by
    升序(默认排序):asc;降序:desc;
-- 默认升序排列
select * from student order by sid;
-- 根据学生编号降序排列
select * from student order by sid desc;

DQL高级数据查询

表联查等;
表联查是基于主外键关系进行表与表之间的查询。

  1. 内联查询
-- 查询学生student及班级class的信息(共有信息))
-- SELECT * FROM 表1,表2 WHERE 表1.字段1 = 表2.字段2...
-- 适用于数据量小,表量大
select * from student , class where student.classid=class.classid;
-- inner join
-- 表1 inner join 表2 on 关系
-- 适用于单表数据量大
select * from student inner join class on class.classid=student.classid;	
  1. 外联查询
    语法:select * from 表1 left / right 表2 on 条件
    左外联:left join 从表1中返回所有的记录,即便在表2中没有匹配的行。
    右外联:right join 从表2中返回所有的记录,即便在表1中没有匹配的行。
-- left join  on 左外联
-- 所有学生及其对应的班级信息
select * from student left join class on student.classid=class.classid;
-- right join  on 右外联
select * from class right join student on student.classid=class.classid;
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值