数据库基本操作
mysql中的注释
两个短横线加一个空格
-- 这是MySQL中的注释写法
使用数据库
use db_mydata ;
创建表
CREATE TABLE `db_mydata`.`students` (
min()/max()/sum()/sqrt()/rand()
查出一个年龄最大的学生
查出出生年份最小的也就是年龄最大的
select min(birthdate) from db_mydata.student
//rand()随机数,用于产生验证码
返回0到1之间的数字
concat() 拼接字符串
select concat(name,' ',age) from students
where语句
查找年龄在20岁到30岁之间的学生
select * from students where age >= 20 and age <=30 ;
select * from students where age between 20 and 30 ;
筛选出姓张的同学(也就是以张开头)
select * from students where name like '张%' ;
查询名字中带宝字的同学(也就是只要包含宝)
select * from students where name like '%宝%' ;
查询名字中以’好’字结尾的同学(也就是以好结尾)
select * from students where name like '%好' ;
order by 排序
由小到大排序
筛选学生,根据年龄右小到大(ASC可省略)
select * from students order by age ASC
由大到小排序
筛选学生,根据年龄右大到小
select * from students order by age DESC
在表之间进行查询
-- 学生表students 班级表classes
-- 学生表的字段( id name class_id )
-- 班级表的字段( class_id class_name )
-- 多表查询要关联字段
where * from students,classes where students.class_id = classes.class_id
-- 会将两个表的内容综合显示,既有学生表的信息又有班级表的信息,并且有两个class_id且值都是一样的
-- 加上删选条件
-- 只显示学生表里的学生名字,只显示班级表里的班级名
where students.name , classes.class_name from students,classes where students.class_id = classes.class_id
增删改查
增
insert into students (id , name , age , class ) values(9,'tom',18,'一班');
删
//删除id为9的学生
delete from students where id = 9 ;
//删除所有id为8的学生
delete fromg students where id=8 ;
改
//将id为8的学生名字改为tom
update students set name='tom' where id = 8 ;
//将id为8的学生名字改为tom,age改为19
update students set name='tom',age=19 where id = 8 ;
事务处理
特点
上班打卡是一个事务,我们打卡了但是打卡机没有记录我们不愿意看到,我们没有打卡但是打卡机自动记录了这是公司不愿意看到的。打卡了系统一定要记录打卡,没有打卡系统一定要记录没有打卡,这叫事务。- 原子性:确保工作单元内的所有操作都成功完成,否则事务将被终止在故障点和以前的操作将滚回到以前的状态
- 一致性:确保数据库正确地改变状态后,陈宫提交的事务。
- 隔离性:使事务操作彼此独立的和透明
- 持久性:确保提交的事务的结果或效果的系统出现故障的情况下任然存在
控制事务处理
- 管理事务处理的关键在于将SQL语句组分解为逻辑快,并明确规定数据核实应该回退,何时不应该回退。
- 开启事务:start transaction 或 begin
- 提交事务(关闭事务) commit
- 放弃事务(关闭事务)rollback
设置事务处理
- 数据库是自动提交我们在这里改为事务处理也就是手动提交 set autocommit=0 ;
- 开启新事务 start transaction
- 执行操作 delete from students 删除所有学生
- 发现上面数据误操作了,因为删除了所有学生执行rollback; 回滚操作
- 如果发现操作正常,就是要删除所有学生。执行commit
//关闭自动提交
set autocommit = 0 ;
//开启事务
start transaction
update students set name='jack' where id = 9 ;
update students set age = 19 where id 8 ;
//提交
commit;