ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

go学习——mysql学习

2022-03-20 10:02:21  阅读:131  来源: 互联网

标签:name 查询 学习 emp mysql go 连接 select


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

建表

creat 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)

delet from 表名 where 条件;

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

标签:name,查询,学习,emp,mysql,go,连接,select
来源: https://blog.csdn.net/qq_63606575/article/details/123607897

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有