美文网首页
mysql学习笔记

mysql学习笔记

作者: eliteTyc | 来源:发表于2019-09-26 09:35 被阅读0次
    #创建数据库
    create database mydb1 character set 'utf8' collate 'utf8_bin';
    
    #展示所有的数据库
    show databases;
    
    #选择数据库
    use mydb1;
    
    #展示某一个数据库创建信息 
    show create database mydb1;
    
    #查看当前正在使用的是哪个数据库
    select database();
    
    #删除数据库
    drop database mybd1;
    
    #创建一个数据表
    create table userinfo(
        # primary key 表示是主键 主键是唯一的且不为空相当于 unique 和not null的效果
        user_id int(255) primary key,
        # unique 表示这个值时唯一的
        user_phone varchar(11) unique not null,
        user_name varchar(16) not null,
        user_age int(200) default 0,
        user_gender int(1) default 0 comment '0女 1男'
    );
    
    
    #展示建表语句
    show create table userinfo;
    
    # 插入一行数据
    insert into userinfo values(1,'18140371589','谭元超',21,1);
    insert into userinfo(user_id,user_phone,user_name) values(2,'18140371588','谭元浩');
    -- insert into userinfo(user_phone,user_name) values('18140371587','张三');
    -- insert into userinfo(user_phone,user_name) values('18140371586','张三1');
    -- insert into userinfo(user_phone,user_name) values('18140371585','张三2');
    -- insert into userinfo(user_phone,user_name) values('18140371584','张三3');
    -- insert into userinfo(user_phone,user_name) values('18140371583','张三4');
    
    #删除一行数据
    delete from userinfo where user_id = 2;
    
    #更新一行数据
    update userinfo set user_name = '谭元超1' where user_id = 1;
    
    #查询一行数据
    select *from userinfo where user_id = 1;
    select *from userinfo;
    
    #查看当前数据库中的所有表
    show tables;
    
    #查看数据表的信息
    desc userinfo;
    
    #删除一张表
    drop table userinfo;
    
    #修改表
    #添加一个字段
    alter table userinfo add user_addr varchar(100);
    #修改某一个字段长度或者约束
    alter table userinfo modify user_addr varchar(255);
    #修改某一个字段,字段名长度与约束
    alter table userinfo change user_addr user_address varchar(200) not null;
    #删除某一个字段
    alter table userinfo drop user_addr;
    #修改表名
    rename table userinfo to user_info;
    
    #查询操作
    #去重复
    select distinct user_age from userinfo;
    # 查询表中的指定字段
    select user_name,user_phone from userinfo;
    # 给每个人的年龄加上10
    select user_name,user_age+10 from userinfo;
    #将某几个字段相加作为一个新的字段
    select user_name,(user_age+user_id) as 新字段 from userinfo;
    #定义数据表别名
    select a.user_name,a.user_id from userinfo as a;
    #查询某个字段在一个列表内,只要值等于括号中的某一个就查出该数据
    select *from userinfo where user_age in (10,50,21);
    #模糊查询%表示占位多个字符,_表示占位一个字符
    select *from userinfo where user_name like '%张%';
    select *from userinfo where user_name like '%张';
    select *from userinfo where user_name like '张%';
    select *from userinfo where user_name like '张_';
    select *from userinfo where user_name like '_张';
    
    # 讲查询结果排序
    select *from userinfo order by user_age asc;-- 升序(默认值)
    select *from userinfo order by user_age desc; -- 降序
    select *from userinfo order by user_age desc,user_gender desc; -- 先按照年龄降序排序,年龄相同时按照性别降序排序
    
    #聚合函数
    select count(user_name) from userinfo;-- 一共有多少条记录
    select sum(user_age) from userinfo;-- 所有记录,某个字段的和值
    
    # 主键 primary key 表示主键 auto_increment表示主键自动递增
    create table person(
        id int primary key auto_increment,
        username varchar(20) not null
    ); 
    
    # 外键约束
    #先创建一个部门表
    create table dept(
        did int primary key auto_increment,
        dname varchar(30)
    );
    #再创建一个员工表,其中dno引用了dept表中的did字段
    create table emp(
        eid int primary key auto_increment,
        ename varchar(30),
        sal double,
        dno int,
        foreign key(dno) references dept(did)
    );
    #向部门表中插入数据
    insert into dept values(1,'研发部');
    insert into dept values(3,'产品部');
    insert into dept values(2,'什么部');
    #向员工表中插入数据
    insert into emp values(1,'张三',20,1);-- 成功 
    insert into emp values(2,'李四',20,4);-- 失败,因为部门表中没有id为4的部门
    
    #内连接
    # 普通内连接
    select *from emp inner join dept on emp.dno = dept.did;
    #隐式内连接
    select *from emp,dept where emp.dno = dept.did;
    
    #外连接
    #左外链接 outer还可以省略不写
    select *from emp left outer join dept on emp.dno = dept.did;
    select *from dept left outer join emp on emp.dno = dept.did;
    select *from dept left join emp on emp.dno = dept.did;
    # 右外链接
    select *from emp right outer join dept on emp.dno = dept.did;
    select *from dept right outer join emp on emp.dno = dept.did;
    select *from dept right  join emp on emp.dno = dept.did;
    
    
    
    
    

    相关文章

      网友评论

          本文标题:mysql学习笔记

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