• day 37-8 关于mysql 的增 删 改 查 及联合列表


    1      VARCHAR : 字符串的意思 (括号内的数字代表尾数) 输入的字符串在这个范围内都行

         CHAR  :字符串的意思(区别就有几位数字 必须写几位)

     INT   整数(位数) 输入的数字在范围内都行 最长是10位  后边括号数字可以不加

    BIGINT 整数(位数)  最长是20位

    FLOAT 小数(位数) 输入的数字在范围内都行

    2 创建数据库两种方法

    第一种 右击 新建 

    第二种  输入命令: CREATE  DATABASE  +库名

       CREATE  DATABASE  WANGLUO

    Schema  数据库对象集合

    3 建立列表的格式有两种方式

    新建列表的是的主键   PRIMARY KEY   表示 这个不能重复 一般在id 上

          DOUBLE(10,2)  最大数字是10位  小数最多占2位

    第一种 在列表处 右击新建 然后 按照要求写

    第二种  点击要操作的数据库  然后 查询   新建查询  输入命令:

    例如  name  sex  age 

    create table 列表名(name VARCHAR(10)  NOT NULL PRIMARY KEY ,sex CHAR(2)

    NOT NULL, age int(10)) 列表名完成

    例如 新建王岩练习2 的列表名  p_id ,p_name,p_age,p_menpai,p_leader ,p_sal

    第一步建表

    create table 王岩练习2(

    p_id VARCHAR(19) not null PRIMARY KEY

    ,p_name VARCHAR(19) not null

    ,p_age INT not null

    ,p_menpai VARCHAR(19) not null

    ,p_leader VARCHAR(19) not null

    ,p_sal DOUBLE(10,2) not null)

    第二步上传就是 insert into 王岩练习()或者( p_id ,p_name,p_age,p_menpai,p_leader ,p_sal)values('p001','张三','100','武当','p001','10000'),或者

    ('p002','张无忌','20','明教','0','8000'),

     ('p003','岳不群','40','华山','0','6500'),

    ('p004','东方不败','35','日月神教','0','12000'),

    ('p005','令狐冲','21','明华山','p003','4000'),

    ('p006','林平之','18','华山','p004','2000'),

    ('p007','左冷禅','50','嵩山','0','10000'),

    ('p008','','46','武当','p004','10000'),

    ('p009','张远桥','55','武当','p005','6500');

    4增加一个字符段

    insert into +列表名 (列表的格式分别用英文逗号隔开)values(一 一相对应填入值);

    INSERT INTO `王岩练习` (p_id,p_name,p_age,p_menpai,p_leader,p_sal) VALUES

    ('p001','张三','100','武当','p001','10000');

    5删除delete  删除具体的

    delete   from  +表名+ 条件where 字符段 = 内容

    DELETE FROM 王岩练习 WHERE p_name ='张三'

    drop 删除列表

    drop table +l列表名;(后边以分号结尾)

    DROP TABLE`ren员表`;

    drop 删除数据库

    drop database 库名;

    DROP DATABASE wangluo;

    6 改  update +l列表名 set 字符段 = ‘更改后的名字’ where 字符段= ’更改前的名字‘

    UPDATE  `王岩练习` SET p_name= '张三丰' where p_name= '张三'

    7 查询

    问题1 单条件查询50岁以上的人

    selec  * from 列表名 +条件 字符段 >= 50

    SELECT * FROM `王岩练习` WHERE p_age >=50;

    问题2  双条件查询  50岁以上并且工资10000以上的

    select * from 列表名 +条件  p_age >= 50 and p_sal >10000

    SELECT * FROM `王岩练习` WHERE p_age>50 AND p_sal >8000;

    此时 的and 也可以用符号 但是必须是 双的  &&

    问题2 -1  补充的  问题 工资在5000 在8000之内的 运用between

    SELECT * FROM `王岩练习` WHERE p_sal  BETWEEN 5000 AND 8000:

    问题3  or的用法 省略   但是 必须是 ||

    问题4  找人的名字 模糊查找的用法 用like

    selec  * from 列表名 +条件  like  (模糊的名字)

    SELECT * FROM `王岩练习` WHERE p_name LIKE '张%'

    张% :  张某某     ,%张: 某某张

    问题5  同时包含几个内容的 需要in 

    select * from 列表名 +条件字符段 in(字符段1,字符串2,字符段3)

    SELECT * FROM `王岩练习` WHERE p_menpai in('武当','华山','嵩山')

    问题6  正序 倒叙的问题 order by   正序 asc   倒叙desc

    SELECT * FROM `王岩练习` ORDER BY p_sal ASC;

    SELECT * FROM `王岩练习` ORDER BY p_sal DESC;

    问题7 等于 21岁以上的人 他的领导人是谁

    select p_leader from   '王岩练习'   where p_age ='21'       结果p003

    selcet * p_id  from  '王岩练习'  where p_id = p003;

    第二种 ;SELECT * FROM `王岩练习` WHERE p_id=(SELECT p_leader FROM `王岩练习` WHERE p_age ='21'); 

    逻辑上的运算   不等于      <>    或者       !=(这个很少用)

    -----------------------------

    COLUMNS   ,设置网格的列数,设置列间距   

    查看 数据表结构   show COLUMNS from 表名字 

    alter  改变 

    更改表明    alter table table_name rename table_new_name

    charset   字符集,字符编码

    新建一个utf - 8 的数据库

    create database luodandan charset utf8;  

    更改一个数据的格式为gbk

    ALTER DATABASE luodandan CHARSET gbk;

    查询 (核心);

    1 查询所有;

    select * from 表名;

    * 代表素有 from 表示选取哪个表查询 

    最好把* 换成具体的字符段(字符段就是 建表时候那个 参数  nam varchar(10)  not null)

    SELECT * from wytext;

    2 查询某两个字段

    select  字段1,字段2  from 表名

    SELECT p_name,p_sal from wytext;

    3根据条件查询

    select  * from  表名  where 字段 = '值'

    where ;表示条件  跟在where 后边的统称值为条件  

    SELECT * FROM wytext WHERE p_age > 50;

    4 多条件查询

    select * from 表名 where 字段 1= 值1 and (or)  字段2 = 值2  and(or) 字段 3=值3;

    and 并且符号&  or 或者的意思 | 但是此时的符号 必须是两个  &&     ||

    SELECT * FROM wytext WHERE p_age>'50' AND p_sal>='10000'AND p_menpai ='武当';

    5 逻辑运算查询

    select * from  表名 where 字段1 <> 值1 and  字段2 > 值2;

    逻辑运算符  ;  = , (!=, <>),  >, <, >=, <=

    SELECT * FROM wytext WHERE p_age <> '50' AND p_sal >'10000'

    6 模糊查询   like

    select * from 表名  where 字段 like '%字段%'

    ‘’字段%   表示 字段头xxx

    '%字段'  表示字段结尾 xxx字段

    %字段%  包含的字段   xx字段xxx

    select * from wytext where p_menpai like '%派%';

    7 集合查询(自己理解就是查多个字段的值)

    select  * from 表名  where  字段 in(值1,值2,值3,值4);

    SELECT * FROM wytext WHERE   p_menpai in('派森派','明教','日月神教','武当');

    8 区间查询

    select * from 表名 where 字段 betwee 值1 and 值2;

      两个之间  between and   而且 属于包含的意思(比如说数字)

    SELECT * FROM wytext WHERE p_sal BETWEEN  '10000' and '12000'

    9 排序  正序 ORDER BY   字段  ASC     倒叙 ORDER BY  字段 DESC

    注意 无论是倒叙 还是正序 都是条件  和where 不能同时存在

    select *  from 表名 where  ORDER BY 字段(asc)or desc

    SELECT * FROM wytext ORDER by p_age ASC;

    10 嵌套查询

    select *from 表名 where 字段in(select 字段 from 表名 where  id = 值  )

    注意 () 括号优先 

    遇到= 值唯一 晕倒in的值  集合

    找得是21岁的那人  他的领导是谁

    SELECT * FROM wytext where p_id in(SELECT p_leader FROM wytext WHERE p_age = '21')

    答题继续;

    11  当前工资最高的人员

    最高  max() 

    select max(p_sal)  as  ’起别名 ‘from 表名;

    注意 as ‘起别名’ 这个可以不用写 

    SELECT MAX(p_sal) as p_sal FROM wytext;  这个是工资最高的是多钱  15000

    SELECT p_name FROM wytext WHERE p_sal=(SELECT MAX(p_sal) as p_sal FROM wytext);

    12   当前工资最高的人员

    最低 min()

    select min(p_sal) from 表名;

    select min(p_sal) from wytext ;

    select p_name from wytext  where p_sal = (select min(p_sal) from wytext );

    13 查询所有人的平均工资

    平均值  avg()

    SELECT avg(p_sal)FROM  wytext;

    14  查询所有人员的工资的总和

    sum()  总和

    select sum(p_sal) from wytext;

    15  查询目前有多少个人员

    count()  数数量

    select COUNT(p_id)from wytext;

    16 查询各门派的平均工资

    分组 group by 字符段

    select avg(p_sal) ,p_menpai from wytext group by p_menpai;

    as 的使用情况 更明晰

    select avg(p_sal)as '平均工资', p_menpai as '门派' from wytext group by p_menpai;

    按照顺序  注意 这个顺序 最一定放在最后

    ordr by  字段

    select avg(p_sal),p_menpai,p_name from wytext GROUP BY p_menpai order by avg(p_sal) asc;

    17 查询武当派的最高工资的是谁

    思路 先找人-----工资最高   -------武当派

    注意 (select max(p_sal) from wytext where p_menpai = '武当' ) 结果是个工资的最大值

    SELECT p_name FROM wytext WHERE p_sal = (SELECT MAX(p_sal) FROM wytext WHERE p_menpai= '武当')and p_menpai = '武当'

    18武林中有哪些门派

    SELECT p_menpai FROM wytext ;    ##  表示每个人对应的门派

    SELECT p_menpai FROM wytext  GROUP BY p_menpai;   ##  group by 分组  意思就几个人对应的一组    出来就是单纯的组

    19查询当前武林有哪些门派和门派的平均工资

    select p_menpai ,AVG(p_sal )from wytext  GROUP BY p_menpai;

    20 查询当前人员中的第3条到第7条的数据

    limit  表示分页  limit(x,y)

    x  按照索引 取值 x=1 时候  从2取值

    y 就是本页句有y 个值   每次查询y条数据

    select * FROM wytext limit 2,5

    21查询没有门派的人员有哪些

    主要是表里面 那个有没有null 

    SELECT * FROM wytext WHERE p_menpai is null;    ## 前提是建表时 p_menpai 设置时候就是not null

    SELECT * FROM wytext WHERE p_menpai='';    修改的时候必须是=  不能is

    UPDATE wytext set p_menpai = NULL WHERE  p_id='p008'  这个是在没有设置  not null

    22 查询武当派下有哪些小弟

    -- SELECT * FROM wytext WHERE p_leader=(SELECT p_id FROM wytext WHERE p_menpai = '武当'AND p_leader='0')

    SELECT * FROM wytext WHERE p_menpai = '武当'and p_leader <> '0';   注意引号

    23  各门派的工资总和 并排序

    条件 group by +字段    order by  字段+顺序

    SELECT SUM(p_sal),p_menpai FROM wytext GROUP BY p_menpai ORDER BY SUM(p_sal) ASC;

    24  查询人员并显示门派所在位置(多表联合查询)

    select * from 表1 ,表2 条件 where 表1.共同字段= 表2.共同字段 ;

    select * from wytext, wei where  wytext.p_menpai = wei.a_name;

    注意:如果多表联合查询不加条件则会出现(笛卡尔乘积)  就是 表1的行数 x表2的行数

    注意:在使用多表联合查询时,一定要加条件

    结果:符合两个表条件的结果

    25 查询人员表 如果人员表,如果人员门派在位置则显示位置信息,不存在则不显示位置

    则不显示位置

    select * from  wytext left join wei on  wytext.p_menpai = wei.a_name

    注意 on 表示条件 专门配置 left join来使用

    特点左表数据全要,右表的数据与左表数据相匹配则显示,不匹配则以null 填写

    26 查询位置表 如果人员的门派 位置信息则显示人员,没有则不显示。

    select * from wytext right  join wei on wytext.p_menpai = wei.a_name;

    27 查询登记了地址位置的门派人员信息

    select * from wytext inner join wei on wytext.p_menpai = wei.a_name

  • 相关阅读:
    网络编程之即时通信程序(聊天室)(一)通信流程简介及通信协议定制
    C#常用加密方法解析
    ASP.NET常用数据绑定控件优劣总结
    使用XPO开发时可以参考使用的架构
    渠道会上的体会
    如何利用第三方SDK开发MSN机器人以及实现语音视频?
    对 XPO 的一些问题的解答
    c++ 参数传递 之引用形参 GIS
    指针与引用的区别 GIS
    c++ const 修饰数组 GIS
  • 原文地址:https://www.cnblogs.com/xiaoluoboer/p/8000677.html
Copyright © 2020-2023  润新知