zoukankan      html  css  js  c++  java
  • mysql

    数据库管理软件

    Mysql  关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成

    表头(header): 每一列的名称;

    • 列(row): 具有相同数据类型的数据的集合;
    • 行(col): 每一行用来描述某个人/物的具体信息;
    • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
    • 键(key): 表中用来识别某个特定的人物的方法, 键的值在当前列中具有唯一性。

    MySQL 服务端操作

    在 Windows 命令提示符下运行:

    启动: net start MySQL

    停止: net stop MySQL

    卸载: sc delete MySQL

    MySQL 客户端操作

    Windows cmd 下 键入

    启动:  mysql  -h主机名 -u用户名 -p密码 

    退出: exit/quit

    创建本机登录         create user 'zc'@'localhost' identified by '123456'; 

    创建指定ip登录      create user 'zc'@'192.168.11.32' identified by '123456';

    创建相同网段登录  create user 'zc'@'192.168.11.%' identified by '123456'; 

    查看当前用户 select user();

    查看所有用户 select host,user from mysql.user;

    删除本机账户 drop user 'zc'@'localhost';

    删除指定IP     drop user 'zc'@'192.168.11.32';

    用户授权
    授权 zc  对mysql中的user表有所有的权限
    grant all on mysql.user to 'zc'@'localhost';
    授权 zc  对mysql中的user表用查的权限
    grant select on mysql.user to 'zc'@'localhost';
    授权 zc  对mysql中的user表有增和查的权限
    grant select,insert on mysql.user to 'zc'@'localhost';
    授权 zc  对mysql中的user表有增改查的权限
    grant select,insert,update on mysql.user to 'zc'@'loccalhost';
    授权 zc  对mysql中的user表有增删改查的权限
    grant select,insert,update,delete on mysql.user to 'zc'@'localhost';
    授权 zc  对所有的库和表都有查和增的权限
    grant select,insert on *.* to 'zc'@'localhost';
    
    刷新权限
    flush privileges;
    
    查看权限
    show grants for 'zc'@'192.168.11.%';
    
    创建库         create database zc charset utf-8;  show databases;
    库不存在再创建  create database if not exists zc;
    使用admin建库  mysqladmin -uroot -p密码 create zc  
    删库          drop database zc;  mysqladmin -u root -p密码 drop zc
    create table if not exists `zc`(
    `id` int unsigned auto_increment, 
    `title` varchar(100) not null,
    `author` varchar(40) not null,
    `date` date,
    primary key ( `id` )
    )engine=InnoDB default charset=utf8;
    
    auto_increment  #定义自增属性,一般用于主键,数字会自动加1
    not null  #设置字段不能为空,操作是输入改字段为空就会报错
    primary key  #定义列为主键,可以使用多列来定义主键,列间以逗号分隔
    engine  #设置存储引擎
    charset  #设置编码
    
    查看表结构  desc 表名;
    修改某个字段属性 
    alter table 表名 modify name char(4); #将char(1)更改为char(4);
    修改字段名称
    alter table 表名 change name(原名) stu_name(新名) char(4);
    use 库名; --创建表-- show tables; --数据增删改查insert into/delete from/update/select * from 表名 where 条件 --改表中字段类型modify/改字段名称change原名 新名  --删表 drop table 表名;
    增  insert into 表名(A B C) values (a,b,c);
    查  select * from 表名 where 条件;
    改  update 表名 set stu_name = '山西';
    删  delete from 表名 where id=1;  
    
    清空表
    delete from 表名;  #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
    truncate table test; #删除速度比上一条快,且直接从零开始
    删除表
    drop table 表名;
    
    显示数据表的详细索引信息,包括PRIMARY KEY(主键)
    show index from 表名;
    按列打印 zc 数据库中以 zc 开头的表的信息(查看某个表就把 runoob% 变成表名)
    show table status from zc like 'zc%'G;

    显示数据库  show databases;

    创建数据库: create database 名称 default charset utf8 COLLATE utf8_general_ci;

    CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

    使用库: use 库名;

    创建表: create table 表名(字段 类型) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    create table tb(
    id int not null defalut 2,
    num int not null
    );
           自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
                create table tb1(
                    id int not null auto_increment primary key,
                    num int null
                )
                或
                create table tb1(
                    id int not null auto_increment,
                    num int null,
                    index(id)
                )
                注意:1、对于自增列,必须是索引(含主键)。
                     2、对于自增可以设置步长和起始值
                         show session variables like 'auto_inc%';
                         set session auto_increment_increment=2;
                         set session auto_increment_offset=10;
    
                         show global  variables like 'auto_inc%';
                         set global auto_increment_increment=2;
                         set global auto_increment_offset=10;
    

     

     外键,一个特殊的索引,只能是指定内容
                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)
                )
    

    一个表中只能有一个自增的列,而且自增列必须是一个主键 

    表内容操作

    增
    insert into 表 (列名,列名...) values (值,值,值...)
    insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)
    insert into 表 (列名,列名...) select (列名,列名...) from 表
    删
    delete from 表
    delete fromwhere id=1 and name='alex'
    改    
    update 表 set name = 'alex' where id>1select * fromselect * fromwhere id > 1
    select id,name,gender as g fromwhere id > 1
    a、条件
        select * fromwhere id > 1 and name != 'alex' and num = 12;
        select * fromwhere id between 5 and 16;
        select * fromwhere id in (11,22,33)
        select * fromwhere id not in (11,22,33)
        select * fromwhere id in (select nid from 表)
     
     
    b、通配符
        select * fromwhere name like 'ale%'  - ale开头的所有(多个字符串)
        select * fromwhere name like 'ale_'  - ale开头的所有(一个字符)
     
      
    c、限制
        select * from 表 limit 5;            - 前5行  (包括第5行)
        select * from 表 limit 4,5;          - 从第4行开始的5行(第4行后的5行,不包括第4行)
        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 fromwhere 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

     

     

     

    MySQL中的数据类型

    • 数字类型:
      • 整数: tinyint、smallint、mediumint、int、bigint
      • 浮点数: float、double、real、decimal
    • 日期和时间: date、time、datetime、timestamp、year
    • 字符串类型:
      • 字符串: char、varchar
      • 文本: tinytext、text、mediumtext、longtext
      • 二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

    1、整型

    tinyint(m) 1个字节  范围(-128~127)
    smallint(m) 2个字节  范围(-32768~32767)
    mediumint(m) 3个字节  范围(-8388608~8388607)
    int(m) 4个字节  范围(-2147483648~2147483647)
    bigint(m) 8个字节  范围(+-9.22*10的18次方)

    取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。

    2、浮点型(float和double)

    MySQL数据类型 含义
    float(m,d) 单精度浮点型    8位精度(4字节)        m总个数,d小数位
    double(m,d) 双精度浮点型    16位精度(8字节)       m总个数,d小数位

    设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。

    3、定点数

    浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

    4、字符串(char,varchar)

    char和varchar:

    1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。

    2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。

    3.char类型的字符串检索速度要比varchar类型的快。

    5.日期时间类型

    MySQL数据类型 含义
    date 日期 '2008-12-2'
    time 时间 '12:25:36'
    datetime 日期时间 '2008-12-2 22:06:44'
    timestamp 自动存储记录修改时间

    若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

    数据类型的属性

    MySQL关键字 含义
    NULL 数据列可包含NULL值
    NOT NULL 数据列不允许包含NULL值
    DEFAULT 默认值
    PRIMARY KEY 主键
    AUTO_INCREMENT 自动递增,适用于整数类型
    UNSIGNED 无符号
    CHARACTER SET name 指定一个字符集

  • 相关阅读:
    洛谷 P3366 【模板】最小生成树
    洛谷 P2820 局域网
    一本通【例4-10】最优布线问题
    洛谷 P1546 最短网络 Agri-Net
    图论模板
    洛谷 AT667 【天下一人力比較】
    刷题记录
    洛谷P1553 数字翻转(升级版)
    tornado硬件管理系统-网络与磁盘的实现(7)
    tornado硬件管理系统-内存与swap的实现(6)
  • 原文地址:https://www.cnblogs.com/zhangchen-sx/p/10262430.html
Copyright © 2011-2022 走看看