美文网首页
day17_Mysql

day17_Mysql

作者: KingJX | 来源:发表于2018-09-05 20:22 被阅读0次

    1、DDL

        常用数据类型
        创建表
            create table user(username varchar(30), password char(32));
        查看表结构
            desc user;
        查看表创建语句
            show create table user;
        删除表
            drop table user;
        创建表指定字符集和引擎
            create table user(username varchar(30), password char(32)) engine=innodb default charset=utf8;
        修改字段类型
            alter table user modify username varchar(20);
        添加字段
            alter table user add email varchar(30)
            alter table user add email varchar(30) after username;
        增删改查  curd操作
        首先通过mysql -uroot -p 进入数据库系统,创建数据库dudu,进入数据库dudu use dudu,然后才是创建表的过程
        所有的符号都是英文。
        创建表开始学习增删改
            mysql> create table user(
                -> id int auto_increment,
                -> name varchar(30) not null,
                -> money int not null,
                -> province varchar(20) default null,
                -> age tinyint unsigned not null,
                -> sex enum('女', '男') not null,
                -> primary key(id)
                -> )engine=innodb default charset=utf8;
            【注】单选在插入值的时候,可以直接使用1 2,那么1代表女,2代表男,enum类型如不不给值,默认是第一个
        
        set类型如何插入?
            set('吃', '喝', '玩', '乐', '看')
                    1     2     4    8     16
                 4|8|16      如果是后三个,可以这么写
                 28          也可以加起来,这么写
    

    2、DML

    • 增删改语句
      • 插入记录:
        insert into 表名 value(值1, 值2, ......)
        insert into 表名(字段1, 字段2, ......) value(值1, 值2, ......)
      • 删除记录:
        delete from 表名 where 条件
        !!!必须加where条件, 否则就会全部删除
      • 修改记录:
        update 表名 set 字段1=值1, 字段2=值2 where 条件
        !!!必须加where条件

    3、可视化工具

        当你去操作数据库的时候,其实有3中方式
        (1)使用mysql自带的客户端进行操作
        (2)使用一些第三方的可视化工具管理数据库  比如navicate、sqlyog
        (3)使用代码去操作数据库,比如python、java、php
    

    4、DQL

        基础查询: select * from 表名
    
        query : 查询
        模糊查询:like  '%德%'  只要有 德 字的都符合要求
                % 代表任意多的字符
                like '柳_'   叫 柳某 的都符合要求
                _ 代表一个任意字符
        limit:
            limit 2 : 在结果集中只要前两个
            limit offset, number : offset代表偏移量,number代表数量
            LIMIT number1 OFFSET number2 : number1 是数量  number2 是偏移量
        
        上网的时候,经常会有分页,每页显示10条,
        第一页:select * from table limit 0, 10
        第二页:select * from table limit 10, 10
        第三页:select * from table limit 20, 10
        第n页:select * from table limit (n-1)*10, 10
    
        分组:
            字段只能出现分组字段和统计信息,其它的字段出现没有意义
            select province, count(*) from user group by province;
            select province, count(*) as c from user group by province having c>=2;
            【注】having经常跟在group by的后面,where是跟在表的后面
        select使用顺序
            SELECT xxx FROM xxx WHERE xxx GROUP BY xxx HAVING xxx ORDER BY xxx LIMIT xxx;
            取出拥有年龄大于30岁的明星个数大于两个且第二多的省份
        多表联合
            mysql> create table user(
                -> id int auto_increment,
                -> name varchar(30) not null,
                -> gid varchar(10) default 0,
                -> primary key(id)
                -> )engine=innodb default charset=utf8;
    
            mysql> create table goods(
                -> gid int auto_increment,
                -> name varchar(30) not null,
                -> price int not null,
                -> category varchar(20) not null,
                -> primary key(gid)
                -> )engine=innodb default charset=utf8;
    
            mysql> insert into user(name, gid) values('郭德纲', 1),
                -> ('岳云鹏', 2),
                -> ('曹云金', 0),
                -> ('于谦', 3),
                -> ('牛群', 1),
                -> ('冯巩', 1),
                -> ('大兵', 4),
                -> ('马三立', 0),
                -> ('贾玲', 2);
            
            隐式内连接
                select user.name as uname, goods.name as gname from user, goods where user.gid=goods.gid;
            显示内连接
                select * from user as u join goods as g on u.gid=g.gid;
                select u.name as uname, g.name as gname from user as u join goods as g on u.gid=g.gid;
            三表链接格式
                select * from user as u join goods as g on u.gid=g.gid join price as p on g.pid=p.pid
    

    相关文章

      网友评论

          本文标题:day17_Mysql

          本文链接:https://www.haomeiwen.com/subject/ndszwftx.html