zoukankan      html  css  js  c++  java
  • 数据库 MYSQL操作(一)

    数据库  MYSQL操作总结(一)

    本文主要介绍一下笔者在使用数据库操作的过程中的一些总结,主要的内容包括一下几个内容:

    一、mysql 使用基础(主要包括数据库的安装、基本操作等内容)

    二、mysql中的一些概念(主要包括视图 、存储过程、触发器 、函数、事务)

    三、mysql 中的重中之重:索引

    四、Python操作mysql数据库

    1.基础部分

    1.1 下载安装部分这里就不做过多的介绍了,大家可以谷歌搜索。

    1.2 mysql的基本语句操作

        基本语句操作的部分分为三个层级来说:分别是数据库级别、数据表级别、数据行级别

    1.2.1 数据库级别的操作:

    对于数据库级别的操作无非就是创建数据库和删除数据库:

    1、说明:创建数据库
    create database database-name 
    2、说明:删除数据库
    drop database dbname

    1.2.2 数据表级别的操作:

    对于数据表级别的操作主要有:创建数据库、删除数据库、创建字段、修改字段、删除字段等操作

    1.创建表:
    create table 表名(
        列名  类型  是否可以为空,
        列名  类型  是否可以为空
    )ENGINE=InnoDB DEFAULT CHARSET=utf8
    1  是否可空,null表示空,非字符串
    2             not null    - 不可空
    3             null        - 可空
    4 
    5  默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
    6             create table tb1(
    7                 nid int not null defalut 2,
    8                 num int not null
    参数设定1
    自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
                create table tb1(
                    nid int not null auto_increment primary key,
                    num int null
                )
                或
                create table tb1(
                    nid int not null auto_increment,
                    num int null,
                    index(nid)
                )
                注意:1、对于自增列,必须是索引(含主键)。
                     2、对于自增可以设置步长和起始值
                         show session variables like 'auto_inc%';
                         set session auto_increment_increment=2;
                         set session auto_increment_offset=10;
    
                         shwo global  variables like 'auto_inc%';
                         set global auto_increment_increment=2;
                         set global auto_increment_offset=10;
    rise
    主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
                create table tb1(
                    nid int not null auto_increment primary key,
                    num int null
                )
                或
                create table tb1(
                    nid int not null,
                    num int not null,
                    primary key(nid,num)
                )
    primary_key
     外键,一个特殊的索引,只能是指定内容
                creat table color(
                    nid int not null primary key,
                    name char(16) not null
                )
    
                create table fruit(
                    nid int not null primary key,
                    smt char(32) null ,
                    color_id int not null,
                    constraint fk_cc foreign key (color_id) references color(nid)
                )
    foreign_key

    2.删除表:drop table 表名;

    3.清空表:delete from  表名;truncate table 表名;

    4.修改表:

    添加列:alter table 表名 add 列名 类型
    删除列:alter table 表名 drop column 列名
    修改列:
            alter table 表名 modify column 列名 类型;  -- 类型
            alter table 表名 change 原列名 新列名 类型; -- 列名,类型
      
    添加主键:
            alter table 表名 add primary key(列名);
    删除主键:
            alter table 表名 drop primary key;
            alter table 表名  modify  列名 int, drop primary key;
      
    添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
    删除外键:alter table 表名 drop foreign key 外键名称
      
    修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
    删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

    1.2.3 数据库表内容级别的操作:(主要是对数据的增删该查,很重要!!!

    1、增
    
    insert into 表 (列名,列名...) values (值,值,值...)
    insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
    insert into 表 (列名,列名...) select (列名,列名...) from2、删
    delete from 表
    delete from 表 where id=1 and name='alex'
    3、改
    update 表 set name = 'alex' where id>1
    4、查
    select * from 表
    select * from 表 where id > 1


    对数据的查找一直是做其他操作的保障,必须要把查这一部分先搞好:

    a、条件
        select * from 表 where id > 1 and name != 'alex' and num = 12;
     
        select * from 表 where id between 5 and 16;
     
        select * from 表 where id in (11,22,33)
        select * from 表 where id not in (11,22,33)
        select * from 表 where id in (select nid from 表)
     
    b、通配符
        select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)
        select * from 表 where name like 'ale_'  - ale开头的所有(一个字符)
     
    c、限制
        select * from 表 limit 5;            - 前5行
        select * from 表 limit 4,5;          - 从第4行开始的5行
        select * from 表 limit 5 offset 4    - 从第4行开始的5行
     
    d、排序
        select * from 表 order by 列 asc              - 根据 “列” 从小到大排列
        select * from 表 order by 列 desc             - 根据 “列” 从大到小排列
        select * from 表 order by 列1 desc,列2 asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
     
    e、分组
        select num from 表 group by num
        select num,nid from 表 group by num,nid
        select num,nid from 表  where nid > 10 group by num,nid order nid desc
        select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
     
        select num from 表 group by num having max(id) > 10
     
        特别的:group by 必须在where之后,order by之前
     
    f、连表
        无对应关系则不显示
        select A.num, A.name, B.name
        from A,B
        Where A.nid = B.nid
     
        无对应关系则不显示
        select A.num, A.name, B.name
        from A inner join B
        on A.nid = B.nid
     
        A表所有显示,如果B中无对应关系,则值为null
        select A.num, A.name, B.name
        from A left join B
        on A.nid = B.nid
     
        B表所有显示,如果B中无对应关系,则值为null
        select A.num, A.name, B.name
        from A right join B
        on A.nid = B.nid
     
    g、组合
        组合,自动处理重合
        select nickname
        from A
        union
        select name
        from B
     
        组合,不处理重合
        select nickname
        from A
        union all
        select name
        from B

    对数据库的基本操作就先到这块,剩下的内容有时间再介绍吧。

  • 相关阅读:
    Github Https方式push错误”Empty reply from server”
    github克隆项目中的子模块submodule时遇到的问题
    安卓SDK Manager自动管理各种包
    学会爱上iOS自动布局(Auto Layout)
    WWDC2014之iOS使用动态库
    WWDC2014之App Extensions学习笔记
    Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64
    C++类型处理:typedef decltype
    C++引用和指针
    OpenGL入门1.1:窗口
  • 原文地址:https://www.cnblogs.com/haishiniu123/p/6993497.html
Copyright © 2011-2022 走看看