--建立學生表 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 外鍵名字;