1.MySQL基础
从DDL,DML,DCL三类简单介绍一下。
DDL:数据定义语言,有create,drop,alter命令,对表,字段,数据库结构的操作。
DML:数据操纵语言,insert,delete,update,select命令,对表内数据的操作。
DCL:数据控制语言,grant,revoke命令,赋予用户的访问权限操作。
DML
1.查询不重复记录:distinct
2.条件查询:where
3.排序和限制:order by asc 默认是升序,desc是降序
4.聚合
Group by 分类聚合的字段
Having 对分类后的结果进行条件过滤
where是聚合前的过滤
5.表连接
分内连接(常用的是内连接,选出相互匹配的记录)和外连接(选出不匹配的记录)
dept是部门表(部门号,部门名称,地址),emp是员工表(员工号,员工姓名,部门号)
查询员工所在的部门名称
内连接的例子:select ename,deptname from emp,dept where emp.deptnp=dept.deptno
外连接分为左连接和右连接,left join和right join
6.子查询
子查询的优化就是转化为表连接,子查询就是条件过滤中嵌套select语句
子查询的例子:select * from emp where deptno in (select deptno from dept);
查询中用到的关键词主要包含六个,并且他们的顺序依次为
select--from--where--group by--having--order by
其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序
与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行
from--where--group by--having--select--order by,
from:需要从哪个数据表检索数据
where:过滤表中数据的条件
group by:如何将上面过滤出的数据分组
having:对上面已经分组的数据进行过滤的条件
select:查看结果集中的哪个列,或列的计算结果
order by :按照什么样的顺序来查看返回的数据
DCL
//创建一个用户user1,具有对数据库db1中所有表的select,insert权限
grant select,insert on db1.* to 'user1'@'localhost' identified by '123'
//切换到root
mysqk -uroot
//收回user1对db1的所有表的insert权限
revoke insert on db1.* from 'user1'@'localhost'
//重新登录 -u是用户名 -p是密码
mysql -uuser1 =p123
//插入记录时会提示错误
2.MySQL支持的数据类型
简单了解一下就行
1.整型
2.浮点数 float,double
3.定点数 DEC(M,D) 字节是M+2
4.位类型 bit
5.日期,时间 data,time,year
6.字符串类型 varchar(可变长度),char(不可变长度)
7.枚举类型 create table t (gender enum('M','F'));插入范围外的值会默认插入M,因为M在第一个位置
8.set类型 和enum类似,enum一次只选一个成员,set一次可选多各成员
3.MySQL的运算符
1.算数运算符:+ - * / %
2.比较运算符:= <>或!= > < in(存在与集合中) like(通配符匹配)
3.逻辑运算符:not或! and或&& OR或|| XOR(异或)
4.位运算:&(and 长路与) |(OR 长路或) ^(XOR 异或运算) N(! 非运算) >>右移 <<左移
4.Mysql常用的函数
字符串函数
1.contact(s,s2,sn) //
2.insert(str,x,y,instr)
lower()
upper()
left()
right()
lpad()
rpad()
trim()
repeat()
replace()
strcmp()
substring()
数值函数
函数名 | 含义 |
---|---|
abs | 绝对值 |
ceil(x) | 返回大于x的最小整数 |
floor(x) | 返回小于x的最大整数 |
mod(x,y) | x/y的模 |
rand() | 0-1的随机数 |
日期函数
curdate()
curtime()
now()
unix_tmestamp(date)
流程函数
if(value,t f)
case when
其他常用函数
dataase()
cersion()
user()
Inet_Aton(IP)
MD5()