left join左表百万数据查询慢_mysql数据库基础语法操作

5880d327e6e52406b5ff2136509b1529.png

mysql默认端口号:3306

mysql登录:mysql -u 用户名 -p 密码

创建数据库:create database t1 if not exist; 创建一个名为t1的数据库

显示所有数据库:show databases; 显示所有数据库

修改数据库: alter database 数据库名称 character set =gbk 修改数据库编码方式

删除数据库:drop database if exists 数据库名称

打开数据库:use 数据库名称

数据表操作:

创建数据表:create table [i f not exist] table_name(column_name data_type,)

eg: craete table tb1(name varchar(20) not null,age TINYINT UNSIGNED, salary Float(8,2) UNSIGNED)

主键约束:primary key,自动not null 每张表只能一个,各记录在该字段的值不重复

唯一约束:unique key约束字段可以为null,每张表可以存在多个唯一约束,各记录在该字段下的值不为空

默认约束:default 默认值 ...default 值

外键约束:保持数据一致性和完整性 foreign key,可设置与父表操作时的关系 cascade,set null

eg:create table users(id smallint unsigned primary key auto_increment, username varchar(20),not null, pid bigint, foreign key pid references 另外一张表 另外一张表的列名(必须有索引),数据类型必须相同)

auto_increment: 自动编号,默认情况下起始值为1,只能用在主键字段之后

数据表的修改

添加单列:alter table users1 add age tinyint unsigned not null

添加多列:alter table users add (age tinyint,surname varchar(20))

删除列: alter table users drop 列名,drop 列名 删除多列,逗号分割

修改列定义:alter table users modify 待修改字段定义

修改列名: alter table users2 change 旧列名 新列名

数据表更名 alter table users rename 新表名

查看数据库中的数据表:show tables from 数据库名

查看数据表的结构:show columns from 数据表名

插入记录:insert [into] 表名 [(column_name,...)] values(val,...)给指定字段赋值, 如果要给所有字段赋值,列名可以省略

insert 表名 set 列名=值,列名=值,。。。

insert 表名 [列名逗号分割] select 将select查询内容作为插入内容

更新记录:update 表格 set 列名=值,列名=值 where....

删除记录:delete from 表名 where。。。

记录查找:select .... from 表名 eg:select * from tbl * 表示所有列

select 列名1,列名2,... from 表名

group by 列名 [ASC|DESC] [数字(表示取结果中的第几个)]结果中只有列名所在列的所有值去重后的结果,如查询性别,只会出现男女两条结果

having 条件 eg:having count(id)>5

order by 列名 [asc|desc],列名 [asc|desc]多个列进行排序输出

limit限制返回结果的条数 eg:limit [起点,默认是0],条数

子查询:嵌套在查询内部的查询,必须在括号内 可以返回标量 一行 多行

使用比较运算符的子查询:eg select * from goods where prices>=(select AVG(prices) from goods)

select * from goods where prices>any(select prices from goods)如果子查询返回多条结果,则可用any(任何一个满足条件即成立),all(全部都要满足条件才成立),some(任何一个满足条件即可)

其他比较运算符> <= >= <=

in/not in 引发的子查询 select name from users where name in (select name from users here...)

多表更新:

inner join/join/cross join 内连接,三个等价, 仅显示符合连接条件的记录

left [outer] join 左外连接 左表的的全部和右表的满足条件的记录

right [outer] join 右外连接 右表的的全部和左表的满足条件的记录

on来设定连接条件,也可以用where

update table1 inner join table2 on table1.a=table2.b set a=b

根据查询结果创建表

eg:create table table1 (id smallint unsigned primary key auto_increment, name varchar(20) not null) select name from users

多表删除:

delete t1 from table1 as t1 left join (select ......) on ... where..

函数:

常用的字符函数:Concat(a,b), format(), lower(),upper().....

常用的数值运算符:ceil(),floor(),round()

比较运算符:[not] between .. and ..

聚合函数:AVG()平均值 COUNT() MAX() MIN() SUM()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值