zoukankan      html  css  js  c++  java
  • mysql的常用操作

    基本操作

    #1 操作文件夹(库)
        增
            create database db1 charset utf8;   --指定格式为utf8
    
        查
            show databases;        --查看所有的数据库
            show create database db1; --查看已经建好的数据库信息
        改
            alter database db1 charset gbk; --修改数据库的字符编码
        删
            drop database db1;
        其他
            use database_name;  ---使用某个数据库,相当于进入这个数据库(文件夹)
            select database();  ---显示当前所在的数据库
    
    #2 操作文件(表)
    
        切换到文件夹下:use db1
    
        增
            create table t1(id int,name char(10))engine=innodb;--增加一个表,后面追加了他的数据引擎
            create table t2(id int,name char(10))engine=innodb default charset utf8;--增加一个表,后面追加了他的数据引擎和
        查
            show tables;--查看表中的所有表
            show create table t1; --查看已有的表的类型和desc功能差不多,就是表先形式不好。
    
            desc t1;---查看表结构
        改
            alter table t1 add age int; -----------------给已有的表中添加字段(重点)
                列:alter table ti add 添加的名 类型;
            alter table t1 modify name char(12); --------修改字段的类型。
            rename table 原表名 to 新表名   -------------修改表名
           ---------------------------------------------------------------
            2.修改字段 (以t2表为例)
            alter table t2 modify salary int not null;   # 更改salary字段的数据类型,并加not null的约束条件。
            alter table t2 change salary salaries int;   # 更改salary字段的名字为salaries,注意 会改变约束条件,需要的话,需要添加;
                                                       其实相当于删除了salary字段,重新创建了一个salaries字段。
    
        删
            drop table t1; --直接删除一个表。
    
    #3 操作文件的一行行内容(记录)
        增
            insert into db1.t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
            insert into db1.t1(name) values('egon1'),('egon2'),('egon3');
        查
            select * from t1;
            select name from t1、、、、、、;
            select name,id from t1;
        改
            update t1 set name='SB' where id=4;
    +        update t1 set name='SB' where name='alex';
        删
            delete from t1 where id=4;
    
    
            #对于清空表记录有两种方式,但是推荐后者
            delete from t1;
            truncate t1; #当数据量比较大的情况下,使用这种方式,删除速度快
    
    
    
        #自增id
        create table t5(id int primary key auto_increment,name char(10));
        create table t4(id int not null unique,name char(10));
    
    insert into t5(name) values
    ('egon5'),
    ('egon6'),
    ('egon7'),
    ('egon8'),
    ('egon9'),
    ('egon10'),
    ('egon11'),
    ('egon12'),
    ('egon13');
    
    #拷贝表结构
    create table t7 select * from t5 where 1=2;
    alter table t7 modify id int primary key auto_increment;
    
    insert into t7(name) values
    ('egon1'),
    ('egon2'),
    ('egon3'),
    ('egon4'),
    ('egon5'),
    ('egon6'),
    ('egon7'),
    ('egon8'),
    ('egon9'),
    ('egon10'),
    ('egon11'),
    ('egon12'),
    ('egon13');
    
    
    delete from t7 where  id=1; #删记录
    update t7 set name=''; #修改字段对应的值

    练习

    语法:
    1. 修改表名
          ALTER TABLE 表名 
                              RENAME 新表名;
    
    2. 增加字段
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…],
                            ADD 字段名  数据类型 [完整性约束条件…];
        ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
        ALTER TABLE 表名
                                ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
                                
    3. 删除字段
          ALTER TABLE 表名 
                                        DROP 字段名;
    
    4. 修改字段
          ALTER TABLE 表名 
                              MODIFY  字段名 数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
    
    示例:
    1. 修改存储引擎
    mysql> alter table service 
        -> engine=innodb;
    
    2. 添加字段
    mysql> alter table student10
        -> add name varchar(20) not null,
        -> add age int(3) not null default 22;
        
    mysql> alter table student10
        -> add stu_num varchar(10) not null after name;                //添加name字段之后
    
    mysql> alter table student10                        
        -> add sex enum('male','female') default 'male' first;          //添加到最前面
    
    3. 删除字段
    mysql> alter table student10
        -> drop sex;
    
    mysql> alter table service
        -> drop mac;
    
    4. 修改字段类型modify
    mysql> alter table student10
        -> modify age int(3);
    mysql> alter table student10
        -> modify id int(11) not null primary key auto_increment;    //修改为主键
    
    5. 增加约束(针对已有的主键增加auto_increment)
    mysql> alter table student10 modify id int(11) not null primary key auto_increment;
    ERROR 1068 (42000): Multiple primary key defined
    
    mysql> alter table student10 modify id int(11) not null auto_increment;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    6. 对已经存在的表增加复合主键
    mysql> alter table service2
        -> add primary key(host_ip,port);        
    
    7. 增加主键
    mysql> alter table student1
        -> modify name varchar(10) not null primary key;
    
    8. 增加主键和自动增长
    mysql> alter table student1
        -> modify id int not null primary key auto_increment;
    
    9. 删除主键
    a. 删除自增约束
    mysql> alter table student10 modify id int(11) not null; 
    
    b. 删除主键
    mysql> alter table student10                                 
        -> drop primary key;

    常用的查询语句:

    1、字符串的模糊查询:

    SELECT * FROM tb_stu WHERE sname = '小刘'
    SELECT * FROM tb_stu WHERE sname like '刘%'
    SELECT * FROM tb_stu WHERE sname like '%程序员'
    SELECT * FROM tb_stu WHERE sname like '%PHP%'
    

    2、查询前n条记录

    select *  from class LIMIT 2,4;

    limit 后面是从,之前是从哪里开始,后面是查询几条数据

    3、查询从指定位置开始的n条记录

    SELECT * FROM tb_stu ORDER BY id ASC LIMIT $n


    $n是倒数的索引位置

    4、 查询从指定位置开始的n条记录

    SELECT * FROM tb_stu ORDER BY id ASC LIMIT $_POST[begin],$n
    

    5、查询非空数据

    SELECT * FROM tb_name WHERE address <>'' order by addtime desc
    

    6、显示数据表中重复的记录和记录条数

    SELECT name,age,count(*) ,age FROM tb_stu WHERE age = '19' group by date

     group by是以什么分组

    7、十八对数据进行降序/升序查询 

     SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段 DESC     降序
    
     SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段 ASC       升序

    ORDER BY是排序
    DESC     降序
    ASC      升序

      

     

  • 相关阅读:
    bzoj 4548 小奇的糖果
    CF1151F Sonya and Informatics
    loj 2392「JOISC 2017 Day 1」烟花棒
    loj 2336「JOI 2017 Final」绳
    luogu P3620 [APIO/CTSC 2007]数据备份
    bzoj 4771 七彩树
    CF765F Souvenirs
    bzoj 3145 [Feyat cup 1.5]Str
    luogu P4482 [BJWC2018]Border 的四种求法
    第五章例题
  • 原文地址:https://www.cnblogs.com/806939095xbb/p/7491388.html
Copyright © 2011-2022 走看看