MySql教程

go学习——mysql学习

本文主要是介绍go学习——mysql学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

mysql 学习

  • 一、mysql使用命令符
      • 开始使用
      • 退出mysql
      • 查看数据库
      • 使用数据库
      • 查看该数据库下有哪些表
      • 创建数据库
      • 查看mysql数据库的版本号
      • 查看当前使用的是哪个数据库
  • 二、关于SQL语句分类
      • DQL
        • 数据查询语言(select.......)
      • DML
        • 数据语言操作(操作表中数据)
      • DDL
        • 数据定义语言(操作表中结构)
      • TCL
        • 事务控制语言
      • DCL
        • 数据控制语言
  • 三、导入sql文件
      • 导入方法
      • 查看数据
  • 四、DQL
    • 1、简单查询
        • 查询一个字段
        • 给查询的列表起名
        • 列表参与运算
        • 条件查询
        • 条件
        • 排序
    • 2、单行处理函数
    • 3、多行处理函数
        • 分组函数(先分组,再使用)
    • 4、单表查询
        • 对查询结果去重
    • 5、连接查询(跨表查询)
        • 内连接之等值连接
        • 内连接之非等值连接
        • 内连接之自连接
        • 外连接(表分主次)
        • 多表连查
        • 子查询
        • union 合并查询结果集
        • limit 使用
        • 分页
    • 五、DDL
        • 建表
        • mysql数据类型
        • 删除表
    • 六、DML
        • 插入数据(insert)
        • 插入日期
        • mysql日期格式
        • 修改update
        • 删除数据(delete)

一、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 条件;

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

这篇关于go学习——mysql学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!