zoukankan      html  css  js  c++  java
  • MySQL基础学习

    1. 初识MySQL

    JavaEE、前端(页面:展示数据)、后台(连击点:JDBC连接前端)、数据库(存数据)

    1.1 为什么要学数据库

    1. 岗位需求
    2. 大数据时代
    3. 被迫需求,去IOE
    4. 数据库是所有软件体系中最核心的存在 DBA

    1.2 什么是数据库

    数据库DB、DataBase

    概念:数据仓库、软件、安装在操作系统之上(windows、linux、mac)

    作用:存储数据、管理数据

    1.3 数据库分类

    关系型数据库(SQL)

    • MySQL、oracle、sql server、 DB2、 SQLlite
    • 通过表和表之间,行列之间的关系进行数据存储(学院信息表、考勤表)

    非关系型数据库(NoSQL)not only

    • Redis、MongoDB
    • 非关系型数据库,对象存储,通过对象的自身属性来决定

    DBMS(数据库管理系统)

    数据库管理软件,科学有效管理我们的数据,维护和获取数据

    1.4 新建数据库

    这里用到了Navicat 可视化工具

    image-20210302143016633

    1.5 新建数据表

    image-20210302143346518

    1.6 命令行基本命令

    mysql -uroot -p****  --连接数据库
    update mysql.user set authentication_string=password('***') where user='root' and Host='localhost'; -- 修改用户密码
    flush privileges; -- 刷新权限
    ---------------------------
    -- 所有语句都是用;结尾
    show databases; -- 查看所有数据库
    mysql > use school -- 切换数据库 use 数据库名
    Database changed
    show tables; -- 查看数据库中所有的表
    describe student; -- 显示数据库中所有表的信息
    create database westos; -- 创建一个数据库
    exit; -- 退出连接
    
    -- 单行注释
    /*
    多行注释
    */
    

    1.7 数据库xxx语言 (CRUD、 CV、 API)

    DDL定义、DML操作、DQL查询、DCL控制

    2. 操作数据库

    操作数据库 -> 操作数据库中的表 -> 操作表中的数据

    mysql关键字不区分大小写

    2.1 创建数据库

    CREATE DATABASE [IF NOT EXISTS] hospital;
    

    2.2 删除数据库

    DROP DATABASE [IF EXISTS] hospital;
    

    2.3 使用数据库

    -- 如果表名是一个特殊字符 需要带``
    USE 'xxx'
    

    2.4 查看数据库

    SHOW DATABASES -- 查看所有数据库
    

    2.5 数据库的列类型

    数值

    类型 备注 大小(字节)
    tinyint 十分小的数据 1
    smallint 较小的数据 2
    mediumint 中等大小 3
    ☆ int 标准的整数 4
    bigint 较大的数据 8
    float 浮点数 4
    double 浮点数 8精度
    double 字符串形式浮点数

    字符串

    类型 备注 长度
    char 字符串固定大小 0-255
    ★varchar 可变字符串 0-65535
    tinytext 微型文本 2^8-1
    ★text 文本串 2^16-1 大文本

    时间日期

    类型 备注 格式
    date 日期格式 YYYY-MM-DD
    time 时间格式 HH:MM:SS
    ★datetime 常用时间格式 YYYY-MM-DD HH:MM:SS
    ★timestamp 时间戳 1970.1.1到现在的毫秒数
    year 年份

    null

    没有值,不要使用其进行运算

    2.6 数据库的字段属性(重点)

    unsigned

    • 无符号整数
    • 声明了该列不能声明为负数

    zerofill

    • 填充0
    • 不足位数用0填充 Int(3) > 5 -- 005

    自增

    • 自动在上一条记录的基础上+1(默认)
    • 通常用来设计唯一的主键 index 必须为整数
    • 可以自定义设计主键自增的起始值和步长

    非空

    • null or NULL
    • 假设为not null,不给其赋值就会报错
    • NULL,不填写默认为null

    默认

    • 设置默认的值、不写自动填充

    2.7 sql语句创建数据库

    -- 利用语句创建school表
    -- 创建学生表包含学号id、登录密码varchar(20)、姓名、性别varchar(2)、出生日期(datatime)、家庭住址、email
    -- attention
    -- 使用英文() 表的名称和字段用 `` 括起来
    -- 除最后一行语句不加 ,
    -- 一个表只有一个主键 PRIMARY KEY
    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 '密码',
    		`gender` VARCHAR ( 6 ) NOT NULL DEFAULT 'male' COMMENT '性别',
    		`birthday` DATETIME DEFAULT NULL COMMENT '生日',
    		`address` VARCHAR ( 120 ) DEFAULT NULL COMMENT '地址',
    		`email` VARCHAR ( 50 ) DEFAULT NULL COMMENT 'email',
    	PRIMARY KEY ( `id` ) 
    	) ENGINE = INNODB DEFAULT charset=utf8
    

    成功返回

    image-20210303155625086

    格式

    CREATE TABLE [IF NOT EXISTS] `表名`(
    	'字段名' 列类型 [属性][索引][注释],
      '字段名' 列类型 [属性][索引][注释],
       .....
      '字段名' 列类型 [属性][索引][注释],
    )[表类型][字符集设置][注释]
    

    常用显示命令

    SHOW CREATE DATABASE school
    SHOW CREATE TABLE student
    DESC student
    

    2.8 修改、删除表

    -- 修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
    ALTER TABLE teacher RENAME AS teacher
    -- 增加表的字段 ALTER TABLE 表名 ADD 字段名 列属性
    ALTER TABLE teacher ADD age INT(11)
    -- 修改表的字段(重命名,修改约束)
    ALTER TABLE teacher MODIFY age VARCHAR(11) -- 修改约束
    ALTER TABLE teacher CHANGE age  age1 INT(1) -- 字段重名名
    
    -- 删除表的字段
    ALTER TABLE teacher DROP age1
    
    -- 删除表(如果表存在再删除)
    -- 所有的创建和删除操作尽量加上判断 以免报错
    DROP TABLE IF EXISTS teacher
    

    3. MySQL数据管理

    3.1 外键(了解即可)

    为数据库级别的物理外键,不建议使用,故不做练习

    最佳实践

    • 数据库就是作为单纯用来存数据、只有行数据、列字段的表
    • 使用多张表的数据,想使用外键就用程序去实现

    3.2 DML语言★

    3.3 添加

    3.4 修改

  • 相关阅读:
    java中分页对象类
    java日期处理类DateUtil
    java日期处理类DateUtil
    Java Socket编程
    MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
    java中用SAX方式解析xml文件
    First Demo
    软件测试面试/笔试题题库(知识的搬运工,不谢!)
    2017年 6月29 开始博客园之旅--愿自己变得更强大!
    DUIEngine使用Visual Studio 2010编译Debug_Dll版有关Error MSB3073错误解决方案
  • 原文地址:https://www.cnblogs.com/coderzjz/p/14471173.html
Copyright © 2011-2022 走看看