–1.创建数据库CREATEDATABASEmybase;–2.创建数据库并指定字符集CREATEDATABASEmybase1CHARACTERSETUTF8;–3.查看所有数据库SHOWDATABASES;–4.查看当前使用的数据库SELECTDATABASE();–5.修改数据库ALTERDATABASEmybaseCHARACTERSETUTF8;–6.删除数据库DROPDATABASEmybase1;–切换数据库USEmybase;
–1.创建表createtableexam(idINT(11)PRIMARYKEYAUTO_INCREMENT,nameVARCHAR(20),EnglishINT,ChineseINT,Mathint);–2.查看数据库中所有表showTABLES;–3.查看表结构descexam;
–4.表的删除droptableexam;
–5.表的修改(基于exam表)
–5.1添加列ALTERTABLEexamADDHistoryINTNOTNULL;–5.2修改列的类型、长度、约束ALTERTABLEexamMODIFYHistoryDOUBLE(7,2);–5.3修改表的列名ALTERTABLEexamCHANGEHistoryPhysicsINTNOTNULL;–5.4修改表名RENAMETABLEexamTOscore;–5.5修改表的字符集ALTERTABLEscoreCHARACTERSETGBK;–5.6删除列ALTERTABLEscoreDROPPhysics;–5.7
ALTERTABLE
–三、练习:创建emp表
CREATETABLEemp(empnoINTPRIMARYKEYAUTO_INCREMENT,enameVARCHAR(20),jobVARCHAR(20),mgrint,hiredateDATE,salDOUBLE(7,2),commitdouble(5,2),deptnoINTNOTNULL–非空约束);
--数据操纵语言DML(update,insert,delete)–1.插入部分列INSERTINTOscore(id,NAME,English,Chinese,Math)VALUE(1,‘Hudie’,90,90,90);INSERTINTOscore(id,NAME,English,Chinese)VALUE(NULL,‘diedie’,91,91);–2.插入所有列INSERTINTOscoreVALUES(3,‘Shu’,80,80,80);–3.修改记录UPDATEscoresetChinese=99;–全表修改UPDATEscoreSETMath=100WHEREid=‘1’;–4.删除记录DELETEFROMscoreWHEREid=‘2’;DELETEFROMscore;
–delete与truncate的区别√–TRUNCATETABLE删除表的记录:将整个表删除掉,重新创建一个新的表,属于DDL.–DELETEFROM删除表的记录:一条一条进行删除,DELETE.INSERTINTOscoreVALUES(3,‘Shu’,80,80,80);DELETEFROMscore;INSERTINTOscoreVALUES(NULL,‘Libai’,10,10,10);–不会清空AUTO_INCREMENT值TRUNCATETABLEscore;INSERTINTOscoreVALUES(NULL,‘Libai’,10,10,10);–清空AUTO_INCREMENT的值
–事务管理:只能作用在DML语句上,如果在一个事务中使用delete删除所有记录,可以找回.–使用delete删除后可以用COMMIT和ROLLBACK找回数据,使用truncate后就找不回来了.
–delete、truncate、drop的区别√delete、truncate、只是删除表的记录,而drop会直接删除表.
--数据控制语言DCL(grant,revoke)--主要为用户授予和撤销权限–1.创建用户:CREATEUSER用户名@ipIDENTIFIEDBY密码;createuserFox@localhostidentifiedby‘123456’;
–3.撤销权限:REVOKE权限1,权限2,…,权限nON数据库名.*FROM用户名@IP;revokeselectonmysql.*fromFox@localhost;
--一、分组查询CREATETABLEemp(empnoINTPRIMARYKEYAUTO_INCREMENT,enameVARCHAR(20),jobVARCHAR(20),mgrint,hiredateDATE,salDOUBLE(7,2),commitdouble(5,2),deptnoINTNOTNULL);
INSERTINTOempVALUES(1002,‘白展堂’,‘clerk’,1001,‘1983-05-09’,7000.00,200.00,10),(1003,‘李大嘴’,‘clerk’,1002,‘1980-07-08’,8000.00,100.00,10),(1004,‘吕秀才’,‘clerk’,1002,‘1985-11-12’,4000.00,null,10),(1005,‘郭芙蓉’,‘clerk’,1002,‘1985-03-04’,4000.00,null,10),(2001,‘胡一菲’,‘leader’,null,‘1994-03-04’,15000.00,NULL,20),(2002,‘陈美嘉’,‘manger’,2001,‘1993-05-24’,10000.00,300.00,20),(2003,‘吕子乔’,‘clerk’,2002,‘1995-05-19’,7300.00,100.00,20),(2004,‘张伟’,‘clerk’,2002,‘1994-10-12’,8000.00,500.00,20),(2005,‘曾小贤’,‘clerk’,2002,‘1993-05-10’,9000.00,700.00,20),(3001,‘刘梅’,‘leader’,null,‘1968-08-08’,13000.00,NULL,30),(3002,‘夏冬梅’,‘manger’,3001,‘1968-09-21’,10000.00,600.00,30),(3003,‘夏雪’,‘clerk’,3002,‘1989-09-21’,8000.00,300.00,30),(3004,‘张一山’,‘clerk’,3002,‘1991-06-16’,88000.00,200.00,30);
–1.查询每个部门的平均工资SELECTdeptno,AVG(sal)FROMempGROUPBYdeptno;–2.查询每个职位的最高工资和最低工资SELECTjob,MAX(sal),MIN(sal)FROMempGROUPBYjob;–3.查询每个部门每种职位的最高工资SELECTdeptno,job,MAX(sal)FROMempGROUPBYdeptno,job;–4.查询每个部门的最高薪水,只有最高薪水大于15000的记录才被输出显示SELECTdeptno,MAX(sal)ASmax_salFROMempGROUPBYdeptnoHAVINGmax_sal>=15000;–5.查询每个部门的平均工资SELECTdeptno,AVG(sal)FROMempGROUPBYdeptnoHAVINGAVG(sal)>9000;–6.Havaing子句与where子句的区别(1)where是用来过滤记录的,HAVING是用来过滤分组的(2)过滤的时机不相同,先过滤Where后过滤Having.(3)WHERE是在查询表时逐行过滤以选取满足条件的记录(4)having是在数据查询后并且分完组后对分组进行过滤的(5)HAVING必须跟在groupBY(6)查询语句执行顺序:5select1from2where3groupby4having6orderby
–二、分页查询–1.从第几页开始多少页(下标从0开始)SELECT**FROMempLIMIT0,3;–2.每页几条第几页==需要查看第几页-1)乘以第二个参数SELECTFROMempLIMIT10,5;–每页五条第三页(3-1)5SELECTFROMempLIMIT2,2;–每页2条第2页(2-1)2–3.查看工资最高的前十个职员信息SELECTFROMempORDERBYsalDESCLIMIT0,10;
主键约束:primarykey(默认就是唯一非空的)外键约束:用于在两个表之间建立关系,需要指定引用主表的哪一列。
唯一约束:unique非空约束:notnull
CREATETABLEemp( empnoINTPRIMARYKEYAUTO_INCREMENT,--主键约束 enameVARCHAR(20), jobVARCHAR(20), mgrint, hiredateDATE, salDOUBLE(7,2), commitdouble(5,2), deptnoINTNOTNULL --非空约束);--√添加唯一约束和非空约束ALTERTABLEexamMODIFYNAMEVARCHAR(21)UNIQUENOTNULL;–创建主表CREATETABLEdept(deptnoINTPRIMARYKEY,dnameVARCHAR(20),locVARCHAR(20));INSERTINTOdeptVALUES(10,‘餐饮部’,‘上海’),(20,‘销售部’,‘浙江’),(30,‘财务部’,‘北京’),(40,‘技术部’,‘深圳’);
为从表emp加外键
ALTERTABLEempADDFOREIGNKEY(deptno)REFERENCESdept(deptno);