zoukankan      html  css  js  c++  java
  • 数据库相关

    数据库操作:

      create database db_name charset utf8;#创建数据库
      drop database db_name;#删除数据库
      use db_name;#切换数据库
      show databases;#查看所有数据库
     
    表操作:
      创建表:
      数据类型:
        整形:
          tinyint smallint int bigint
        浮点型:
           float double
        字符串:
          char varchar text
        日期类型:date datetime timestamp
     
     

    约束:

        1、主键约束  唯一、非空  primary key
        2、外键约束  foreign key
        3、唯一约束  unique
        4、非空约束  not null
        5、默认值约束 default
        6、自增长  auto_increment
      DDL、DCL、DML语句:
        DDL:
          数据定义语句  create、drop、alter
        DML:
          数据操纵语句  select、insert、update、delete
        DCL:
          数据控制语句  grant
     
      建表
          create table student (
            id int primary key auto_increment,
            name varchar(20) not null ,
            phone varchar(11) unique not null,
            sex tinyint default 0,
            addr varchar(50),
            brith datetime default current_timestamp,
            index(name)  
          );
     
          create table score (
            id int primary key auto_increment,
            score float not null,
            sid int not null
            );
         create table student_new like student; -- 快速创建一个和student表结构一样的表
     
      修改表:
          alter table student add class2 int not null; -- 增加字段
          alter table student drop addr; -- 删除字段
          alter table student change name new_name varchar(20) not null; -- 修改字段
          alter table student modify  name varchar(30) ;
      删除表:
        drop table student;
      清空表:
     truncate table student; -- 自增长id会重新开始
      其他操作:
         show tables;-- 查看当前所有表
         show create table student; -- 查看建表语句
         desc student; -- 查看表结构
      
      数据操作:
        增:
          insert into student values ('','python','11111111111',0,'北京','2019-01-03 18:39:23'); --写全
          insert into student  (name,phone) values ('mysql','12345678901'); -- 指定字段
          insert into student  (name,phone) values ('mysql1','12345678902'),('mysql2','22345678901'); --多条
          insert into student_new select * from student; -- 把一个表的数据快速导出到另外一个表
        修改:
          update student set name='mysql3' ; --修改全表数据
          update student set name'mysql2',sex=1; --修改多个字段
          update student set name='mysql3' where id = 1; #指定修改某条数据
        删除:
          delete from student; --整表数据删除
          delete from student where id = 3; --指定数据删除
     
        查询:
         基本查询
         select * from student;
         select id,name,addr from student; --指定字段
         select id as 编号, addr 地址 , name 姓名 from student; --字段加别名
        
         where条件
         select * from student where id=1; --where条件 >,<,>=,<=,!=,<>
         select * from student where id in (1,2,3) and id != 5; -- in和and条件
         select * from student where id between 1 and 5; -- 范围
         select * from student where id between 1 and 5 or id > 10; -- or
        
         排序
         select * from student where id between 1 and 5 order by id desc; -- 一起用的话,order by必须写在where条件后面
         select * from student order by id desc ;  -- 降序排序,按照id,升序的话是asc
         select * from student order by id,name  asc ;  -- 升序,按照id和name排序,asc可以省略不写
        
         分组
         select * from student group by sex; -- 按照某个字段分组,可以写多个字段
         select * from student group by sex having addr !='北京';
         select * from student where id >5  group by sex having addr !='北京'; -- 如果有where条件,必须写在group by前面,group by后面不能再写where条件,如果有条件必须用having子句

    limit
         select id as 编号, addr 地址 , name 姓名 from student limit 2; -- 前N条数据
         select id as 编号, addr 地址 , name 姓名 from student limit 1,5; -- 从第一行开始,向后取5行,不包含第一行的数据
         select * from student where id >0  group by sex having addr !='北京'  limit 5; -- limit必须写在最后面
         select * from student where id >0  group by sex having addr !='北京'  order by id desc limit 5; -- limit必须写在最后面
         #如果一个sql里面有where、group by、排序、limit,顺序一定是1、where 2、group by 3、order by 4、limit
     
         聚合函数
         select count(*) from student; -- 多少条数据
         select count(addr) from student; -- 某个字段不为空的有多少条
         select count(*) 人数 ,sex 性别 from student group by sex; -- 多少条数据
         select avg(age) from student; -- 平均值
         select sum(score) from score;  -- 和
         select min(score) from score;
         select max(score) from score;
     
     
         子查询
          select * from student where id in (select sid from score where score >= 60);
     
         多表查询
         select * from student a ,score b where a.id = b.sid and a.score>90;
     
         select a.name,b.score,a.class2 from student a ,score b where a.id = b.sid and a.score>90;
     
         select a.name ,b.score,a.class2 from student a inner join score b  on a.id = b.sid  where a.score > 90;
     
         select a.name ,b.score,a.class2 from student a left join score b  on a.id = b.sid  where a.score > 90;
     
        授权
          GRANT ALL privileges ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456';
          GRANT ALL privileges ON byz.* TO 'byz'@'%' IDENTIFIED BY '123456';
          flush privileges;
     
  • 相关阅读:
    Python any()
    从 SQL Server 到 MySQL (一):异构数据库迁移
    sql server作业实现数据同步
    分布式异构系统的数据一致性架构实现
    实战:sqlserver 数据实时同步到mysql
    基于MySQL的高可用准实时的数据同步方案
    SQL Server数据同步的研究(单向/双向)
    YY 数据库平台化建设实践
    两台SqlServer数据同步解决方案
    热迁移、异构数据库迁移、传输性能 这些上云的难题阿里云都帮你解决了
  • 原文地址:https://www.cnblogs.com/Dorami/p/11263291.html
Copyright © 2011-2022 走看看