1.DML:对数据进行增删改查
提示:Execute执行 Execute and Suppress 执行并且抑制这个警告
person表的结构
/*
DML:Data Manipulation Language 数据操作语言,对数据进行 增删改查操作,因为査询的操作太频繁和复杂,将查询的操作独立成为DQL
*/
use db1109;//person表在db1109数据库里
-- 插入数据insert into,对于自增的字段,可以插入0或者null,id会自己增加
-- 在指定的字段里插入数据
insert into person(id,name,married) value(null,'jerry',true);
-- 如果给所有的字段都插入数据,字段列表可以省略,但是注意value的顺序必须要和字段的顺序保持一致,避免数据类型不匹配
insert into person/*(id,name,sex,height,hobbies,married,birthday)*/value(0,'merry","女'1.7,'RAP,篮球",0,'2000-02-14');
-- 修改数据 update
update person set sex='男'; -- 没有条件抑制,将所有人性别修改为男
update person set sex='女' where id=4 or id =6; -- 根据指定的条件修改数据
update person set hobbies='rap' where id between 2 and 5;
-- 删除数据 delete
/*
都不推荐用,区别:
delete 删除数据以后,如果再插入数据,主键会在上一次的基础上自增
tuncate 清空数据,可以理解为将表drop,然后再create,表会到初始状态,主键id从0开始增加,truncate不能回滚
*/
delete from person where id =3; -- 条件删除
delete from person; -- person表里所有的数据都删除,但是person表依然存在
truncate person;
drop table person; -- 直接将表删除
-- 复制一张表
create table p1 like person;--创建一个和person表结构相同的p1表
insert into p1 select *from person;--将person表里所有的数据都查询出来,然后插入到p1表
2.DQL:对数据进行查询
DQL: DataQueryLanguage 数据查询语言,是整个数据库最主要常用的语句,主要就是 select语句,配合一些子语句完成复杂的查询效果
from子句:用来指定数据源
where子句:用来过滤查询条件
having子旬:和where功能相同,也是用来过滤查询条件
order by子句:排序
limit /offset子句:设置分段查询
group by子句:分组
union子句:用来拼接多个查询结果
join...on子句:用来实现多表联合查询
/*
通常情况下,select后面都需要添加from语句(mysql中可以不加,Oracle里必须加),
指定数据源dual是一个虚拟表,为了保证select语句的完整性
from用来指定数据源可以是一个表,也可以是多个表,还可以是一个查询结果
*/
select 1+1 from dual; select 1+1;也是2,oracle中不能用,mysql可以,不推荐
select id,name,sex from person;
select * from person;-- 查所有数据
select * from person where name='merry';
`是反引号,如果表名或字段名是关键字,必须加它,其它情况加不加都行
create table `student` (
`id` int unsigned primary key auto_increment,
`name` char(32) not null unique,
`gender` enum('男', '女') not null,
`city` char(32) not null,
`description` text,
`birthday` date not null default '1995-1-1',
`money` float(7, 2) default 0,
`only_child` boolean-- 是否是独生子
);
-- value插入一行数据 values插入多行数据
insert into `student`
(`name`, `gender`, `city`, `description`, `birthday`, `money`, `only_child`)
values
('张三', '男', '北京', '班长', '1997/10/1', rand() * 100, True),