//一次性添加一条数据
//语法:insert into 表名 values (全部字段的值);
insert into st2 values (6,'小明',123);
//一次性添加多条数据
//语法:insert into 表名 values (全部字段的值),全部字段的值),(全部字段的值);
insert into st2 values (7,'小明',123),(8,'小明',123),(9,'小明',123);
//删除表里一条数据
//语法:delete from 表名 where 删除的目标;
delete from st2 where id=9;
//删除hello表
//语法:drop table 表名;
drop table hello;
//删除数据库
//语法:drop database 数据库名;
drop database hellodemo;
//更新st2表将id=8修改成10数据,更新的是一个字段
//语法:update 表名 set 修改的数据 where 修改的目标;
update st2 set id=10 where id=8;
//更新多个字段
update st2 set id=11,name='hello' where id=5;
//修改表名
//将st2表修改为student2表名
//语法:alter table 原始表名 rename (to) 修改后的表名;
alter table st2 rename to student2;// to 可以省略
alter table student2 rename st2;
//修改字段类型
//将st2表的name字段修改为char(30)
//语法:alter table 表名 modify 字段名 字段类型;
alter table st2 modify name char(30);
//添加字段;
//语法:alter table 表名 add 字段名 字段类型;
alter table st2 add gender char(2);
//删除字段
//删除st2表gender字段
//语法:alter table 表名 drop 字段名;
alter table st2 drop gender;
//查询student表的所有字段和字段的数据
select * from student;
//查询表的结构
describe student;//等同于 desc student;
//查询没有重复的password
select distinct password from student1;
//删除id=1的数据
delete from student where id=1;
//在student表中添加数据
insert into student values (1,'xiao',1234567);
//查询student表按id字段排序(默认排序为升序 (asc),降序为(desc))
SELECT * FROM student t ORDER BY id ;
//创建用户hi,密码为123456;
create user 'hi'@'localhost' identified by '123456';
//修改密码为123;
alter user 'hi'@'localhost' identified with mysql_native_password by '123';
//删除用户
drop user 'hi'@'localhost';
//查询权限
show grants for 'hi'@'localhost';
//授权
grant select on hi.* to 'hi'@'localhost';
//撤销权限
revoke all on hi.* from 'hi'@'localhost';
//让id字段中的数据的左边添加2个0;
update student set id=lpad(id,3,'0');//好像只能修改一次,如果要再次修改,就要手动的修改
//修改id=1的username和id
update student set id=1,username='hello' where id=1;
//修改student表id字段的属性
alter table student modify id char(3);
//添加字段
//添加class_id字段,字段类型为int
alter table student add class_id int ;
//添加主键;
//语法:alter table 表名 add primary key (字段名);
alter table st2 add primary key (id);
//删除主键
//语法:alter table 表名 drop primary key ;
alter table st2 drop primary key ;
//给主键起别名
//语法:alter table 表名 add constraint 别名 primary key ;
//查看表的结构或者叫查询表的所有字段
desc student;
//添加外键
//语法:alter table 表名 add (constraint 别名) foreign key (表名的外键) reference 关联表(关联表的主键)
alter table student add constraint student_class_id foreign key (class_id) references class3(id);
// on update cascade on delete cascade;添加外键,并且父表修改时,子表也会改变;
alter table student add constraint student_class_id foreign key (class_id) references class3(id) on update cascade on delete cascade ;
//on update set null on delete set null; 删除父表的主键时,子表的外键为null;
alter table student add constraint student_class_id foreign key (class_id) references class3(id) on update set null on delete set null ;
//删除外键
alter table student drop foreign key student_class_id;
//多表查询
select * from student,class3 where student.class_id=class3.id;
//创建数据school
create database school;
//内连接
//隐式内连接
select s.name,c.class_name from student s ,class3 c where s.class_id=c.id;
//显示内连接
select s.name,c.class_name from student s inner join class3 c on s.class_id = c.id;//inner 可以省略;
select s.name,c.class_name from student s join class3 c on s.class_id = c.id;
//外连接
//左外连接
select s.*,c.class_name from student s left outer join class3 c on s.class_id = c.id
//右外连接
select c.class_name,s.* from student s right outer join class3 c on s.class_id=c.id;
//查询事务的状态: 1是自动提交 , 0 是手动提交
select @@autocommit;
//设置事务为自动提交
set @@autocommit=1;
//设置事务为手动提交
set @@autocommit=0;
//开启事务
start transaction or begin ;
//提交事务
commit ;
//回滚事务:当事务执行过程中出错时,用回滚事务来保证数据不被修改。
rollback ;
//事务的四大特性:(ACID)
//1.原子性(Atomicity):事务的最小单位,要么成功,要么失败
//2.一致性(Consistency):在事务前和事务后,两个事务的数据加起来一直都是一样的
//3.隔离性(Isolation):按事务的隔离级别
//4.持久性(Durability):事务一旦提交或者回滚,数据就会永久的写入到数据库中(磁盘中)
//并发事务引发的问题
//1.脏读:一个事务读取到另一个还没提交的数据事务。 就是A事务读取到B事务的数据,但B事务的数据还没提交。
//2.不可重复读:一个事务第一次和第二次读取同一条记录,但读取到的数据不一致。
//原因是因为在事务A第一次和第二次读取之间,事务B对第一次的事务A的数据进行了更新,所以事务A第二次再次读取同一条记录时,数据就是不一样的。
//3.幻读:一个事务按照条件读取时没有读取到相对应的数据,但是当插入数据时,又发现数据已经存在。
//原因是事务A第一次按条件读取没有读取到相对应的数据,事务B就提交了一个事务A的数据。
//事务的隔离级别:
/*
1.Read uncommitted:可以解决脏读,不可重复都和幻读的问题
2.Read committed(Oracle数据库默认的):可以解决脏读,但会出现不可重复都和幻读的问题
3.Repeatable Read(mysql数据库默认的):可以解决脏读和不可重复都的问题,但会出现幻读
4.Serializable(串行化):可以解决脏读,不可重复读和幻读的问题
隔离级别的性能依次降低,安全级别依次提高。
*/
//查看事务的隔离级别
select @@transaction_isolation;
//设置事务的隔离级别为:read uncommitted;
set session transaction isolation level read uncommitted;
//设置事务的隔离级别为:repeatable read;
set session transaction isolation level repeatable read ;
alter table user add class_name varchar(30);
alter table user2 modify id INTEGER ;
select * from user2 ;
//分页查询
语法:select * from 表名 limit index(起始页),pageSize(当前页数) pageNum(当前页码) index=(pageNum-1)*pageSize
select * from user2 limit 2,3;//从第3个开始到第6个结束
select * from student group by id having gender='男' ;
mysql 基础知识
于 2023-04-10 19:47:08 首次发布