MySQL基础查询

select 字段1,字段2(名字)… from 表名(只可以一个)

起别名两种方法 ① select 字段名 as 别名 from 表;
② …(空格) 别名 from 表;
只是改变显示的固有名字,实际表不会更改
SELECT name,id,age AS “年纪” FROM second; 只改变age不改变其它

“+” 只能用来计算 数值 不可起到连接作用
null +null == null
“呼呼”+100====0+100 不可转换成数值的字符默认为0

select concat(字段,",",“字段”,) as “balabla” from 表; 用来合并两列数据并指定合并后的名字
select distinct 字段名 from …; 去重的关键字

展示表的结构;
DESC second;
SHOW COLUMNS FROM second;

判断某字段是否为空并说明代替字:
IFNULL(salary,‘空’) 返回一个字段结果
SELECT name, IFNULL(salary,‘空’) AS “工资” FROM second;

比较运算符 : = (不等于)<> 其它类似Java
逻辑运算符 and or not(语句)
SELECT * FROM second WHERE salary <> 4000;

模糊查询:
通配符: % 代表任意多个字符 任意单个字符 / 转义字符
like/not like 字符查询 where like ‘%a%’
in/not in where 字段 in (条件1,条件2,)
not…/between 小值 and 大值 不可颠倒
is null/is not null 判断是否为空 不可等于 =(只能被用来判断数值)

排序查询:
from
where
select
order_by
SELECT * FROM second WHERE age>2 ORDER BY salary DESC; 降序 默认升序(ASC)
ORDER BY salary DESC,…,…,; 可以一直追加排序条件

常见函数:
concat(, , )
SELECT CHAR_LENGTH(“黑黑”); 字符长度 2
SELECT LENGTH(‘黑黑’); 字节 6 utf-8
SELECT SUBSTR(‘hello’,1,3); 起始索引,字节长度(默认到字符尾)
SELECT INSTR(‘hellofameheloo’,‘lo’); 4 第一次出现索引的位置
SELECT TRIM('x’FROM ‘xxxxbutxxyouxxx’)AS butyou; 去除前后指定的 字母 默认去空格
SELECT RPAD(‘hhah’,10,2);
SELECT LEFT(‘hhah’,2); 从左截取
SELECT RIGHT(‘hhah’,2);
SELECT ABS(X) 绝对值
CEIL() 向上取整 向下 FLOOR(X)
ROUND(1.21,2) 四舍五入,保留位数
SELECT TRUNCATE(1.02,1); 1.0 保留小数点后几位
mod(10,3) 取余

分组函数
MAX( )
MIN(expr)
AVG([DISTINCT] expr)
COUNT(DISTINCT expr,[expr…]) 统计字段非空行数
count (*) 统计结果集的个数

SUM([DISTINCT] expr)

分组查询
SELECT AVG(salary) 平均工资,manager_id 部门号 FROM employees WHERE commission_pct IS NOT NULL GROUP BY 部门号;
分组前筛选 where
分组后 having 与 分组函数 搭配 结合执行顺序

内连接: 有连接关系的

等值连接:
两不同表因为相同的字段而建立连接

SELECT last_name,department_name FROM departments d join employees c on
d.department_id=c.department_id
where …;

非等值连接

… join …on salary between … and …
where

自连接:
将一张表当成两张表使用
SELECT e.last_name,e.manager_id,d.employee_id,d.last_name
FROM employees e (inner )join employees d 虚拟建立两张表: 员工表,经理表
on e.manager_id=d.employee_id
where …;

写的顺序:select … from… where… group by… having… order by…
执行顺序:from… where…group by… having… select … order by…

外连接:
主表中的某字段无法与从表中的字段匹配的情景下使用
结果=内+外特有结果

左外连接 left join 设置主表在join的哪边 主表:输出的主要部分的来源 同理右外连接

子查询 相当于给定一个满足所给条件的单个数据或一列or一行

标量子查询,列子查询,行子查询 使用不同之处:关键在于操作符对象所对应的基本单位
单行 多行操作符

联合查询:
union join 1.自动去重 (union all 取消自动属性) 2.前后两个select显示的字段类型和顺序最好一致(但查询的字段总数必须相同)

表的修改,删除
修改

单表:
UPDATE departments d 表名 类似于from,用来指定操作的表 !!! 修改后需要更新,不然有时不会显示修改后的值
SET d.manager_id=200
WHERE manager_id IS NULL;
多表:
UPDATE departments d inner/right/left jion loacation l on …
SET d.manager_id=200
WHERE manager_id IS NULL;

删除:

单表删除:
DELETE FROM departments d WHERE department_id=270;
多表删除:
DELETE FROM departments d INNER JOIN locations l ON … WHERE department_id=270;

库的建立和删除
CREATE DATABASE checksom;
ALTER DATABASE checksom CHARACTER SET gbk;
DROP DATABASE IF EXISTS checksom;

表的建立和管理
建立:
creat table if not exists bala…(
名字 类型,
名字 类型,

名字 类型
);

修改:
改变字段名 ALTER TABLE books CHANGE COLUMN publishmentdate pubdate TIMESTAMP;
修改字符类型 ALTER TABLE books MODIFY COLUMN pubdate datetime;
添加字段 ALTER TABLE books ADD COLUMN annual INT ;
删除字段 ALTER TABLE books drop COLUMN annual;
修改表名 ALTER TABLE books RENAME TO book;

删除:
DROP TABLE copy;

复制表
CREATE TABLE copy like books; 只复制结构

DROP TABLE if EXISTS copy;
INSERT INTO books(bname,author_id,id,price) 复习插入数据
VALUES(‘hello’,100,001,34.0),
(‘neihao’,101,002,35.8); 多行数据只需一个values用 , 隔开
//既复制结构又复制数据
CREATE TABLE copy SELECT *(可替换为需要复制数据的部分字段) FROM books;

复制某些字段但不需要字段下的数据:

where 0;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值