MySQL整理

Posted ustc-rjgc2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL整理相关的知识,希望对你有一定的参考价值。

mysql的一些常用语句和知识整理了一下可供参考。博客园的Markdown不支持TOC有点尴尬

登陆

mysql -uroot -ppassword -P3306 -hhost(127.0.0.1)

MySQL语句规范

  • 关键字与函数名都大写
  • 数据库名,表名,字段名小写
  • SQL语句以分号结尾

常用语句示范

  1. SELECT VERSION();
    作用:显示版本号
  2. SELECT NOW();
    作用:显示时间
  3. SELECT USER();
    作用:显示使用者
  4. CREATE {DATABASE} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
    作用:创建数据库
    例如:CREATE DATABASE IF NOT EXISTS test1 DEFAULT CHARACTER SET =utf8
    CREATE DATABASE test1 CHARACTER SET utf8
  5. SHOW {DATABASES} [LINK ‘pattern’]
    作用:显示已经有的数据库
  6. ALTER {DATABASE} [db_name] [DEFAULT] CHARACTER SET [=] charset_name
    作用:修改数据库编码
  7. DROP {DATABASE} [IF EXISTS] db_name
    作用:删除数据库

    数据类型

  • TINYINT
    有符号型:-128-127(1字节)
    无符号型:0-255
  • SMALLINT(2字节)
    [U]:-32768
    [S]:0-65535
  • MEDIUMINT (3字节)
  • INT (4字节)
  • BIGINT (8字节)
  • FLOAT[(M,D)] M数字总数,D为小数点后的位数,7位小数左右
  • DOUBLE[(M,D)]
  • YEAR 1
  • TIME 3
  • DATE 3
  • DATETIME 8
  • TIMESTAMP 4(一般不用,用数字来做,跨时区等问题)

  • CHAR(M) M个字节 M的范围0-255
  • VARCHAR(M) L+1个字节 L<=M 0<=M<=65535
  • TINYTEXT L+1字节 L<28
  • MEDIUMTEXT
  • LONGTEXT
  • ENUM 可供选择的集合
  • SET 集合

    数据表

    数据表是数据库最重要的组成部分之一
    行:记录
    列:字段

SQL语句

登录后用USE db_name打开数据库
SELECT DATABASE(); 检验

  • CREATE TABLE [IF NOT EXISTS] table_name (
    Column_name data_type,
    ….
    )
    比如:
    CREATE TABLE tb1(
    Username VARCHAR(20) NOT NULL,
    Age TINYINT UNSIGNED NULL,
    SALARY FLOAT(8,2) UNSIGNED
    );
    注:NOT NULL 标注属性是否允许字段为空

  • SHOW TABLES [FROM db_name] [LIKE ‘pattern’]
    作用:显示数据表(从某个库中):注意当前数据库不会改变

  • SHOW COLUMNS FROM tbl_name
    作用:显示字段

  • 3. INSERT [INTO] tbl_name [(col_name,…)] VALUES(val,…)
    作用:插入记录,如果省略(col_name),需要赋值所有的值

  • 4. SELECT expr,…. FROM tbl_name
    作用:查找记录
    SELECT * FROM tb1(*过滤字段)

属性讲解

  • NULL | NOT NULL 值是否为空
  • AUTO_INCREMENT :自动编号,与主键组合使用;
    默认形况下,起始值为1,增量为1;
  • PRIMARY KEY :
    主键约束,一张表一个主键
    主键保证唯一性
    主键自动NOT NULL
    可以写成KEY
    比如:
    CREATE TABLE tb3(
    Id SMALLINT USSIGNED AUTO_INCREAMENT PRIMARY KEY,
    Username VARCHAR(20) NOT NULL
    );
  • UNIQUE KEY
    唯一约束
  • DEFAULT
    默认值
    举例:
    CREATE TABLE tb3(
    Id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    Username VARCHAR(20) NOT NULL,
    Sex ENUM(‘MALE’,’FEMALE’,’secret’) DEFAULT ‘secret’**
    );

约束

  1. 表级约束
  2. 列级约束
  3. 约束类型:非空约束,主键约束,唯一约束,默认约束,外键约束
  4. 外键约束:FOREIGN KEY
  • 保持数据一致性,一对一或一对多
    • 父表子表用一样的引擎:InnoDB,禁止使用临时表
  • 数字的类型必须一样,字符型长度可以不一样
  • 外键列和参照列必须创建索引,如果外键列没有索引,MySQL自动创建
  • 例子:
    CREATE TABLE users(
    Id SMALLINT PRIMARY KEY AUTO_INCREMENT,
    Name VARCHAR(20) NOT NULL,
    PID INT,
    FOREIGN KEY (PID) REFERENCES province (id)
    );
    Pid的类型必须和id相同
  • 参照操作
    CASCADE:从父表删除或更新则自动删除或更新子表中的行
    SET NULL:从父表删除或更新行,设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
    RESTRICT:拒绝对父表的删除或更新操作
    NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同
    例子:
    CREATE TABLE users(
    Id SMALLINT PRIMARY KEY AUTO_INCREMENT,
    Name VARCHAR(20) NOT NULL,
    PID INT,8
    FOREIGN KEY (PID) REFERENCES province (id)ON DELETE CASCADE
    );



































































以上是关于MySQL整理的主要内容,如果未能解决你的问题,请参考以下文章

Mysql基础命令整理(增删查改)

Mysql基础命令整理(增删查改)

MySQL关于表碎片整理OPTIMIZE TABLE操作

MySQL整理

mysql碎片处理_mysql碎片整理

MySQL 对 InnoDB 表进行碎片整理