先以管理员身份启动
然后mysql -uroot -p102077登录
mysql> exit;
mysql> show databases;
mysql> use xyuanjin(数据库名称);
mysql> show tables;
mysql> create database xyuanjin(数据库名称);
mysql> select version();
mysql> selest database();
增:insert 删: delete 改: update
create 新建 (等同于增) drop 删除 alter修改
事务提交 commit;
事务回滚 rollback;
授权 grant 撤销授权 revoke
mysql> source C:…(文件路径)
mysql> show tables; //查看数据库中的表
mysql> select * from 表名; //查看表中所有数据
mysql> desc 表名; //查看表的结构
mysql> select 字段名 from 表名;
例: mysql> select name from classinformation;
mysql> select name,age from classinformation;
mysql> select * from classinformation;
用as关键字,也可省略,若所起列表名中有空格或别名是中文,则将列表名用单引号括起来即可
例: mysql> select name as studentname from classinformation;
mysql> select name as ‘student name’ from classinformation;
mysql> select name studentname from classinformation;
mysql> select name ‘student name’ from classinformation;
mysql> select time*12 from tablename;
select
字段一,字段二,字段三,
from
表名
where
条件;
between…and…
is null (is not null)
in (not in)
like (模糊查询)
其中%匹配任意字符,_匹配一个字符
例:’%y’ 以y结尾
‘y%’ 以y开头
‘_y%’ 第二个字母是y
‘__y%’ 第三个字母是y
select
字段一,字段二,字段三,
from
表名
where
条件
order by
…; (默认升序 升序asc 降序desc)
例:
order by
sal asc, ename desc;
lower() 转换小写
upper() 转换大写
length() 取长度
substr() 取子串 substr(被截取的字符串,起始下标,截取长度)
trim() 去空格
rand() 生成随机数
round() 四舍五入 round()
ifnull() 将null转换为一个具体值
case…when…then…else…end 当满足啥啥时然后执行啥啥
count
sum
avg
max
min
select 5 (select中可以使用分组函数)
…
from 1
…
where 2 (where中不可以使用分组函数)
…
group by 3
…
having 4 (对分组之后的的数据进一步过滤)
…
order by 6
…
limt 7
...
例:找出每个工作岗位的平均薪资,要求显示平均薪资大于1500,除MANAGER岗位之外,平均薪资按照降序排列
select
job,avg(sal) as avgsal
from
emp
where
job <> ‘MANAGER’
group by
job
having
avg(sal) > 1500
order by
avgsal desc;
&&&& distinct 放在所查询的字段前面
对工作岗位去重
select distinct job from emp;
对多个字段去重(联合字段进行去重)
select distinct job ,name from emp;
//表起别名,提高效率
select
e.ename,d.dname
from
emp e, dept d
where
e.deptno = d.deptno
查询员工名字及其所在部门名称(两张表的连接为部门编号相同)
select
e.ename,d.dname
from
emp e
inner(可省略) join
dept d
on
e.deptno = d.deptno (等值)(连接条件)
where
筛选条件
查询每个员工的薪资等级,要求显示员工名,薪资及其等级
select
e.ename,e.sal,s.grade
from
emp e
inner join
salgrade s
on
e.sal between s.losal and s.hisal;(非等值连接)
技巧:一张表看成两张表
查询员工的上级领导,显示员工名和对应领导名
select
a.ename as’员工名‘,b.ename as’领导名’
from
emp a
join
emp b
on
a.mgr = b.empno //员工的领导编号 = 领导的员工编号
左外连接 left join
右外连接 right join
查询员工的上级领导,显示所有员工名(员工表为主表)
select
a.ename as’员工名‘,b.ename as’领导名’
from
emp a
left (outer) join //right join 右边为主表
emp b
on
a.mgr = b.empno //员工的领导编号 = 领导的员工编号
select
…
from
a
join
b
on
a和b的连接条件
join
c
on
a和c的连接条件
left join
d
on
a和d的连接条件(左连接,a为主表,d为次表)
select语句嵌套(可以嵌套于select,from,where中)
from 中的select可以当作一个新的表
例:1. select name,job from emp where job in (‘manager’,‘salesman’)
2. select name,job from emp where job = ‘manager’
union
select name,job from emp where job = ‘salesman’
使用union效率更高
作用 :将查询结果一部分取出来,通常使用在分页查询中
用法 :limit startIndex(可省),length
startIndex 起始下标,从0开始
length 长度
例:
select
name,sal
from
emp
order by
sal desc
limt
0,5;
limit在order之后执行
limit (pageNo-1)*pageSize , pageSize
creat table 表名(
字段一 数据类型, //不要忘了逗号
字段二 数据类型
);//不要忘了分号
//表明一般用 t_ 或 tbl_ 开头
varchar 可变长度字符串(可动态分配空间,但速度慢)
char 定长字符串(速度快)
int 整数型
bigint 长整型
float 单精度浮点型
double 双精度浮点型
date 短日期类型 默认格式:%Y-%m-%d
datetime 长日期类型 默认格式:%Y-%m-%d %h:%i:%s
clod 字符大对象(最多可储存4G字符串)
blod 二进制大对象(图片、声音、视频等流媒体数据)
drop table t_student; //当这张表不存在的时候报错
drop table if exists t_student; //如果存在这张表,就删除
insert into 表名(字段名1,字段名2,字段名3…) values(值1,值2,值3…)
注意: 字段名和值一一对应,即数量对应,数据类型对应
若省略字段名不写,则默认写了全部字段名,所以值要写全部的
例:insert into t_student(no,name,age,email) values(1,‘xiaobai’,17,‘123456@qq.com’)
格式化数字 : format(数字,‘格式’)
select ename,format(sal,’$999,999’) as sal from emp; //千分位
str_to_date : 将字符串varchar类型转换成date类型
date_format : 将date类型转换为具有一定格式的varchar类型
%Y 年
%m 月
%d 日
%h 时
%i 分
%s 秒
now() 函数 获取当前时间,带有时分秒信息!!!为datetime类型
update 表名 set 字段名1 = 值1,字段名2 = 值2,字段名3 = 值3…where 条件;
注意:没有限制条件会导致所有数据都改变
例:update t_user set name = ‘jack’,birth = ‘2002-02-02’,create_time = now() where id = 2;
delet from 表名 where 条件;
注意:没有限制条件会将所有数据都删除