• MySQL基础使用


    基本操作

    • MySQL的重要文件
      1.  MySQL安装目录in mysqld.exe
        •  MySQL服务器程序,必须启动数据库才能正常使用
      2.  MySQL安装目录in mysql.exe
        •  MySQL的客户端程序,用来操作MySQL数据库
      3.  MySQL安装目录 my.ini
        •  MySQL数据库的配置文件
    • 登录:mysql -u用户名 -p密码
    • 退出:quit或exit
    • 基本SQL语法
      1.  SQL语句可以写成单行或者多行,以分号结尾
      2.  MySQL中不区分大小写,但是建议关键字大写
    • SQL语句
      1. 数据定义语言DDL(Data Definition Language)
      2. 数据操作语言DML(data manipulation language)
      3. 数据控制语言DCL(Data Control Language)
      4. 数据查询语言DQL(Data QueryLanguage)
      • 常见语句:
        1. 登录:mysql –u用户名 –p密码
        2. 退出:quitexit
        3. 查看数据库的编码信息:show variables like 'char%';
        4. 显示所有数据库:show databases;
        5. 访问数据库:use 数据库名;
        6. 查看所有的表:show tables;
        7. 创建数据库:CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET=utf8]

     

            8.删除数据库:DROP DATABASE [IF EXISTS] 数据库

            

            

        • 创建
          • 语法
          • CREATE TABLE [IF NOT EXISTS] 表名

            (

            列名 类型,

            列名 类型,

            其他选项

            )

        • 查看表结构:DESC 表名;
        • 删除:DROP TABLE [IF EXISTS]
        • 命名表:RENAME TABLE 旧名 TO 名;
        • 插入数据
          •  INSERT INTO 表名 (列名1,列名2,列名3…) VALUES(1,2,3);
          •  INSERT INTO 表名 VALUES(1,2,3);
        • 修改数据
          • UPDATE 表名 SET 列名1=1,列名2=值2… WHERE …
        • 删除数据
          • DELETE FROM 表名 WHERE…
        • 清空表中的数据
          • TRUNCATE [TABLE] 表名;
        • 查询
          • SELECT * FROM 表名 WHERE…;
          • SELECT 列名1 别名1 , 列名2 别名2 … FROM 表名 WHERE…
          • SELECT * FROM 表名 WHERE … LIMIT 索引 , 长度
      •  函数(做一些计算)
                    1.COUNT
                        - 用来对查询到数据进行计数的。
                        - 例子1:    
                            SELECT COUNT(*) FROM emp;
                            - COUNT(*) 统计所有数据的行数
                        - 例子2:
                            SELECT COUNT(列名) FROM emp;
                            - 统计当前列不为null的数据的条数
                        - 列子3:
                            SELECT COUNT(1) FROM emp;
                            - 和CONUT(1)和CONUT(*)一样
                    2.MAX
                        - 获取多个值中的最大值
                        - 例子:
                            SELECT MAX(sal) FROM emp;
                    3.MIN
                        - 获取多个值中的最小值
                        - 例子:
                            SELECT MIN(sal) FROM emp;
                    4.AVG
                        - 多个值取平均值
                        - 例子:
                            SELECT AVG(sal) FROM emp;
                    5.SUM
                        - 多个值得求和:
                        - 例子:
                            SELECT SUM(sal) FROM emp;
      • 约束
                - 约束就是为表中的内容添加限制条件
                > 主键(PRIMARY KEY)
                    - 就是一条数据的唯一标识,通过主键可以快捷的检索到数据。
                    
                    特点:
                        - 唯一
                        - 非空
                        - 可以被引用
                        
                    - 创建主键:
                        CREATE TABLE t_user(
                            id INT PRIMARY KEY,
                            `name` VARCHAR(50)
                        );
                
                > 主键自增(AUTO_INCREMENT)
                    - 主键自增指的是主键自动生成并且自动累加
                    - 注意:自增主键只适用于int型主键,字符串主键不能使用。
                    - 创建方式:
                        CREATE TABLE t_user2(
                            id INT PRIMARY KEY AUTO_INCREMENT,
                            uname VARCHAR(50)
                        )
                
                > 非空(NOT NULL)
                    CREATE TABLE test_tb(
                        username VARCHAR(50) NOT NULL
                    )
                > 唯一(UNIQUE)
                    CREATE TABLE test_tb(
                        username VARCHAR(50) UNIQUE
                    )
                
                > 外键(FOREIGN KEY)
                    - 外键关联指的是将一个表中的列和另一个表的主键进行关联。
                        FOREIGN KEY (列名) REFERENCES 引用表的表名(引用列的列名)
                        FOREIGN KEY (dept_id) REFERENCES dept(id)
                        
                    - 可以被外键关联的列,一定是主键
      •  1 > 夫妻的关系就是一对一的关系
         2                 > 一个丈夫只能有一个妻子,一个妻子只有一个丈夫
         3                 
         4                 #一对一关系
         5                 #创建一个husband表
         6                 CREATE TABLE husband(
         7                     id INT PRIMARY KEY,
         8                     hname VARCHAR(50)
         9                 )
        10 
        11                 #创建一个wife
        12                 CREATE TABLE wife(
        13                     id INT PRIMARY KEY,
        14                     wname VARCHAR(50),
        15                     FOREIGN KEY (id) REFERENCES husband(id)
        16                 )
        17 
        18                 #插入一个husband
        19                 INSERT INTO husband VALUES(1,'武大郎');
        20 
        21                 INSERT INTO husband VALUE(1,'西门庆');
        22 
        23                 #插入一个wife
        24                 INSERT INTO wife VALUES(1,'潘金莲');
        示例:一对一
      •  1 例子:部门与员工
         2                  - 一个部门可以有多个员工,一个员工只能属于一个部门
         3                  - 一对多的关系我们一般是通过在多的一方来保存一的一方主键
         4                 #一对多的关系
         5                 #创建一个dept表
         6                 CREATE TABLE dept (
         7                     
         8                     id INT PRIMARY KEY AUTO_INCREMENT,
         9                     dept_name VARCHAR(50)
        10 
        11                 )
        12 
        13                 #创建一个员工表
        14                 CREATE TABLE emp(
        15                     id INT PRIMARY KEY AUTO_INCREMENT,
        16                     emp_name VARCHAR(50),
        17                     dept_id INT,
        18                     FOREIGN KEY (dept_id) REFERENCES dept(id)
        19                 )
        示例:1对N
         1 > 老师和学生
         2                 - 一个老师可以有多个学生
         3                 - 一个学生可以有多个老师
         4                 - 多对多的关系我们一般都是以创建一个中间表的形式来映射
         5                 - 例子:
         6                 #多对多的关系
         7                 #创建一个tea
         8                 CREATE TABLE tea(
         9                     id INT PRIMARY KEY AUTO_INCREMENT,
        10                     tname VARCHAR(50)
        11                 )
        12 
        13                 #创建一个学生
        14                 CREATE TABLE stu(
        15                     id INT PRIMARY KEY AUTO_INCREMENT,
        16                     sname VARCHAR(50)
        17                 )
        18 
        19                 #创建一个中间表
        20                 CREATE TABLE tea_stu(
        21                     tea_id INT,
        22                     stu_id INT,
        23                     FOREIGN KEY (tea_id) REFERENCES tea(id),
        24                     FOREIGN KEY (stu_id) REFERENCES stu(id)
        25                 )
        26 
        27 
        28                 #插入几个老师
        29                 INSERT INTO tea VALUES(NULL,'张三丰');
        30                 INSERT INTO tea VALUES(NULL,'陈近南');
        31                 INSERT INTO tea VALUES(NULL,'扫地僧');
        32 
        33                 #插入几个学生
        34                 INSERT INTO stu VALUES(NULL,'张无忌');
        35                 INSERT INTO stu VALUES(NULL,'韦小宝');
        36                 INSERT INTO stu VALUES(NULL,'乔峰');
        37                 INSERT INTO stu VALUES(NULL,'杨过');
        示例:多对多
        1 SELECT SUM(score),id
        2         FROM stu 
        3         WHERE id > 2
        4         GROUP BY snum
        5         HAVING SUM(score) > 90
        6         ORDER BY id ASC
        7         LIMIT 1,2;
        单表查询
         1 纵向连接(union ,union all)
         2         
         3         select name from stu1
         4         UNION all
         5         select name from stu2
         6         
         7         注意:union会对数据进行过滤,保证数据唯一,而union all不会对数据进行过滤!
         8         
         9         横向连接
        10             join on来完成横向连接
        11             inner join :只会显示满足条件的数据!
        12                 select * from person p
        13                 inner join orders o
        14                 on p.id = o.oid
        15                 
        16             left on:又称为:left out on:左外连接会将左表中所有的数据都显示出来!
        17                 select * from person p
        18                 left join orders o
        19                 on p.id = o.oid
        多表纵连

    常见数据类型

    字符串

    数据类型

    说明

    CHAR

    1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR1

    VARCHAR

    可变长度,最多不超过255字节,如在创建时指定VARCHARn),则可存储0~n个字符的变长串

    TINYTEXT

    TEXT,最大长度为255字节

    MEDUIMTEXT

    TEXT,最大长度为16K

    TEXT

    最大长度为64K的变长文本

    LONGTEXT

    Text,最大长度为4GB(纯文本,一般不会到4G

    数值

    数据类型

    说明

    int[(m)]

    有符号值:-2147683648 2147683647- 2^31 2^31- 1

    无符号值:042949672950 2^32 1

    double[(m, d)]

    最小非零值:±2.2250738585072014e 308

    decimal (m, d)

    可变;其值的范围依赖于m d

    时间

    数据类型

    说明

    DATE

    1000-01-01——9999-12-31

    TIME

    -838:59:59——838:59:59

    DATETIME

    1000-01-01 00:00:00——9999-12-31 23:59:59

    TIMESTAMP

    19700101080001——20380119111407

    进制

    数据类型

    说明

    TITYBLOB

    最大长度为255字节

    BLOB

    最大长度为64KB

    MEDIUMBLOB

    最大长度为16MB

    LONGBLOB

    最大长度为4GB

  • 相关阅读:
    脚本添加crontab任务
    docker mysql8 注意
    使用 logrotate 清理日志
    腾讯云cos对象在线显示
    快速部署私人git服务--基于docker化Gogs
    grep 使用
    vsftpd 新增虚拟用户
    unistd.h
    ffmpeg
    H264视频压缩算法
  • 原文地址:https://www.cnblogs.com/kangxingyue-210/p/7491369.html
Copyright © 2020-2023  润新知