zoukankan      html  css  js  c++  java
  • mysql笔记(1)

    数据库

    MySQL

    单机程序(自己DB)
    
    单机程序(公用DB)
    
    MySQL:是用于管理文件的一个软件
        - 服务端软件
            - socket服务端
            - 本地文件操作
            - 解析指令【SQL语句】
        - 客户端软件(各种各样)
            - socket客户端
            - 发送指令
            - 解析指令【SQL语句】
    
        PS:
            - DBMS数据库管理系统
            - SQL语句
    
    技能:
        - 安装 服务端和客户端
        - 连接
        - 学习SQL语句规则;指示服务端做任意操作
    

    其他类似软件:
    关系型数据库:sqllite,db2,oracle,access,sql server MySQL
    非关系型数据库:MongoDB,redis

    1. MySQL安装

    Windows:
    可执行文件

        压缩包
            放置任意目录
            初始化
            > http://blog.csdn.net/mchdba/article/details/53618276
        针对服务端
        `mysqld --initialize-insecure`
        查看data目录,.err文件中有初始化创建的账号密码信息
     
     
                服务端:E:wupeiqimysql-5.7.16-winx64mysql-5.7.16-winx64inmysqld --initialize-insecure
                       # 用户名 root 密码:空
                启动服务端:
                    E:wupeiqimysql-5.7.16-winx64mysql-5.7.16-winx64inmysqldmysqld
                    
                客户端连接:
                    E:wupeiqimysql-5.7.16-winx64mysql-5.7.16-winx64inmysqldmysql -u root -p 
                    
                    发送指令:
                        show databases;
                        create database db1;
    
                环境变量的配置:
                    E:wupeiqimysql-5.7.16-winx64mysql-5.7.16-winx64in
                    mysqld
                    
                windows服务:
                    E:wupeiqimysql-5.7.16-winx64mysql-5.7.16-winx64inmysqld --install
                    net start MySQL
                    
                    E:wupeiqimysql-5.7.16-winx64mysql-5.7.16-winx64inmysqld --remove
                    
                    net start MySQL
                    net stop MySQL
    
    1. 关于连接

    文件夹【数据库】

    • 文件【表】

      • 数据行【行】
      • 数据行
      • 数据行
    • 连接:
      默认:用户root

            show databases;
            //查看数据库表
            use 数据库名称;
            //使用数据库【文件夹】
            show tables;
            //查看文件夹中的【表格】
            select * from 表名;
            //获取表格的数据
            select name,age,id from 表名;
            //从表中获取某些特定的【字段】
            mysql数据库user表
            use mysql;
            select user,host from user;
    

    通信交流

    • 创建用户:
      create user 'alex'@'192.168.1.1' identified by '123123';
      create user 'alex'@'192.168.1.%' identified by '123123';
      create user 'alex'@'%' identified by '123123';
    • 授权:
      权限 人
    grant select,insert,update  on db1.t1 to 'alex'@'%';
    grant all privileges  on db1.t1 to 'alex'@'%';
    //百分号内填写对方的ip,这样就绑定了对方的用户名和登陆ip 
    revoke all privileges on db1.t1 from 'alex'@'%';
    //移除权限
    DBA: 用户名密码
    

    学习SQL语句规则

    操作文件夹

    create database db2;
    create database db2 default charset utf8; *****
    show databases;
    drop database db2;
    

    操作文件

    show tables;
    create table t1(id int,name char(10)) default charset=utf8;
    create table t1(id int,name char(10))engine=innodb default charset=utf8;
    create table t3(id int auto_increment,name char(10))engine=innodb default charset=utf8;  *****
    
    create table t1(
    列名 类型 null,
    列名 类型 not null,
    列名 类型 not null auto_increment primary key,
    id int,
    name char(10)
    )engine=innodb default charset=utf8;
    # innodb 支持事务,原子性操作
    # myisam myisam
    

    desc customers_info;查看某张表信息/结构

    auto_increment 表示:自增

    自增补充:
    修改自增起始值:`alter table t1             auto_increment=20;`
    自增步长-----
    ——>会话级别:
    show session variables like "auto_inc%";
    //查看会话级别变量
    set session auto_increment_increment=2
    //设置会话步长为2
    set session auto_increment_offset=10;
    //设置会话起始值_
    
    -->全局级别:
    show global variables like "auto_inc%";
    //查看全局变量
    set global auto_increment_invrement=2;
    //设置全局步长
    set global auto_increment_offset=10;
    
    

    primary key: 表示 约束(不能重复且不能为空); 加速查找
    not null: 是否为空

    增删改查:
    *

    标记查看表

    mysql> desc department
        -> ;
    +-------+-------------+------+-----+---------+----------------+
    | Field | Type        | Null | Key | Default | Extra          |
    +-------+-------------+------+-----+---------+----------------+
    | id    | int(11)     | NO   | PRI | NULL    | auto_increment |
    | dname | varchar(32) | YES  |     | NULL    |                |
    +-------+-------------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    
    mysql> show create table stuff G
    *************************** 1. row ***************************
           Table: stuff
    Create Table: CREATE TABLE `stuff` (
      `sid` int(11) NOT NULL AUTO_INCREMENT,
      `sname` varchar(32) DEFAULT NULL,
      `did` int(11) DEFAULT NULL,
      PRIMARY KEY (`sid`),
      KEY `fk_stuff_did` (`did`),
      CONSTRAINT `fk_stuff_did` FOREIGN KEY (`did`) REFERENCES `department` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    

    数据类型:

    • 数字:
      整数
    (范围不同):int tinyint bigint(unsigned/signed)
    

    浮点数

    float
    0.00000100000123000123001230123
    DOUBLE
    0.00000000000000000000100000123000123001230123
    0.00000100000123000000000000000
    decimal(精确小数,可以指定精度)
    0.1
    
    • 字符串:
      字符串类型:char varchar(可变长)
      最高只能有255个字符
      如果高于255,就用text类型
    char(10)      速度快()
    
    varchar(10)   节省空间
    
    PS: 创建数据表定长列往前放
    
    text类型
    
    上传文件: 
    文件存硬盘
    db存路径
    
    • 时间类型
      DATETIME
    • 枚举类型
      enum
    • 集合类型
      set
    create table t1(
    id int signed not null auto_increment primary key,// 主键 自增
    num decimal(10,5),
    name char(10)
    )engine=innodb default charset=utf8;
    

    清空表:

    delete from t1;
    truncate table t1;
    

    删除表:

    drop table t1;
    

    用法:DROP TABLE IF EXISTS "dt_class";
    如果表中存在dt_class,就删除这个表,一般用在表头可以确保创建表的策略。

    • 操作文件中内容

    插入数据:
    insert into t1(id,name) values(1,'alex');
    删除:
    delete from t1 where id<6
    修改:

    update t1 set age=18;
    update t1 set age=18 where age=17;
    

    查看数据:
    select * from t1;

    主键和外键

    • 主键:
      一个表只能有一个主键,但是逐渐可以由多列组成

    • 外键:

    create table userinfo(
        uid bigint auto_increment primary key,
        name varchar(32),
        department_id int,
        xx_id int,
        constraint fk_user_depar foreign key ("department_id",) references       department('id'),
        constraint fk_xx_ff foreign key (xx_id) references XX(id)
    )engine=innodb default charset=utf8;
    //注意,有些版本的mysql并不支持这种,括号内在加 引号的方式。推荐去掉引号和末尾的逗号。
    create table department(
    id bigint auto_increment primary key,
    title char(15)
    )engine=innodb default charset=utf8;
    

    为已经添加好的数据表添加外键:
    语法:
    alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

    作业:
    http://images2015.cnblogs.com/blog/425762/201608/425762-20160803224643778-2071849037.png
    http://www.cnblogs.com/wupeiqi/articles/5729934.html


    作业:

    mysql> create database db_school;
    Query OK, 1 row affected (0.00 sec)
     
    mysql> use db_school;
    Database changed
     
     
    mysql> create table t_teacher(id tinyint unsigned not null auto_increment,name varchar(60) not null,primary key(id))engine=innodb
        -> ;
    Query OK, 0 rows affected (0.02 sec)
     
    mysql> insert into t_teacher(name)value('scott'),('jerry'),('peter'),('jack');
    Query OK, 4 rows affected (0.01 sec)
    Records: 4  Duplicates: 0  Warnings: 0
     
    mysql> select * from t_teacher
        -> ;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | scott |
    |  2 | jerry |
    |  3 | peter |
    |  4 | jack  |
    +----+-------+
    4 rows in set (0.00 sec)
     
     
    mysql>  create table t_course(cid tinyint unsigned not null auto_increment,cname varchar(30) not null,primary key(cid))engine=innodb
        -> ;
    Query OK, 0 rows affected (0.02 sec)
     
     
    mysql> alter table t_course add column tid tinyint not null;
    Query OK, 0 rows affected (0.04 sec)
     
    mysql> insert into t_course(cname,tid)value('oppo','3'),('vivo','2'),('sansang','3');
    Query OK, 3 rows affected (0.01 sec)
    Records: 3  Duplicates: 0  Warnings: 0
     
    mysql> select * from t_course;
    +-----+---------+-----+
    | cid | cname   | tid |
    +-----+---------+-----+
    |   1 | oppo    |   3 |
    |   2 | vivo    |   2 |
    |   3 | sansang |   3 |
    +-----+---------+-----+
    3 rows in set (0.00 sec)
     
    mysql> create table t_class(
        -> id tinyint unsigned not null auto_increment primary key,
        -> class char(12) not null)engine=innodb charset=utf8;
    Query OK, 0 rows affected (0.01 sec)
     
    mysql> insert into t_class(class)values('三年二班'),('三年三班'),('三年一班');
    Query OK, 3 rows affected (0.01 sec)
    Records: 3  Duplicates: 0  Warnings: 0
     
    mysql> select * from t_class;
    +----+--------------+
    | id | class        |
    +----+--------------+
    |  1 | 三年二班     |
    |  2 | 三年三班     |
    |  3 | 三年一班     |
    +----+--------------+
    3 rows in set (0.00 sec)
    
    
  • 相关阅读:
    leetcode 576. Out of Boundary Paths 、688. Knight Probability in Chessboard
    leetcode 129. Sum Root to Leaf Numbers
    leetcode 542. 01 Matrix 、663. Walls and Gates(lintcode) 、773. Sliding Puzzle 、803. Shortest Distance from All Buildings
    leetcode 402. Remove K Digits 、321. Create Maximum Number
    leetcode 139. Word Break 、140. Word Break II
    leetcode 329. Longest Increasing Path in a Matrix
    leetcode 334. Increasing Triplet Subsequence
    leetcode 403. Frog Jump
    android中webView加载H5,JS不能调用问题的解决
    通过nginx中转获取不到IP的问题解决
  • 原文地址:https://www.cnblogs.com/scott-lv/p/7587060.html
Copyright © 2011-2022 走看看