mysql基础学习

linux启动mysql     service mysqld start

链接数据库  mysql -uroot -p xxxxxxx

navicat  操作写数据库   查询---新建查询 

一:数据库操作

查看所有数据库  show  databases;

新建数据库  create  database syz charset utf8;(指定字符集,没有乱码)

删除数据库   drop database syz;

选择数据库  use syz;

二:操作表

约束  1 自增长 auto_increment   比如学号设置自增长就不用手动输入

         2 非空 not null

         3 唯一  unique 比如身份证号  学号等

         4 主键 primary key   具有唯一性,不能为空

         5 外键

 

增:

      新建表: create table studens (id int auto_increment primary key, name varchar(10) not null,sex varchar(2) ,addr varchar(50),phone int not null unique);

                      create table scores(id int auto_increment primary key,s_id int not null,grade float not null);

     增加字段:alter table syz add momey float not null;             alter table syz add class varchar(10);

     增加字段(指定位置):alter table syz add momey float not null after id;(first before)

删:

     删除表:  drop table students;

     删除字段: alter table syz drop money;

     清空表  truncate table syz;

改:

     改表名  alter table students rename syz;

     修改字段的数据类型             alter table syz  modify name varchar(20);    查看表结构  desc syz;

        修改字段名                alter table syz  change name username int(20);

查:

    查看所有表:  show tablse;

    查看建表语句   show create table syz;

    查看表结构  desc syz;

 

三:数据操作

增:

    插入数据    insert into students(name,sex,addr,phone)values('Tom','男','北京','119');  指定字段

                      insert into students(name,sex,phone)values('Tom','男','119');   指定字段的话,插入的值和字段对应

                      insert into students values('1','sam','男','','119');        不指定字段,要把所有的字段值都写全

  

改:

     修改数据 update students set addr='杭州'   如果不指定条件的话,修改整个表的数据

                   update students set addr='上海'  where name='lily';   指定条件修改单个数据

                   update students set addr='上海',phone=112  where name='lily'; 指定条件修改单个数据

删:

   删除整个表的数据   delete from students;     删除的数据,自增长的id会继续正常

   删除整个表的数据   truncate students;         清空整个表的数据,自增长id从1开始,删除数据比delete快,从磁盘上直接把数据删除,不能恢复数据

   删除指定数据    delete from students where name='lily';

 

查:

    查询所有的数据  select  * from students;

    指定查询的字段    select  name,sex from students;

    指定条件(单个)                select * from students where sex='男';

    指定条件(多个)同时满足 and    select * from students where sex='男' and addr='杭州';

    指定条件(多个)有一个满足or    select * from students where sex='男' or addr='杭州'; 

    用in查询多个值                          select * from students where name in('lily','姚远','姚静') ;

    查询什么到什么之间的between  and (用于数值之间的)     select * from students where phone between 100 and 120;

    模糊查询 like    %代表的是通配符       select * from students where name  like '姚%';   

    - 通配符,表示任意一个单字符          select * from students where name like '姚_';

    给表起别名 在表名后面加别名     select * from students a where a.add = '杭州';   a就是起的别名,如果字段比较长,就用a.   后面的字段就会自动出来

    排序  order by +字段名                 select * from students order by id;(升序)

                                                        select * from students order by id desc;(降序)

    如果要单独查找一个的话,使用order  by,只能放在最后                  select * from students where id =3  order by phone;

    查询数据为空的                            select * from students where addr =''or addr is null ;

    不为空                 is not null  或者 !=''

    去重复 distinct                        select distinct addr from students;    

    统计学生有多少条 count               select count(*) 学生人数 from students;

    按条件查询                                      select count(*) 学生人数 from students where addr='杭州';

    查每个地区有多少人 ,分组                       select addr, count(1) from students group by addr;

    多个字段进行分组                                      select sex,class ,count(1)from students group by sex,class;

    如果group by 后面有条件的话,  必须要用having子句,  having子句里面用到的字段必须出现在select后面  ,如果group by和order by 一起用的话,order by 写在group by      后面                                                    select sex , count(*),name from students where phone >20000 group by id having name like'姚%' 

                                                                  select * from students group by phone having name like'姚%'

    查什么最大的用 max  比如查号码                     select  MAX(phone)  最大号码 from students;

    查最小  min                                            select  min(phone) 最小号码 from students;  

    查平均   avg                                                           select  avg(phone) 平均号码 from students;

    查总和sum                                                     select  sum(phone) 号码总和 from students;

                                                           

 

 

    

    

    

 

    

   

 

posted @ 2018-06-26 14:16  xiaomeng15  阅读(137)  评论(0编辑  收藏  举报