• MySQL(一)


    mysql

    1.初始MySQL

    1.1 为什么学些数据库

    数据库是几乎软件体系中最核心的一个存在。

    1.2 什么是数据库

    数据库(DataBase,简称DB)

    概念:长期存放在计算机内,可共享的大量数据的集合,是一个数据'"仓库"'

    作用:保存,并能安全管理数据(如:增删改查等),减少冗余...

    数据库总揽:

    • 关系型数据库(SQL)
      • MySQL、Oracle、SQL Server、SQLite、DB2,...
      • 关系型数据库通过外键关联来建立表与表之间的关系
    • 非关系型数据库(NOSQL)
      • Redis、MongoDB,...
      • 非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每一个对象自身的属性来决定

    1.3 什么是DBMS

    数据库管理系统(DataBase Management System)

    数据库管理软件,科学组织和存储数据,高效地获取和维护数据

    image-20220709144701030

    1.4 MySQL简介

    image-20220709144829646

    概念:是现在流行的开源的、免费的关系型数据库

    历史:由瑞典MySQL AB公司开发,目前属于Oracle旗下产品

    特点:

    • 免费,开源数据库
    • 小巧,功能齐全
    • 使用便捷
    • 可运行于Windows或Linux操作系统
    • 可适用于中小型甚至大型网站应用

    官网:https://www.mysql.com/

    1.5 安装MySQL

    这里建议大家使用压缩版,安装快,方便,不复杂

    1. 软件下载
    

    mysql5.7 64位下载地址:

    https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip

    2. 下载
    
    1. 下载后得到zip压缩包

    2. 解压到自己想要安装到的目录,本人解压到的是D:\Environment\mysql-5.7.19

    3. 添加环境变量:我的电脑--->属性-->高级--->环境变量

      选择PATH,在其后面添加:你的mysql 安装文件下面的bin文件夹
      
    4. 编辑my.ini文件,注意替换路径位置

      [mysqld]
      basedir=D:\Program Files\mysql-5.7\
      datadir=D:\Program Files\mysql-5.7\data\
      port=3306
      skip-grant-tables
      
    5. 启动管理员模式下的CMD,并将路径切换至mysql下的bin目录,然后输入mysqld -install(安装mysql)

    6. 再输入 mysqld --initialize-insecure --user=mysql 初始化数据文件

    7. 然后再次启动mysql然后用命令 mysql -u root -p 进入mysql管理界面(密码可为空)

    8. 进入界面后更改root密码

    update mysql.user set authentication_string=password('123456') where
    user='root' and Host = 'localhost';
    
    1. 刷新权限

      flush privileges;
      
    2. 修改 my.ini文件删除最后一句skip-grant-tables

    3. 重启mysql即可正常使用

    net stop mysql
    net start mysql
    
    1. 连接上测试出现以下结果就安装好了

    image-20220709152854943

    1.6 SQLyog

    可手动操作,管理MySQL数据库的软件工具

    特点:简洁,易用,图形化

    image-20220709153050895

    image-20220709153120291

    使用SQLyog管理工具自己完成以下操作

    • 连接本地MySQL数据库
    • 新建MySchool数据库
      • 数据库名称MySchool
      • 新建数据库表(grade)
        • GradeID : int(11) , Primary Key (pk)
        • GradeName : varchar(50)

    在历史记录中可以看到相对应的数据库操作的语句

    1.7 连接数据库

    打开MySQL命令窗口

    • 在DOS命令行窗口进入 安装目录\mysql\bin
    • 可设置环境变量,设置环境变量,可以在任意目录打开!

    连接数据库语句: mysql -h 服务器主机地址 -u 用户名 -p 用户密码

    注意: -p后面不能加空格,否则会被当做密码的内容,导致登录失败!

    几个基本的数据库操作命令:

    update user set password=password('123456')where user='root';  修改密码
    flush privileges; 刷新数据库
    show database; 打开某个数据库
    use dbname; 打开某个数据库
    show tables; 显示数据库mysql中所有的表
    describe user;显示表mysql数据库中user表的列信息
    create database name;创建数据库
    use databasename;选择数据库
    
    exit; 退出Mysql
    ? 命令关键词 : 寻求帮助
    -- 表示注释
    /*
    shghf
    sjfj
    shjg         多行注释
    */
    

    2.操作数据库

    2.1 结构化查询语句分类

    名称 解释 命令
    DDL(数据定义语言) 定义和管理对象,如数据库,数据表等 CREATE,DROP,ALTER
    DML(数据操作语言) 用于操作数据库对象中所包含的数据 INSERT,UPDATE,DELETE
    DQL(数据查询语言) 用于查询数据库数据 SELECT
    DCL(数据控制语言) 用于管理数据库,包含管理权限及数据更改 GRANT,commit,rollback

    2.2 数据库操作

    命令操作数据库

    创建数据库: create database [if not exists] 数据库名;

    删除数据库:drop database [if exists] 数据库名;

    查看数据库:show databases;

    使用数据库:use 数据库名;

    对比工具操作数据库

    学习方法:

    • 对照SQLyog工具自动生成的语句学习
    • 固定语法中的单词需要记忆

    image-20220709194934989

    2.3 创建数据表

    属于DDL的一种,语法:

    create table [if not exists] '表名'(
    	'字段名1' 列类型 [属性][索引][注释],
        '字段名2' 列类型 [属性][索引][注释],
        #...
        '字段名3' 列类型 [属性][索引][注释]
    )[表类型][表字符集][注释];
    

    说明:反引号用于区别MySQL保留字与普通字符而引用的(键盘esc下面的键).

    2.4 数据值和列类型

    列类型:规定数据库中该列存放的数据类型

    数值

    类型 说明 存储需求
    tinyint 十分小的数据 1个字节
    smallint 较小的数据 2个字节
    mediumint 中等大小的数据 3个字节
    int 标准的整数 4个字节
    bigint 较大的数据 8个字节
    float 浮点数 4个字节
    double 浮点数 8个字节(精度问题)
    decimal 字符串形式的浮点数 金融计算的时候,一般是使用decimal

    字符串

    类型 存储需求 说明
    char 0~255 字符串固定大小的
    varchar 0~65535 可变字符串
    tinytext 2^8-1 微型文本
    text 2^16-1 文本串

    时间日期

    类型 说明 取值范围
    date YYYY-MM-DD,日期格式 1000-01-01~9999-12-31
    time HH:mm:ss 时间格式 -838:59:59~838:59:59
    datetime YYYY-MM-DD HH:mm:ss 1000-01-01 00:00:00 至 9999-12-31 23:59:59
    timestamp 时间戳,1970.1.1 到现在的毫秒 1970010101000000~2037年的某个时刻
    year 年份表示 1901~2155

    NULL值

    • 理解为"没有值"或"未知值"
    • 不要用NULL进行算术运算,结果仍为NULL

    2.5 数据字段属性

    UnSigned

    • 无符号的
    • 声明该数据列不允许负数

    ZEROFILL

    • 0填充的
    • 不足位数的用0来填充,如int(3),5则为005

    Auto_InCrement

    • 自动增长的,每添加一条数据,自动在上一个记录数上加1(默认)
    • 通常用于设置主键,且为整型类型
    • 可定义起始值和步长
      • 当前表设置步长(AUTO_INCREMENT=100):只影响当前表
      • SET @@auto_increment_increment=5; 影响所有使用自增的表(全局)

    NULL和NOT NULL

    • 默认为NULL,即没有插入该列的数值
    • 如果设置为NOT NULL,则该列必须有值

    DEFAULT

    • 默认的
    • 用于设置默认值
    • 例如,性别字段,默认为"男",否则为"女";若无指定该列的值,则默认值为"男"的值
    -- 目标:创建一个school数据库
    -- 创建学生表(列,字段)
    -- 学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期(datetime),家庭住址,email
    -- 创建表之前,一定要先选择数据库
    CREATE TABLE IF NOT EXISTS 'student'(
     'id' int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
     'name' varchar(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
     'pwd' varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',
     'sex' varchar(2) NOT NULL DEFAULT '男' COMMENT '性别',
     'birthday' datetime DEFAULT NULL COMMENT '生日',
     'address' varchar(100) DEFAULT NULL COMMENT '地址',
     'email' varchar(50) DEFAULT NULL COMMENT '邮箱',
     PRIMARY KEY('id')
    )ENGINE=InnoDB DEFAULT CHARSET=utf8
    -- 查看数据库的定义
    SHOW CREATE DATABASE school;
    -- 查看数据表的定义
    SHOW CREATE TABLE student;
    -- 显示表结构
    DESC student; -- 设置严格检查模式(不能容错了)SET
    sql_mode='STRICT_TRANS_TABLES';
    
  • 相关阅读:
    Python实现网络多人聊天室
    C实现string字符串
    C getchar()
    C++ 数组遍历的两种方式
    Java 发红包
    Java递归实现阶乘
    Go defer语句
    bash shell——sum
    C——letterCounter
    数据结构——链队列(linked queue)
  • 原文地址:https://www.cnblogs.com/lzkalislw/p/16461924.html
Copyright © 2020-2023  润新知