--建立学生表 create table students ( id int unsigned not null auto_increment primary key, name varchar(20) default '', age tinyint unsigned default 0, high decimal(5,2), gender enum('男', '女', '中性', '保密') default '保密', cls_id int unsigned default 0, is_delete bit default 0 ); --建立班级表 create table classes( id int unsigned auto_increment primary key not null, name varchar(20) not null ); --往students表里插入数据 insert into students values (0,'小明',18,180.00,2,1,0), (0,'小月月',19,180.00,2,2,0), (0,'彭于晏',28,185.00,1,1,0), (0,'刘德华',58,175.00,1,2,0), (0,'黄蓉',108,160.00,2,1,0), (0,'凤姐',44,150.00,4,2,1), (0,'王祖贤',52,170.00,2,1,1), (0,'周杰伦儿',34,null,1,1,0), (0,'程坤',44,181.00,1,2,0), (0,'和珅',55,166.00,2,2,0), (0,'刘亦菲',29,162.00,3,3,0), (0,'金星',45,180.00,2,4,0), (0,'静香',18,170.00,1,4,0), (0,'郭静',22,167.00,2,5,0), (0,'周杰',33,178.00,1,1,0), (0,'钱小豪',56,178.00,1,1,0), (0,'谢霆锋',38,175.00,1,1,0); --向classes表里插入数据 insert into classes values (0, '云惟_01期'),(0, '云惟_02期'); -- 链接查询(内关联) -- inner join ... on -- 两个表链接查询 select * from students inner join classes -- 查询可以对应班级的学生以及班级信息 select * from students inner join classes on students.cls_id=classes.id; -- 按照要求显示姓名,班级 select students.*, classes.name from students inner join classes on students.cls_id=classes.id; -- 给数据表起名字 select s.name, c.name from students as s inner join classes as c on s.cls_id=c.id; -- 查询 有可以对应班级的学生以及班级信息,显示学生的全部信息,只显示班级名称 select students.*, classes.name from students inner join classes on students.cls_id=classes.id; -- 在以上查询中将班级姓名显示在第一列 select classes.name,students.* from students inner join classes on students.cls_id=classes.id; -- 查询有可以对应班级的学生以及班级信息,按照班级进行排序 select classes.id, students.* from students inner join classes on students.cls_id=classes.id order by classes.id; -- 当是同一个班级的时候,按照学生的id从小到大 select classes.id, students.* from students inner join classes on students.cls_id=classes.id order by classes.id, students.id; --链接查询(左关联,右关联) --左关联,以左边表为基准,条件对应不上的显示null select * from students left join classes on students.cls_id=classes.id; --右关联,之后边为基准,条件对应不上的显示null select * from classes left join students on students.cls_id=classes.id; -- 自关联 create table areas( aid int primary key auto_increment, name varchar(20), pid int ); -- 查询出河北省全部市 select * from areas as province inner join areas as city on province.aid=city.pid having name='河北省'; select province.name,city.name from areas as province inner join areas as city on province.aid=city.pid having province.name='河北省'; -- 子查询 -- 标量子查询 -- 查询出北京市全部区的信息 select * from areas where pid=(select aid from areas where name='北京市'); select * from areas where pid in (select aid from areas where name='北京市');
#备份testdb数据库(-l表明备份单个数据库时锁定该库的全部表;-x当对全部数据库备份时锁定全部数据库的全部表) mysqldump -uroot -proot -l --databases testdb > testdb.sql #备份全部数据库 mysqldump -uroot -proot --all-databases > all_databases.sql #备份testdb数据库下的students表 mysqldump -uroot -proot testdb students > students.sql #还原数据(sql命令行下) source testdb.sql
#第一步 vim /etc/my.cnf.d/server.cnf [server] log-bin=mysql-bin #第二步,查看二进制文件 mysqlbinlog /var/lib/mysql/mysql-bin.000001 #第三步,删除一些数据 #第四步,恢复 mysqlbinlog mysql-bin.000001 | mysql -uroot -proot
create view 视图名称 as select语句;
show tables;
drop view 视图名称; 例: drop view v_stu_score_course;
select * from v_stu_score_course;
例:
学生表

班级表
create view v_student_info as select classes.c_name as '班级', students.name as '学生' from students inner join classes on students.cls_id=classes.id order by classes.id;
为何要有事务php
事务具备ACID特性:原子性(A,atomicity)、一致性(C,consistency)、隔离性(I,isolation)、持久性(D,durabulity)。mysql
事务命令sql
show create table students;
修改数据的命令会触发事务,包括insert、update、delete数据库
开启事务,命令以下:vim
begin;
commit;
rollback;
语法缓存
show index from 表名;
方式一:建表时建立索引工具
create table create_index( id int primary key, name varchar(10) unique, age int, key (age) );
方式二:对于已经存在的表,添加索引性能
若是指定字段是字符串,须要指定长度,建议长度与定义字段时的长度一致 字段类型若是不是字符串,能够不填写长度部分 create index 索引名称 on 表名(字段名称(长度)) 例: create index age_index on create_index(age);
drop index 索引名称 on 表名;
set profiling=1;#打开sql语句执行时间
show profiles;#查看sql执行时间
若是一个实体的某个字段指向另外一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫父实体(父表)。负责指向的实体,称之为从实体(从表),也叫子实体(子表)测试
对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,若是存在则填写成功,若是不存在则填写失败并报错优化
show create table 表名
添加
外键
alter table students add constraint fk_students_gid foreign key (gid) references grade(gid) on delete cascade;
show create table 表名
alter table students drop foreign key 外键名字;