Mysql数据库_DML.sql

来源:互联网 发布:剑三破军道姑捏脸数据 编辑:程序博客网 时间:2024/06/07 16:45
/*
//查询数据必须先插入tb-dept数据,因为tb_emp有外键约束
*/
#1.指明字段进行插入,注意字段和值数量和类型都需匹配
insert into tb_dept(name,loc,description) values ('开发板','广州','负责软件开发工作');
#2.如果插入的values都是所有字段,可以不用显示写入插入的字段名,强烈不推荐,不会影响到自动增长
insert into tb_dept values(2,'财务部','北京','负责财务工作');
#3.测试auto_increment,在删除上2条数据后 主键为 2,3,再插入数据,主键为4
#auto_increment会记住曾经生成的值
#4一次性插入多个记录,MySql特有
insert into tb_dept (name,loc,description)
values ('财务部','北京','负责财务工作'),
       ('市场部','北京','负责市场工作'),
       ('采购部','北京','负责采购工作');
#5.创建一张表和tb_dept表的结构一样
#创建一张表和tb_dept表的结构一样,这种方式只是复制表结构不复制约束
create table tb_dept2 select * from tb_dept;
insert into tb_dept2(id,name,loc,description) select id,name,loc,description from tb_dept;


/*
//更新update
//where的时候建议使用主键或者unique,主键最好,因为与业务无关
*/
update tb_emp set age=26 where id =1;
update tb_emp set age=26,sex='女' where id =1;
/*
//删除delete
//删除是删除一行数据,不用指明列
*/
delete from tb_emp; --删除表所有数据
delete from tb_emp where id =1;
/*
//truncate 阶段表,DDL语句,删除所有数据
*/




/*
// 数据库机制  auto_commit,值是true或false
//查询MySql自动提交设置(1自动提交,0手动提交)
*/
select @@autocommit




/*
//
delete删除数据,保留表结构,可以回滚,如果数据量大,很慢.,回滚是因为备份了删除的数据
(删除数据有2个动作1,删除,2备份)


truncate 删除所有数据,保留表结构,不可回滚,一次全部删除所有数据,速度相对较快
(删除数据只有一个动作1,删除)


drop 删除数据和表结构,删除速度最快(直接从内存抹去把这一块数据)
*/




/*
加减乘除运算
*/
select name,sal,sal*12+100
from tb_emp;
select name,sal,sal*(12+100)
from tb_emp;


/*
null和0还有空字符串不是一个概念
*/
select * from tb_emp;
select * from tb_emp where comn = 0;
select * from tb_emp where comn is null;


/*
改变列的列表头
用于表示计算结果的含义
作为列的别名
若果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都可以通过为别名添加双引号实现
*/
select name '姓名',sal '薪水'
from tb_empl;
select name,sal as '薪水'
from tb_empl;


/*
缺省情况下查询显示所有行,包括重复行
*/
select name
from tb_emp;
/*
使用distinct关键字可从查询结果中清除重复行
*/
select distinct deptno,job
from tb_emp
where deptno=20;


/*
比较运算符 =,>,<,>=,<=,    <>(不等于)
*/
select distinct deptno,job
from tb_emp
where deptno <> 20;
/*
between运算符
*/
select distinct deptno,sal
from tb_emp
where sal between 1500 and 3000; --包含最小值和最大值
/*
in运算符
*/
select distinct deptno,sal
from tb_emp
where sal in (1000,2500,3000);


select distinct deptno,sal
from tb_emp
where sal not in (1000,2500,3000);
/*
like运算符执行模糊查询
(%)可表示零或多个字符
( _ )可表示一个字符
*/


select name
from tb_emp
where name like '_俊%';


select name
from tb_emp
where name like '__盛%'; -- 两个'_'


select name
from tb_emp
where name like '%盛%';






/*
order by  排序  按照sal从高到低排序
*/
select *
from tb_emp
order by sal desc;
/*
order by  排序  按照sal从低到高排序
*/
select *
from tb_emp
order by sal asc;































































0 0
原创粉丝点击