测试*mysql总结

用途

1. 查看系统运行的结果

2. 插入数据

 insert into 表名 values(``````````)

SQL语句

与数据库(RDBMS)对话的工具
关系型数据库:DB2,mysql,Oracle
非关系型数据库:NoSql-redis

DDL数据定义语句

创建表

‘字段名’ 数据类型(长度)

DML数据操作语句

1. insert 添加

  • 向表中插入一行
insert into 表名(字段名1,字段名2,字段名3values('值1')('值2')('值3')
  • 向表中插入多行
INSERT INTO 表名(字段名1,字段名2,字段名3VALUES
(('值1')('值2')('值3') ),
(('值1')('值2')('值3'));

  • 将行从一个表复制到另一个表中。
INSERT INTO 表名 
SELECT *FROM 表名;

2. update 修改

UPDATE 表名
SET 列名1 = 修改为的值1,
    列名2 = 修改为的值3
WHERE
    条件;

3. 删除

  • delete删除
delect from 表名 where 筛选条件
  • truncate (是删除整张表)
truncate table 表名;

DQL数据查询语句

  • select [distinct] 有 distinct是去重,无distinct是没有去重
  • 字段 列名 字段列表是使用英文逗号来进行分割
  • from 表名 关键字后跟表的,可以是多个表名称或视图名称;
  • where 条件 (按索引查询比较快)
  • group by 分组查
  • having 分组查询的交件
  • order by 用于数据显示排序
  • asc 表示升序,它是默认值
  • desc 表示降序
  • limit 用于分页显示,它有两个参数,第一个参数是起始值,第二个参数是显示的数量

单表查询

算术运算符
  • 算术运算符: + - * / (除也可以写成 div , div 取整 ) % (取模可以写成 mod )
-- 例如:
-- 1、选出id为奇数的数据
select*from 表名where id%2=1 
-- 2、选出id除以2等于1的数据
select*from 表名where id/2=1
比较运算符
  • 比较运算符: = > >= < <= != (不等于还可以写成 <> ) <=> (安全等于)
    (用做 null 查询时,不能使用 = 来匹配 null 值,而是要使用 is 来进行匹配。
    (1) is :匹配等于
    (2)is not :匹配不等于)
例如
-- 1、查询基本工资不等于 10000
select * from 表名 where basic_salary != 10000;


-- 2、 查询 commission_pct 等于 null 数据
select * from t_salary where commission_pct = null;
逻辑运算符
  • 逻辑运算符包括与( && )、或( || )、非( not )操作。
-- 1、查询性别为男,并且在  1990 年1月2日 以前出生的员工
select * from t_employee where gender='男' and birthday < '1990-01-02';select * from t_employee where gender='男' && birthday < '1990-01-02';


-- 2、查询职位编号 job_id 是 1 或 2 的员工
select * from t_job where job_id=1 or job_id=2;select * from t_job where job_id=1 || job_id=2;
范围和集合
  • 范围查询需要使用到 between…and… 来查询,而集合就需要使用 in 或 not in 来查询。
-- 1、查询基本薪资在 9000~12000 之间的员工编号和基本薪资
select * from t_salary where basic_salary between 9000 and 12000;select * from t_salary where basic_salary>=9000 and basic_salary<=12000;


-- 2、查询 eid 的值为 1、3、5的基本薪资。
select * from t_salary where eid=1 or eid=3 or eid=5;select * from t_salary where eid in (1,3,5);
模糊查询
  1. 模糊查询需要使用 like 关键字,也可使用 not like 来进行查询。要模糊查询中,我们还可以使用
    通配符:
  • % :表示 0 ~ n 个字符
  • _ :表示一个字符
-- 1、我们可以查询以 ' 孙 ' 开头的员工。
select * from t_employee where ename like '孙%';


-- 2、姓名是以 孙 开头的员工信息。
select * from t_employee where ename like '孙_';
-- 3、姓名是有孙 字的员工信息。
select * from t_employee where ename like '%孙%';

统计查询
  • 在 SQL 中,统计查询一般会用到如下几种:
  • sum() :用于求和统计
  • avg() :用于求平均值
  • count() :用于获取总记录数
  • max() :用于获取最大值
  • min() :用于获取最小值
-- 1、查询员工的平均工资。
select avg(basic_salary) as '平均工资' from t_salary;

-- 2、获取工资表中最高的工资。
select max(basic_salary) as '最高工资' from t_salary;

-- 3、获取工资表中最低的工资
select min(basic_salary) as '最低工资' from t_salary;

-- 4、获取所有员工的工资总和
select sum(basic_salary) as '工资总和' from t_salary;

-- 5、获取员工总数
select count(*) as '员工总数' from t_salary;
(使用 count() 来进行查询时,参数不能为空。参数可以是数字、字符、星号、某个字段,结果都一样。)
分页查询(limit)
-- 分页显示员工信息,每页显示 2 名员工。
-- 第一页的数据 :
select eid,ename,gender,tel,birthday from t_employee limit 0, 2;

-- 第二页的数据:
select eid,ename,gender,tel,birthday from t_employee limit 2, 2;

-- 第三页数据:
select eid,ename,gender,tel,birthday from t_employee limit 4, 2;
分组查询
  • 分组查询需要使用 group by 关键字来进行分组,还可以能使用 having 关键字来进行条件筛选。
    分组查询详解
排序查询
  • 排序查询会使用到 order by 关键字,还会使用到 asc 或 desc 关键字。
-- 1、查询所有员工信息,并按员工的编号的降序序进行显示
select eid,ename,gender,tel,birthday 
from t_employee 
order by eid desc ;

-- 2、查询所有员工信息,并按员工的编号的升序进行显示
select eid,ename,gender,tel,birthday from t_employee 
order by eid asc;-- order by 默认升序
select eid,ename,gender,tel,birthday from t_employee 
order by eid;

子查询

where 型子查询:把子查询作为 where 的条件(条件)
-- 1、查询比孙红雷的工资高的员工信息
select eid,ename,gender,tel
from t_employee
where eid in (
    select eid
    from t_salary
    where basic_salary > (
        select basic_salary
        from t_employee e, t_salary s
        where e.ename='孙红雷' and e.eid=s.eid
        )
);
from 型子查询:把子查询作为 from 的临时表(数据)
-- 1、查询出比部门平均工资高的员工编号和基本工资
select te.eid, te.ename, basic_salary 
from t_salary ts join t_employee te
    on ts.eid=te.eid 
join (
      select dept_id, avg(basic_salary) as avg_salary 
      from t_employee e, t_salary s 
      where e.eid=s.eid 
      group by dept_id 
      ) as temp 
on te.dept_id=temp.dept_id 
where ts.basic_salary > temp.avg_salary;
exists 型子查询:把子查询作为判断是否存在的条件(条件)
-- 1、查询必须有员工的部门信息
select did,dname,description 
from t_department 
where exists( 
    select eid,ename,gender,dept_id 
    from t_employee 
    where dept_id is not null 
);
copy 型子查询:用于复制表数据或结构
-- 1、 复制表的结构
create table 表名 like 被复制的表名;

-- 2、复制表结构和数据
create table 表名 as (select * from 被复制的表名);

-- 3、添加查询的数据 
insert into 复制后的表名 select * from 被复制的表名;

-- 4、跨数据库复制
create table 表名 like 被复制数据库名.被复制的表名;  
create table 新数据库名.表名 like 被复制数据库名.被复制的表名;

-- 5、复制表中部分字段和数据
create table 表名 as ( 
select 要复制的字段列表 
from 被复制的表名 
where 条件 
)

-- 6、在创建表的同时定义表的字段
create table 表名(
 字段名 类型(长度) [主键][自增][非空][默认值][注释] 
) as (
select 被复制的字段 from 被复制的表名 
)

多表查询

笛卡尔,交叉查询
内关联查询
左外关联查询
SELECT * FROM table_A LEFT JOIN table_B ON a_user_id = b_user_id;

左外关联查询

右外关联查询
SELECT * FROM table_A RIGHT JOIN table_B ON a_user_id = b_user_id;

右外关联查询

特殊的DQL

自关联查询
关联查询(内、外关联都可以),条件是关联的表的同一个表

自关联查询详解

union组合查询
select 列名1,列名2,列名3,···· from 表名1
left 表名2 on 表名1。字段名=表名2.字段名
union
select 列名1,列名2,列名3,···· from 表名1
right 表名2 on 表名1。字段名=表名2.字段名
常用函数

分组函数

数字相关函数

字符串相关函数

日期相关函数

逻辑函数

DCL数据控制语句,grant

DCL(Data Control Language)是数据库管理系统中的一种语言类型,主要用于定义数据库对象的访问权限和管理用户的访问权限。其中,GRANT是DCL中常用的一种语句,用于授权用户或用户组对数据库对象进行操作。

GRANT语句可以授权对指定对象执行SELECT、INSERT、UPDATE、DELETE等操作,并且可以限制授权的范围,例如指定具体的表或者列名等。GRANT语句的语法如下:

GRANT privileges ON object TO user;

其中,privileges指要授予的操作权限,object指要授权的对象,可以是表、视图或者其他数据库对象,user指要授权的用户或用户组。例如,以下语句授予用户tom对数据库中的表student执行SELECT和INSERT操作的权限:

GRANT SELECT, INSERT ON student TO tom;

此外,GRANT语句还可以使用WITH GRANT OPTION选项,表示授权的用户可以将其授权给其他用户,具有一定的风险性,需要谨慎使用。

总之,GRANT语句是数据库管理中常用的一种授权语句,可以控制用户对数据库对象的操作权限,保障数据库的安全性和稳定性。

DCL数据事务语句,commit rollback

DCL(Data Control Language)是数据库管理系统中的一种语言类型,用于管理数据库对象的访问权限。与之相对的是DML(Data Manipulation Language),用于数据库对象的操作,例如SELECT、INSERT、UPDATE、DELETE等。

DCL中还包括数据事务语句,主要用于控制数据库事务的提交和回滚,确保数据的一致性和完整性。其中,COMMIT和ROLLBACK是最常用的两个事务控制语句。

COMMIT语句用于将当前事务提交到数据库,使得之前对数据库进行的所有操作永久保存。如果提交成功,所有事务内的修改操作将被更新到数据库,否则将回滚到事务开始前的状态。COMMIT语句的语法如下:

COMMIT;

ROLLBACK语句用于撤销当前事务中的所有操作,并且将数据库恢复到事务开始前的状态。ROLLBACK语句的语法如下:

ROLLBACK;

通常,COMMIT和ROLLBACK语句在一个事务结束时使用,以保证数据的一致性和完整性。在数据库管理中,事务控制是非常重要的,因为它可以避免数据的损坏和丢失,保证了数据库的安全和稳定。

总之,COMMIT和ROLLBACK语句是DCL中常用的两种事务控制语句,可以控制事务的提交和回滚,保证了数据的一致性和完整性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值