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

原文地址:https://www.cnblogs.com/kangxingyue-210/p/7491369.html