• Mysql基本命令


    库操作命令:

      新建库:create database db1;

          create database db2 default charset utf8;

      查看库:show databases;

      查看库信息:show create database db1;

      删除库:drop database db1;

      进入库:use db1;

      创建用户:grant all privileges on db1.* to db@'192.168.1.%' identified by '123.com';

    表操作命令:

      查看表:show tables;

      创建表:create table t1(id int,name char(10));

          create table t2(id int,name char(10)) engine=innodb default charset=utf8;

      ########################创建表时列信息设置#########################

      create table t2(

        #可在数据类型后面加auto_increment(自增) primary key(主键,作用:约束值不能为空;加速查找)

        #可在数据类型后面加not null不允许为空(默认允许为空);

        #可在数据类型后面加default *设置默认值

        id int  not null auto_increment primary key,

        name char(10) not null,

        sex char(2) default '男'

      ) engine=innodb default charset=utf8;

      #################################################################

      查看表内容:select * from t1;

      表里插入数据:insert into t1(id,name) values(1,'abc');

             insert into t1(id,name) values(2,'你好');(如果数据库默认编码方式为‘latin’,可能数据无法写入或乱码)

             #通过show variables like 'character%';可以查看默认编码方式

      删除表中数据:delete from t1 where name=abc;

      修改表中数据:update t1 set name='abc';

             update t1 set name='abc' where id=5;

      查看表结构:show create table t1;

      清空表内容:delete from t1;  (不影响自增序列)

            truncate table t1;  (影响自增序列,从1开始重新排序;大表清空优先使用)

      删除表:drop table t1;

      

      外键:

        create table department( id int auto_increment primary key, title char(15))engine=innodb default charset=utf8;

        create table userinfo( uid int auto_increment primary key, name char(32), department_id int, constraint fk_user_depar foreign key (department_id) references department(id)) engine=innodb default charset=utf8;

        #测试

        select * from department;
        +----+-------+
         | id  | title  |
        +----+-------+
         |  1  | it      |
         |  2  | cc    |
        +----+-------+

        insert into userinfo(name,department_id) values('user1',5);

        ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`db1`.`userinfo`, CONSTRAINT `fk_user_depar` FOREIGN KEY (`department_id`) REFERENCES `department` (`id`))

        #删除外键

        alter table userinfo drop foreign key fk_user_depar;

        #如果有其他表依赖你建立外键可以通过下面命令查看

        SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME='userinfo';

        唯一索引:

        #单一索引

        create table admin(
        id int auto_increment primary key,
        user_id int not null,unique uq_ul (user_id),constraint fk_admin_u1 foreign key (user_id) references userinfo1(id),
        password varchar(64) not null)engine=innodb default charset=utf8;

        #如果表已创建可通过alter添加唯一索引

        #联合唯一索引

        alter table score add unique(student_id,corse_id);

        #测试

        insert into score(student_id,corse_id,number) values(1,1,60);

        insert into score(student_id,corse_id,number) values(1,1,66);

        ERROR 1062 (23000): Duplicate entry '1-1' for key 'student_id'

      数据操作补充

        插入数据:

          create table tb11(
          id int auto_increment primary key,name varchar(32),
             age int)engine=innodb default charset=utf8;

          insert into tb11(name,age) values('aaa1',12);

          #多条数据同时插入

          insert into tb11(name,age) values('aaa2',13),('aaa3',18);

          create table tb12(
          id int auto_increment primary key,name varchar(32),
             age int)engine=innodb default charset=utf8;

          #将表tb11的数据读出后插入到表tb12

           insert into tb12(name,age) select name,age from tb11;

         删除数据:

          delete from tb12 where id !=2;

          delete from tb12 where id >=2 and name='aaa3';

         修改数据:

          update tb12 set name='ccc',age=19 where id >2 and name='***';

         查询数据:

          #查询ID是1、5、12的信息(not in查询除1、5、12以外的信息)

          select * from tb12 where id in (1,5,12);

          #查看ID从5到12的信息

          select * from tb12 whete between 5 and 12;

          #查询匹配信息

          #查询以a开头的(%代表0次到N次,_代表一次)

          select * from tb12 where name like 'a%';

          #查询符合结果的前3条

          select * from tb12 limit 3;

          select * from tb12 where name like 'a%' limit 3;

          #查询符合结果,从0位置开始往后的两条数据

          select * from tb12 limit 0,2;

          #排序

          #根据ID列从小到大排序

          select * from tb12 order by id asc;

          #根据ID列从大到小排序

          select * from tb12 order by id desc;

          #多列排序(当age有重复值时再按ID进行排序)

          select * from tb12 order by age desc,id desc;

         分组:

          create table department5(
          id int auto_increment primary key,
          title varchar(32))engine=innodb default charset=utf8;

          insert into department5(title) values('公关'),('公公'),('关关'),('公共');

          select * from department5;
          +----+--------+
          | id  | title     |
          +----+--------+
          |  1  | 公关   |
          |  2  | 公公   |
          |  3  | 关关   |
          |  4  | 公共   |
          +----+--------+

          create table userinfo5(
          id int auto_increment primary key,
          name varchar(32),
          part_id int,constraint fk_user_part foreign key (part_id) references department5(id)
          )engine=innodb default charset=utf8;

           insert into userinfo5(name,part_id) values('user1',2),('user2',4),('user3',1),('user4',3),('user5',2);

          select * from userinfo5;
          +----+-------+---------+
          | id  | name | part_id |
          +----+-------+---------+
          |  1   | user1 |       2 |
          |  2   | user2 |       4 |
          |  3   | user3 |       1 |
          |  4   | user4 |       3 |
          |  5   | user5 |       2 |
          +----+-------+---------+

           #查看userinfo5表中有那些部门(同一个部门只取ID最大的记录)

          #(count计数、max最大值、min最小值、sum求和、avg平均值)

          select max(id),part_id from userinfo5 group by part_id;

          +---------+---------+
          | max(id) | part_id |
          +---------+---------+
          |       3   |       1    |
          |       5   |       2    |
          |       4   |       3    |
          |       2   |       4    |
          +---------+---------+

          #查看userinfo5表中每个部门的人数

          select count(id),part_id from userinfo5 group by part_id;

          +-----------+---------+
          | count(id) | part_id |
          +-----------+---------+
          |         1  |       1  |
          |         2  |       2  |
          |         1  |       3  |
          |         1  |       4  |
          +-----------+---------+

          #如果对聚合函数结果进行二次筛选时必须使用having,不能用where

          select count(id),part_id from userinfo5 group by part_id having count(id) > 1;

        连表查询:

          select * from score;
          +-----+------------+----------+--------+
          | sid  | student_id | corse_id | number |
          +-----+------------+----------+--------+
          |   1   |          1   |        1   |     60  |
          |   3   |          2   |        2   |    100 |
          |   8   |          1   |        3   |     66  |
          |   9   |          2   |        3   |     96  |
          |  10  |          2   |        1   |     93  |
          |  11  |          3   |        1   |     85  |
          |  12  |          3   |        2   |     79  |
          |  13  |          3   |        3   |     82  |
          +-----+------------+----------+--------+

          select * from student;

          +-----+--------+--------+----------+
          | sid  | sname  | gender | class_id |
          +-----+--------+--------+----------+
          |   1   | 钢蛋   | 女     |        1   |
          |   2   | 铁锤   | 女     |        1   |
          |   3   | 山炮   | 男     |        2   |
          +-----+--------+--------+----------+

          #如果要三表及以上直接在后面left join接着写就行

          '''

          select cname,number,tname from score

          left join course on score.corse_id = course.cid

          left join teacher on course.tearch_id = teacher.tid;

          '''

          select * from score left join student on score.student_id = student.sid;

           +-----+------------+----------+--------+------+--------+--------+----------+
          | sid  | student_id | corse_id | number | sid  | sname  | gender | class_id |
          +-----+------------+----------+--------+------+--------+--------+----------+
          |   1   |           1  |          1 |     60  |     1 |  钢蛋   | 女     |        1 |
          |   8   |           1  |          3 |     66  |     1 |  钢蛋   | 女     |        1 |
          |   3   |           2  |          2 |    100 |     2 |  铁锤   | 女     |        1 |
          |   9   |           2  |          3 |     96  |     2 |  铁锤   | 女     |        1 |
          |  10  |           2  |          1 |     93  |     2 |  铁锤   | 女     |        1 |
          |  11  |           3  |          1 |     85  |     3 |  山炮   | 男     |        2 |
          |  12  |           3  |          2 |     79  |     3 |  山炮   | 男     |        2 |
          |  13  |           3  |          3 |     82  |     3 |  山炮   | 男     |        2 |
          +-----+------------+----------+--------+------+--------+--------+----------+

        #查看用户权限

        mysql> show grants for db;
        +---------------------------------------------+
        | Grants for db@%                             |
        +---------------------------------------------+
        | GRANT USAGE ON *.* TO 'db'@'%'              |
        | GRANT ALL PRIVILEGES ON `db1`.* TO 'db'@'%' |
        +---------------------------------------------+
        2 rows in set (0.01 sec)
        #用户授权
        mysql> grant all privileges on db2.* to db@'%';

    * 参考oldboy视频整理

  • 相关阅读:
    maven
    in 和 or 的效率问题
    mac 安装homobrew 报错解决
    卷积的本质及物理意义
    java 多线程 day18 ThreadPoolExecutor
    打jar包
    科三保佑贴
    【问题解决】-《java.lang.NoClassDefFoundException》
    POS-商户手续费-从生活剖析,通俗易懂
    关于荒废空闲时光的思考
  • 原文地址:https://www.cnblogs.com/sparkss/p/11327515.html
Copyright © 2020-2023  润新知