今天是个好天气 logo 今天是个好天气
  • Home
  • Go
  • MySQL
  • Redis
  • LeetCode
  • Hello World
↩️README Hello MySQL SQL 写点SQL InnoDB存储引擎 索引 事务 日志 有哪些锁 MySQL如何加锁 MySQL性能如何优化

基本概念

正如所述,数据的所有存储、 检索、管理和处理实际上是由数据库软件——**DBMS(数据库管理系统)**完成的。MySQL是一种DBMS,即它是一种数据库软件。

DBMS可分为两类:一类为基于共享文件系统的DBMS,另一类为基于客户机—服务器的DBMS。MySQL属于C / S一类的DBMS。

数据库:是一个以某种有组织的方式存储的数据集合,是保存有组织的数据的容器。

表:某种特定类型数据的结构化清单,用来存储某种特定类型的数据。

表由行(row)、列组成,其中每个表列具有相应的数据类型(datatype)。

表中每一行可以用一个主键(primary key)来唯一区分表中的每个行。

主键的使用习惯:

  1. 应该总是定义主键,虽然不是必须的。
  2. 主键不一定定义再表的一列,可以定义为多列,但是注意不能重复。
  3. 不更新、不重用主键列的值、不在主键列中使用可能会更改的值。

结构化查询语言(SQL,Structure Query Language):专门用来与数据库通信的语言,并且几乎所有重要的DBMS都支持SQL。

  1. 尽量给每一条SQL语句加上分号表示结束,虽然不是必要的。
  2. SQL语句不区分大小写,但是一般把关键字是用大写,列和表使用小写,这样增加可读性。

安装MySQL

参考

中文计算机名会导致初始化时出错。

使用MySQL

  1. 打开 cmd 命令行窗口,使用命令导航到 MySQL 服务器 bin 目录下

    cd c:\Program Files\MySQL\MySQL Server 8.0\bin
    
    # 添加到path中成为全局命令
    
  2. 连接到 MySQL 服务器:

    mysql -u root -p
    mysql -u root -p123456
    
    mysql -h主机名 -u用户名 -p密码
    
    • -u root 意味着使用 root 用户连接到 MySQL 服务器;
    • -p 指示 mysql 提示输入密码。
    • 服务端在本机上,可以省略-h。在局域网连接下的电脑,可以考虑使用IP地址访问其他主机上的数据库服务端。
  3. mysql服务端打开和关闭,这是建立在把mysql注册为Windows服务

    net stop mysql80
    net start mysql80
    
  4. 查看相关信息

    mysql> status;  # 显示当前mysql的version的各种信息
    mysql> select version(); # 显示当前mysql的version信息
    mysql> show global variables like 'port'; # 查看MySQL端口号
    
    show tables from world; # 查看其他数据库内的内容
    
    select database(); # 查看当前在哪个数据库
    
    desc stuinfo; # 查看表的结构
    
    use database # 跳到其他数据库
    
  5. 创建数据库

    # 创建一个名为 samp_db 的数据库,数据库字符编码指定为 gbk
    create database samp_db if not exists test;
    create database samp_db character set gbk;
    
  6. 创建数据库表

    CREATE DATABASE test if not exists test;
    
    use test;
    
    CREATE TABLE student (
    	id 		int primary key auto_increment,
    	name 	varchar(255) not null,
    	address varchar(255) not null default 0,
    	city 	varchar(255) not null unique
    );
    
    INSERT INTO student VALUES (1, '刘一', '郑十家隔壁', '河南');
    INSERT INTO student VALUES (2, '陈二',  '李四家隔壁', '安徽');
    INSERT INTO student VALUES (3, '张三',  '白娘子家隔壁', '杭州');
    INSERT INTO student VALUES (4, '李四',  '许仙家隔壁', '杭州');
    INSERT INTO student VALUES (5, '王五',  '李四家隔壁', '杭州');
    INSERT INTO student VALUES (6, '赵六',  '赵六家隔壁', '杭州');
    INSERT INTO student VALUES (7, '孙七',  '张三家隔壁', '杭州');
    INSERT INTO student VALUES (8, '周八',  '雷峰塔附近', '杭州');
    INSERT INTO student VALUES (9, '吴九',  '孙七家隔壁', '杭州');
    INSERT INTO student VALUES (10, '郑十',  '周八家隔壁', '杭州');
     
    SELECT * FROM student;
    
  7. 修改数据表

alter table customers
	add last_name varchar(50) not null after first_name,
	modify column first_name varchar(55) defalut '',
	drop points

    DROP FOREIGN KEY fk_orders_customers,
    DROP PRIMARY KEY,
    ADD FOREIGN KEY fk_orders_customers (customer_id)
    	REFERENCES customers (customer_id)
    	ON UPDATE CASCADE
    	ON DELETE NO ACTION;

8. 删除数据库表

  ```sql
  DROP TABLE 表名称;     -- 用于删除数据库中的现有表。
  TRUNCATE TABLE 表名称; -- 用于删除表内的数据,但不删除表本身。
  ```

  ```sql
  -- 删除现有表 Shippers:
  DROP TABLE Shippers;
  -- 删除现有表 Shippers 表内的数据,不删除表:
  TRUNCATE TABLE Shippers;
  ```

9. 字符集和排序规则

  ```sql
  show charset
  
  Create/alter table table1
  	character set latin1
  ```

  - 大部分情况下,不需要改变字符集,部分情况下通过改变字符集减小数据库的大小
  - 排序规则大部分情况也不需要改变

10. 存储引擎

  ```sql
  show engines
  
  alter table customers 
  ENGINE = InnoDB
  ```

  
  1. 安装MySQL
  2. 使用MySQL
Created by shixiaocaia | Powered by idoc
Think less and do more.