mysql

select 执行顺序: 1、from 表 2、where条件 3、group by 4、having 5、select 6、order by 7。limit

mysql分组函数 1、 count sum max min avg   

                         2、count(*) 会包含null count(salary)不会计算null

                         3、null参与运算都是null   ifnull(salary,0) 

                         4、会忽略null

                         5、分组函数不能用于where条件

group by: 按照其个字段或者某些字段进行分组

having:是对分组之后的数据进行再次过滤

select deptno,max(sal) from emp where sal>2900  GROUP BY deptno ##这句优于下一句用having

select deptno,max(sal) from emp   GROUP BY deptno having max(sal)>2900

select deptno,avg(sal) from emp   GROUP BY deptno having avg(sal)>2000

多表连接

等值连接: select t1.* ,t2.* from emp t1 join dept t2  on  t1.deptno=t2.deptno where t1.sal>2000

非等值连接:select e.ename,e.sal,s.GRADE from emp e join salgrade s on e.sal between s.LOSAL and s.HISAL

外连接有主次表关系

select c.ENAME,c.DEPTNO,c.SAL,c.GRADE,d.DNAME,d.DEPTNO from (select a.ENAME,a.DEPTNO,a.SAL,b.GRADE from emp a join salgrade b on a.SAL BETWEEN b.LOSAL and b.HISAL) c join dept d on c.DEPTNO=d.DEPTNO;

select a.ename,a.deptno,a.sal,c.grade,b.dname,b.deptno,d.EMPNO from emp a join dept b on a.deptno=b.deptno join salgrade c on a.SAL BETWEEN c.LOSAL and c.HISAL left join emp d on a.mgr=d.EMPNO

select b.salavg,b.DEPTNO,c.grade from salgrade c join (select avg(a.sal) as salavg,a.DEPTNO from emp a group by a.DEPTNO) b on b.salavg BETWEEN c.losal and c.HISAL
select a.ename,a.DEPTNO,(select b.dname from dept b where a.DEPTNO=b.DEPTNO) from emp a

##insert 可以同时插入多条数据

insert into dept values(11,"aa","aa"),(21,"a2a","a2a")

##表的复制

drop table if exists user

create table dept1 as select * from dept

insert into dept1 select * from dept ##表dept1必须存在

##char是特定的字符长度 若指定了长度 其内容不够会自动补长固定的内存空间 varchar是可变的字符长度 若指定了最大长度 动态分配内存空间

约束:可以保证数据的完整 合法 一致性  非空约束 (not null) 主键约束(primary key) 外键约束(forgien key) 唯一约束(unique)

create table tuser(id int,name varchar(32) not null,create_time datetime default CURRENT_TIMESTAMP,update_time datetime default null on UPDATE CURRENT_TIMESTAMP,PRIMARY key(id))

##外键 外键值可以为null 外键引用(父表)的字段必须具有唯一性约束

create table t_student(sno int primary key,sname varchar(32),cno int,foreign key(cno) references t_class(cno));

 ##mysql 存储引擎 (表的存储方式)1、MYISAM 是最常见的但不支持事务管理 使用三个文件表格一个完整的表 :1 表结构 .frm  2 表数据 .myd  3 表索引 .myi 支持压缩 

2、Innodb 支持事务 行级锁  不可压缩3、memory 不支持事务 数据容易丢失 

##索引 1、数据量比较大 2、增删改操作比较少 3、where条件后  create index user_name_index on user(name)  drop index user_name_index on user(name)  show index from user;

##数据库备份:mysqldump -uroot -pxxx userdb>d:/userdb.sql    数据库还原:mysql -uroot -pxxx ;create database userdb; source d:/userdb.sql

posted @ 2020-09-03 19:00  howhy  阅读(60)  评论(0)    收藏  举报