mysql操作

  1. 连接服务器:
    shell>mysql -u 用户名 -p
    Enter password:
    或者
    shell>mysql -u 用户名 -p 密码

  2. 断开连接
    mysql> QUIT
    

  3. 多行语句以分号“;”表结束,一条长的语句可以写在不同的行,只要在最后加分号即可。若不想执行输入的 语句则可以使用‘\c’
  4. 不区分大小写
  5. 查看当前已存在的数据库
    mysql> show databases ;

  6. 创建新数据库
    mysql> create database abc;
    Query OK, 1 row affected (0.00 sec)

    注:abc为自己创建的数据库名
  7. 创建表:
    格式:
    mysql> 
    create table 表名(
           字段1 数据类型 ,
           字段2 数据类型 ,
           ......
           字段n 数据类型 ,
    );


    注:创建表之前,需要先选择数据库,如
    mysql> use test1;
    结果:Database changed      否则显示:1046 - No database selected

    下面的范例都是使用如下表:
    表1:
            学生表
    student
                   Sno
    学号,sname姓名,difdate出生日期,   grade年级
    表2:
            课程表 course
                    cno
    课程号,名字cname
    表3:
            成绩单score
                    sno
    学号 cno课程号  score成绩
    mysql> 
    create table student(
           sno varchar(20) not null default '',
           sname varchar(30),
           difdate date,
           grade varchar(10)    
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    create table course(
           cno varchar(20) not null default '',
           cname varchar(20)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    create table score(
           sno varchar(20) not null default '',
           cno varchar(20) ,
           score double
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    结果:
    Query OK, 0 rows affected
    
    Query OK, 0 rows affected
    
    Query OK, 0 rows affected
    
    
    
    
  8. 为了避免中文乱码需以下两步:a.创建数据库时设置编码格式utf-8
    mysql> CREATE DATABASE  test1
    CHARACTER SET 'utf8'
    COLLATE 'utf8_general_ci';
    b.然后创建表时设置编码格式
    create table student(
           sno varchar(20) not null default,
           sname varchar(30),
           difdate date,
           grade varchar(10)    
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  9. 向表中添加一个或多个记录
    注:mysql中的插入日期格式为‘YYYY-MM-DD’,而oracle中 格式为‘DD-M月-YYYY’;字符、汉字、日期需要用单引号;
    格式:
    1.插入部分字段
    mysql>insert into 表名 (字段1,字段2……字段n)
    values(字段1值,字段2值,……)
    2.插入全部的字段,可以省略字段名,如:
    mysql>insert into 表名 
    values(字段1值,字段2值,……)

    范例:插入值
    *表1
    mysql> insert into student values('1','李丽','1993-02-03','2007');
    insert into student values('2','王明','1993-04-02','2008');
    insert into student values('3','李云','1994-03-12','2009');
    insert into student values('4','李四','1992-02-13','2007');
    insert into student values('5','王五','1992-04-13','2010');
    insert into student values('6','赵六','1992-03-28','2009');
    insert into student values('7','张三','1992-08-03','2008');
    
    *表2
    mysql>insert into course(cno,cname) values('1','语文');
    insert into course(cno,cname) values('2','大学英语');
    insert into course(cno,cname) values('3','数学');
    insert into course(cno,cname) values('4','物理');
    insert into course(cno,cname) values('5','生物');
    
    *表3
    mysql>insert into score (sno,cno,score) values('1','1',69);
    insert into score (sno,cno,score) values('1','2',40);
    insert into score (sno,cno,score) values('1','3',67);
    insert into score (sno,cno,score) values('1','4',79);
    insert into score (sno,cno,score) values('1','5',89);
    insert into score (sno,cno,score) values('2','1',97);
    insert into score (sno,cno,score) values('2','2',69);
    insert into score (sno,cno,score) values('2','3',39);
    insert into score (sno,cno,score) values('2','4',90);
    insert into score (sno,cno,score) values('2','5',99);
    insert into score (sno,cno,score) values('3','1',99);
    insert into score (sno,cno,score) values('3','2',69);
    insert into score (sno,cno,score) values('3','3',39);
    insert into score (sno,cno,score) values('3','4',69);
    insert into score (sno,cno,score) values('3','5',99);
    insert into score (sno,cno,score) values('4','1',99);
    insert into score (sno,cno,score) values('4','2',69);
    insert into score (sno,cno,score) values('4','3',39);
    insert into score (sno,cno,score) values('4','4',69);
    insert into score (sno,cno,score) values('4','5',99);
    insert into score (sno,cno,score) values('5','1',79);
    insert into score (sno,cno,score) values('5','2',70);
    insert into score (sno,cno,score) values('5','3',39);
    insert into score (sno,cno,score) values('5','4',69);
    insert into score (sno,cno,score) values('5','5',99);
    insert into score (sno,cno,score) values('6','1',99);
    insert into score (sno,cno,score) values('6','2',69);
    insert into score (sno,cno,score) values('6','3',39);
    insert into score (sno,cno,score) values('6','4',69);
    insert into score (sno,cno,score) values('6','5',80);
    insert into score (sno,cno,score) values('7','1',39);
    insert into score (sno,cno,score) values('7','2',69);
    insert into score (sno,cno,score) values('7','3',89);
    insert into score (sno,cno,score) values('7','4',64);
    insert into score (sno,cno,score) values('7','5',59);
  10. 单表查询
    范例:查询每个表的内容
    *表1
    mysql> select * from student ;
    结果:
    +-----+-------+------------+-------+
    | sno | sname | difdate    | grade |
    +-----+-------+------------+-------+
    | 1   | 李丽  | 1993-02-03 | 2007  |
    | 2   | 王明  | 1993-04-02 | 2008  |
    | 3   | 李云  | 1994-03-12 | 2009  |
    | 4   | 李四  | 1992-02-13 | 2007  |
    | 5   | 王五  | 1992-04-13 | 2010  |
    | 6   | 赵六  | 1992-03-28 | 2009  |
    | 7   | 张三  | 1992-08-03 | 2008  |
    +-----+-------+------------+-------+
    7 rows in set
    *表2
    mysql> select * from course;
    结果:
    +-----+----------+
    | cno | cname    |
    +-----+----------+
    | 1   | 语文     |
    | 2   | 大学英语 |
    | 3   | 数学     |
    | 4   | 物理     |
    | 5   | 生物     |
    +-----+----------+
    5 rows in set
    
    *表3
    mysql> select * from score ;
    +-----+-----+-------+
    | sno | cno | score |
    +-----+-----+-------+
    | 1   | 1   |    69 |
    | 1   | 2   |    40 |
    | 1   | 3   |    67 |
    | 1   | 4   |    79 |
    | 1   | 5   |    89 |
    | 2   | 1   |    97 |
    | 2   | 2   |    69 |
    | 2   | 3   |    39 |
    | 2   | 4   |    90 |
    | 2   | 5   |    99 |
    | 3   | 1   |    99 |
    | 3   | 2   |    69 |
    | 3   | 3   |    39 |
    | 3   | 4   |    69 |
    | 3   | 5   |    99 |
    | 4   | 1   |    99 |
    | 4   | 2   |    69 |
    | 4   | 3   |    39 |
    | 4   | 4   |    69 |
    | 4   | 5   |    99 |
    | 5   | 1   |    79 |
    | 5   | 2   |    70 |
    | 5   | 3   |    39 |
    | 5   | 4   |    69 |
    | 5   | 5   |    99 |
    | 6   | 1   |    99 |
    | 6   | 2   |    69 |
    | 6   | 3   |    39 |
    | 6   | 4   |    69 |
    | 6   | 5   |    80 |
    | 7   | 1   |    39 |
    | 7   | 2   |    69 |
    | 7   | 3   |    89 |
    | 7   | 4   |    64 |
    | 7   | 5   |    59 |
    +-----+-----+-------+
    35 rows in set
    
    格式:
    1:个别字段查询
    select 字段1,字段2 ...... from 表名 
    
    2:显示表中的全部内容
    select * from 表名
    
    3:限定条件查询
    select 字段1,字段2 ......
    from 表名   
    where 条件
    范例:查询2007级姓李的学生信息
    mysql> select  * from student where sname like '李%' and grade=2007;
    结果:
    +-----+-------+------------+-------+
    | sno | sname | difdate    | grade |
    +-----+-------+------------+-------+
    | 1   | 李丽  | 0000-00-00 | 2007  |
    | 4   | 李四  | 0000-00-00 | 2007  |
    +-----+-------+------------+-------+
    2 rows in set
    
    4:分组查询
    select 字段1,字段2 ...... 
    from 表名 
    [where 条件] 
    group by 字段 
    此语句表示按照这个指定的字段进行分组,一般和sql的合计函数一起使用,如sum(),count(),avg(),min(),max(),Var 和 VarP 函数等
    范例:统计每个年级的人数
    mysql> select  grade,count(sno) from student group by grade;
    结果:
    +-------+------------+
    | grade | count(sno) |
    +-------+------------+
    | 2007  |          2 |
    | 2008  |          2 |
    | 2009  |          2 |
    | 2010  |          1 |
    +-------+------------+
    4 rows in set
    
    
    5:限定分组后的字段显示条件查询
    select字段1,字段2 ......
    from 表名
    [where 条件]
    group by 分组字段
    [having 条件]
    注意:HAVING 是可选的。HAVING 与 WHERE 类似,可用来决定选择哪个记录。在使用 GROUP BY对这些记录分组后,HAVING 会决定应显示的记录

    6:按指定顺序查询asc,desc
    select字段1,字段2 ...... 
    from 表名
    [where 条件]
    [group by 分组字段
    having  条件]
    order by 字段a  [asc|desc],字段b [asc|desc],......
    表示按照字段a升序排序或降序排序;若字段a相同,则按照字段b升序排序或降序排序;若字段b相同,则按照字段 ....升序排序或降序排序;......
    
     
     
  11. 多表查询
    1:内链接 inner join
    范例:查询级的各学生的平均成绩,没有成绩的为先作笛卡尔积
    mysql> select * from student s,score sc where s.sno=sc.sno;
    +-----+-------+------------+-------+-----+-----+-------+
    | sno | sname | difdate    | grade | sno | cno | score |
    +-----+-------+------------+-------+-----+-----+-------+
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 1   |    69 |
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 2   |    40 |
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 3   |    67 |
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 4   |    79 |
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 5   |    89 |
    | 2   | 王明  | 1993-04-02 | 2008  | 2   | 1   |    97 |
    | 2   | 王明  | 1993-04-02 | 2008  | 2   | 2   |    69 |
    | 2   | 王明  | 1993-04-02 | 2008  | 2   | 3   |    39 |
    | 2   | 王明  | 1993-04-02 | 2008  | 2   | 4   |    90 |
    | 2   | 王明  | 1993-04-02 | 2008  | 2   | 5   |    99 |
    | 3   | 李云  | 1994-03-12 | 2009  | 3   | 1   |    99 |
    | 3   | 李云  | 1994-03-12 | 2009  | 3   | 2   |    69 |
    | 3   | 李云  | 1994-03-12 | 2009  | 3   | 3   |    39 |
    | 3   | 李云  | 1994-03-12 | 2009  | 3   | 4   |    69 |
    | 3   | 李云  | 1994-03-12 | 2009  | 3   | 5   |    99 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 1   |    99 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 2   |    69 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 3   |    39 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 4   |    69 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 5   |    99 |
    | 5   | 王五  | 1992-04-13 | 2010  | 5   | 1   |    79 |
    | 5   | 王五  | 1992-04-13 | 2010  | 5   | 2   |    70 |
    | 5   | 王五  | 1992-04-13 | 2010  | 5   | 3   |    39 |
    | 5   | 王五  | 1992-04-13 | 2010  | 5   | 4   |    69 |
    | 5   | 王五  | 1992-04-13 | 2010  | 5   | 5   |    99 |
    | 6   | 赵六  | 1992-03-28 | 2009  | 6   | 1   |    99 |
    | 6   | 赵六  | 1992-03-28 | 2009  | 6   | 2   |    69 |
    | 6   | 赵六  | 1992-03-28 | 2009  | 6   | 3   |    39 |
    | 6   | 赵六  | 1992-03-28 | 2009  | 6   | 4   |    69 |
    | 6   | 赵六  | 1992-03-28 | 2009  | 6   | 5   |    80 |
    | 7   | 张三  | 1992-08-03 | 2008  | 7   | 1   |    39 |
    | 7   | 张三  | 1992-08-03 | 2008  | 7   | 2   |    69 |
    | 7   | 张三  | 1992-08-03 | 2008  | 7   | 3   |    89 |
    | 7   | 张三  | 1992-08-03 | 2008  | 7   | 4   |    64 |
    | 7   | 张三  | 1992-08-03 | 2008  | 7   | 5   |    59 |
    +-----+-------+------------+-------+-----+-----+-------+
    35 rows in set
         再添加条件
    mysql>select * from student s,score sc where s.sno=sc.sno and s.grade='2007' ;
    结果:
    +-----+-------+------------+-------+-----+-----+-------+
    | sno | sname | difdate    | grade | sno | cno | score |
    +-----+-------+------------+-------+-----+-----+-------+
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 1   |    69 |
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 2   |    40 |
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 3   |    67 |
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 4   |    79 |
    | 1   | 李丽  | 1993-02-03 | 2007  | 1   | 5   |    89 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 1   |    99 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 2   |    69 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 3   |    39 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 4   |    69 |
    | 4   | 李四  | 1992-02-13 | 2007  | 4   | 5   |    99 |
    +-----+-------+------------+-------+-----+-----+-------+
    10 rows in set
         有重复,所以要进行分组
    mysql> select s.sno ,s.sname , avg(sc.score) 
    from student s,score sc 
    where s.sno=sc.sno and s.grade='2007' 
    group by s.sno,s.sname;
    结果:
    +-----+-------+---------------+
    | sno | sname | avg(sc.score) |
    +-----+-------+---------------+
    | 1   | 李丽  |          68.8 |
    | 4   | 李四  |            75 |
    +-----+-------+---------------+
    2 rows in set
    
    
    2:外连接 outer join
          a)左连接 left join
          b)右连接 right join
          c)
    
    3:交叉连接
  12. mysql日期和字符相互转换方法
    date_format(date,'%Y-%m-%d')     对应于oracle中的to_char(,'yyyy-mm--dd');
    str_to_date(date,'%Y-%m-%d')     相当于oracle中的to_date(,);

  13. 单表更新
    范例:将数学替换成高等数学
    mysql> update course set cname='高等数学' where cname='数学';
    Query OK, 1 row affected
    Rows matched: 1  Changed: 1  Warnings: 0
    
     查看结果:


    mysql> select * from course;
    +-----+----------+
    | cno | cname    |
    +-----+----------+
    | 1   | 语文     |
    | 2   | 大学英语 |
    | 3   | 高等数学 |
    | 4   | 物理     |
    | 5   | 生物     |
    +-----+----------+
    5 rows in set


  14. update更新 多表
    1.使用inner join .....on更新
    范例:2007级学生的数学成绩加5
    mysql> update score sc inner join course c inner join student s on s.sno=sc.sno and c.cno=sc.cno set score=5+sc.score 
    where  s.grade='2007'and c.cname='数学';
    Query OK, 2 rows affected
    Rows matched: 2  Changed: 2  Warnings: 0
    
  15. deleted多表删除
    1.使用inner join .....on删除
    范例:删除姓名是张三的大学语文成绩
    mysql> delete sc.* from score sc inner join student s inner join course c on s.sno=sc.sno and sc.cno=c.cno where s.sname='张三' and c.cname='语文';
    Query OK, 1 row affected
    

  16. 修改表结构alter
    1.增加主键
       格式:alter table 表名 add constraint 主键名 primary key(字段);
    范例:设置student表的主键sno
    mysql> alter table student  add constraint pk_sno primary key(sno);
    Query OK, 0 rows affected
    Records: 0  Duplicates: 0  Warnings: 0
    2.增加外键
       格式:alter table 表名 add constraint 外键名 foreign key(字段) references 关联表的名称(关联表的主键)
    范例:设置score表的外键
    mysql> alter table score add constraint fk_sno foreign key(sno) references student(sno);





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值