MYSQL学习(一)

一、mysql使用命令符

开始使用

先以管理员身份启动

然后

`mysql -uroot -p102077`

登录

退出mysql

mysql> exit;

查看数据库

mysql> show databases;

使用数据库

mysql>  use xyuanjin(数据库名称);

查看该数据库下有哪些表

mysql> show tables;

创建数据库

mysql> create database xyuanjin(数据库名称);

查看mysql数据库的版本号

mysql> select version();

查看当前使用的是哪个数据库

mysql> selest database();

二、关于SQL语句分类

DQL

数据查询语言(select…)

DML

数据语言操作(操作表中数据)

​ 增:insert 删: delete 改: update

DDL

数据定义语言(操作表中结构)

​ create 新建 (等同于增) drop 删除 alter修改

TCL

事务控制语言

​ 事务提交 commit;

​ 事务回滚 rollback;

DCL

数据控制语言

​ 授权 grant 撤销授权 revoke

三、导入sql文件

导入方法

mysql> source   C:\..........(文件路径)

查看数据

mysql> show tables;        //查看数据库中的表

mysql> select  * from 表名;        //查看表中所有数据

mysql> desc  表名;          //查看表的结构

四、DQL

1、简单查询

查询一个字段
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;

2、单行处理函数

lower()   转换小写

upper()   转换大写

length()   取长度

substr()     取子串           substr(被截取的字符串,起始下标,截取长度)

trim()       去空格

rand()     生成随机数

round()    四舍五入           round()

ifnull()null转换为一个具体值

case...when...then...else...end    当满足啥啥时然后执行啥啥

3、多行处理函数

分组函数(先分组,再使用)
count

sum

avg

max

min

4、单表查询

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;

5、连接查询(跨表查询)

//表起别名,提高效率

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可以当作一个新的表
union 合并查询结果集
例: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 使用

作用 :将查询结果一部分取出来,通常使用在分页查询中

用法 :

              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

五、DDL

建表
create  table 表名(

​           字段一   数据类型,    //不要忘了逗号

​          字段二    数据类型

)//不要忘了分号

//表名一般用 t_ 或 tbl_ 开头

mysql数据类型
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; //如果存在这张表,就删除

六、DML

插入数据(insert)
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类型
mysql日期格式
%Y		年

%m		月

%d		日

%h		时

%i		分

%s		秒

now()  函数    获取当前时间,带有时分秒信息!!!为datetime类型
修改update
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;
删除数据(delete)
delete from 表名  where  条件;

注意:没有限制条件会将所有数据都删除

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值