MySQL基础知识回顾

MarkdownPad Document

MySQL

MySQL:是用于管理文件的一个软件
    - 服务端软件
        - socket服务端
        - 本地文件操作
        - 解析指令【SQL语句】
    - 客户端软件(各种各样)
        - socket客户端
        - 发送指令
        - 解析指令【SQL语句】

    PS:
        - DBMS:数据库管理系统
        - SQL语句

需要掌握的技能:
    - 安装 服务端和客户端
    - 连接
    - 学习SQL语句规则;指示服务端做任意操作

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

MySQL安装

Windows:
    可执行文件安装:
        while True:
            下一步
    压缩包
        放置任意目录
        初始化
            服务端:E:\somewhere\mysql-5.7.16-winx64\bin\mysqld --initialize-insecure
                    # 默认用户名 root 密码:空
        启动服务端:
            E:\somewhere\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld\mysqld

        客户端连接:
            E:\somewhere\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld\mysql -u root -p 

        发送指令:
                show databases;#查看数据库
                create database db1;创建数据库

        环境变量的配置:
            E:\somewhere\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin
            mysqld   添加到系统环境变量PATH

        windows服务:(制作成为Windows服务,可开机自动运行)
            E:\somewhere\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld --install
            net start MySQL

            E:\somewhere\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld --remove

            net start MySQL
            net stop MySQL

关于连接数据库

连接:

    默认:用户root

    show databases;

    use 数据库名称;    #使用数据库

    show tables;      #查看数据表

    select * from 表名;     #查询

    select name,age,id from 表名;

    mysql数据库user表    #系统自带(存放mysql用户账号信息)
    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‘@‘%‘;

          revoke all privileges on db1.t1 from ‘alex‘@‘%‘;

学习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

        auto_increment 表示:自增
        primary key:  表示 约束(不能重复且不能为空); 加速查找
        not null: 是否为空
        数据类型:

            数字:(注意区分有无符号,unsigned,signed)
                tinyint
                int
                bigint

                FLOAT
                    0.00000100000123000123001230123
                DOUBLE
                    0.00000000000000000000100000123000123001230123
                    0.00000100000123000000000000000
                decimal (精确小数表示,底层用字符串实现,推荐使用)
                    0.1

            字符串:
                char(10)      速度快()

                varchar(10)   节省空间

                PS: 创建数据表定长列往前放

                text类型:最大字符65535

                上传文件: 
                    文件存硬盘
                    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;

操作文件中内容
    插入数据:
        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,

        constraint fk_user_depar foreign key (department_id) references department(id),

    )engine=innodb default charset=utf8;

    create table department(
        id bigint auto_increment primary key,
        title char(15)
    )engine=innodb default charset=utf8;
时间: 2024-10-17 00:17:31

MySQL基础知识回顾的相关文章

mysql基础知识之增删查改使用介绍

 mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的student表中的数据如下: mysql> SELECT * FROM student; 一.SELECT语句的使用 1.单表查询 语法格式: SELECT culom1,culom2,culom3 FROM TABLE_NAME; 可以改变字段显示顺序 2.WHERE子句查询 语法格式: SE

java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)

 *java多线程--等待唤醒机制:经典的体现"生产者和消费者模型 *对于此模型,应该明确以下几点: *1.生产者仅仅在仓库未满的时候生产,仓库满了则停止生产. *2.消费者仅仅在有产品的时候才能消费,仓空则等待. *3.当消费者发现仓储没有产品可消费的时候,会唤醒等待生产者生产. *4.生产者在生产出可以消费的产品的时候,应该通知等待的消费者去消费. 下面先介绍个简单的生产者消费者例子:本例只适用于两个线程,一个线程生产,一个线程负责消费. 生产一个资源,就得消费一个资源. 代码如下: pub

java基础知识回顾之java Thread类学习(七)--java多线程通信等待唤醒机制(wait和notify,notifyAll)

1.wait和notify,notifyAll: wait和notify,notifyAll是Object类方法,因为等待和唤醒必须是同一个锁,不可以对不同锁中的线程进行唤醒,而锁可以是任意对象,所以可以被任意对象调用的方法,定义在Object基类中. wait()方法:对此对象调用wait方法导致本线程放弃对象锁,让线程处于冻结状态,进入等待线程的线程池当中.wait是指已经进入同步锁的线程,让自己暂时让出同步锁,以便使其他正在等待此锁的线程可以进入同步锁并运行,只有其它线程调用notify方

java基础知识回顾之java Thread类学习(六)--java多线程同步函数用的锁

1.验证同步函数使用的锁----普通方法使用的锁 思路:创建两个线程,同时操作同一个资源,还是用卖票的例子来验证.创建好两个线程t1,t2,t1线程走同步代码块操作tickets,t2,线程走同步函数封装的代码操作tickets,同步代码块中的锁我们可以指定.假设我们事先不知道同步函数用的是什么锁:如果在同步代码块中指定的某个锁(测试)和同步函数用的锁相同,就不会出现线程安全问题,如果锁不相同,就会发生线程安全问题. 看下面的代码:t1线程用的同步锁是obj,t2线程在操作同步函数的资源,假设不

JS基础知识回顾:引用类型(一)

在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起,而对象时引用类型的一个实例. 尽管ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构,所以虽然说引用类型与类看起来想死,但他们并不是相同的概念. 不过引用类型有的时候也可以被称为对象定义,因为他们描述的是一类对象所具有的属性和方法. 新对象是使用new操作符后跟一个构造函数来实现的,构造函数本身就是一个函数,只不过该函数时处于创建新对象的目的而定义的. ECMASc

MySQL基础知识

MySQL基础知识: 一. 知识点:        1. SQL分类:按照其功能不同,分为3中类别           DDL(Data Defintion Language):数据定义语句,用于定义不同的数据段.数据库.表.列.索引等.常用的语句关键字包括create.drop.alter等;             DML(Data Manipulation Language):数据操纵语句,用于添加.删除.更新和查询数据库记录,并检查数据的完整性.常用的语句关键字主要包括insert.de

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程

java基础知识回顾之java Thread类学习(五)--java多线程安全问题(锁)同步的前提

这里举个例子讲解,同步synchronized在什么地方加,以及同步的前提: * 1.必须要有两个以上的线程,才需要同步. * 2.必须是多个线程使用同一个锁. * 3.必须保证同步中只能有一个线程在运行,锁加在哪一块代码 那么我们要思考的地方有:1.知道我们写的哪些是多线程代码 2.明确共享数据 3.明确多线程运行的代码中哪些语句是操作共享数据的.. 4.要确保使用同一个锁. 下面的代码:需求:两个存户分别往银行存钱,每次村100块,分三次存完. class bank{ private int

java基础知识回顾之---java String final类普通方法

辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      *      * 1,获取:     * 1.1 获取字符串中字符的个数(长度).     *         int length();     * 1.2 取字符串中的某一个字符,其中的参数index指的是字符串中序数.字符串的序数从0开始到length()-1 .     *