一、数据类型:
1.整数类型:
  TINYINT:1Byte
  SMALLINT:2Byte
  MEDIUMINT:3Byte
  INT:4Byte
  INTEGER:4Byte
  BIGINT:8Byte
2.浮点数
  单精度浮点(FLOAT):4Byte
  双精度浮点(DOUBLE):8Byte
3.定点数
  定点数浮点(DECIMAL(M,D)):M+2 在Mariadb中定点数以字符串形式存储,精度高于浮点数
4.日期和时间
  YEAR:年份 1Byte 1901~2155
  DATE:日期 4Byte YYYY-MM-DD
  TIME:时间 3Byte HH:MM:SS
  DATETIME:日期时间 8Byte YYYY-MM-DD HH:MM:SS
  TIMESTAMP: 日期时间 4Byte YYYY-MM-DD HH:MM:SS
5.字符串
  CHAR: 0-255Byte
  VARCHAR 0-65535Byte
  TINYTEXT 0-255Byte
  TEXT 0-65535Byte
  MEDIUMTEXT 0-167772150Byte
  LONGTEXT 0-4294967295Byte
  ENUM
  SET
6.二进制
  BINARY(M)
  VARBINARY(M)
  BIT(64)
  TINBLOB 255Byte
  BLOB (2**16-1)Byte
  MEDIUMBLOB (2**24-1)Byte
  LONGBLOB (2**32-1)Byte
二、库的基本操作
查看已存在的数据库
>SHOW DATABASES;
创建数据库
>CREATE DATABASE 数据库名;
删除数据库
> DROP DATABASE 数据库名;
查看表的描述
> desc users;
存储引擎
查看支持的存储引擎
> SHOW ENGINES\G
>SHOW VARIABLES LIKE 'have%';
>SHOW VARIABLES LIKE 'storage_engine';
三、存储引擎
InnoDB
  优点:
    支持自动增长列AUTO_INCREMENT
    支持外键
    支持事务管理,崩溃修复和并发控制
    创建的表表的结构存储在.frm文件中,数据和索引存储在innodb_data_file_path和 innodb_data_home_dir定义的表空间中
  缺点:
    读写效率稍差,占用的数据空间相对较大
MyISAM
  优点:
    MyISAM的表存储为3个文件,.frm存储表结构,.MYD存储数据,.MYI存储索引
    三种存储格式:静态型、动态型、压缩型
    暂用空间小,处理速度快
  缺点:
    不支持事务的完整性和并发性
MEMORY
  优点:
    表结构存储在.frm文件,数据存储在内存中,处理速度快
  缺点:
    数据易丢失
修改默认存储引擎
vi /etc/my.cnf
[mysqld]
default-storage-engine=MyISAM

四、创建表
1.创建表的语法:
CREATE TABLE 表名(属性名 数据类型[完成的约束条件],
属性名 数据类型[完成的约束条件],
属性名 数据类型[完成的约束条件]
);
e.g.
> CREATE TABLE user(id INT,
-> name VARCHAR(20),
-> SEX BOOLEAN
-> );

2.基本的完整性约束条件
PRIMARY KEY
FOREIGN KEY
NOT NULL
UNIQUE
AUTO_INCREMENT
DEFAULT

单字段主键
> CREATE TABLE user(id INT PRIMARY KEY,
-> name VARCHAR(20),
-> SEX BOOLEAN
-> );

多字段主键
> CREATE TABLE user(user_id INT,
-> course_id
-> name VARCHAR(20),
-> SEX BOOLEAN,
-> PRIMARY KEY(user_id,course_id)
-> );

表的外键
CONSTRAINT 外键别名 FOREIGN KEY (属性1.1 属性1.2)
REFERENCES 父表名(属性2.1,属性2.2)
子表的外键关联必须是父键的主键

表的非空约束
> CREATE TABLE user(id INT NOT NULL PRIMARY KEY,
-> name VARCHAR(20),
-> SEX BOOLEAN
-> );

表的唯一性约束
> CREATE TABLE user(id INT UNIQUE,
-> name VARCHAR(20),
-> SEX BOOLEAN
-> );

属性值自动增加
> CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(20),
-> SEX BOOLEAN
-> );

属性的默认值
> CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(20),
-> Math VARCHAR(20) DEFAULT 'zero',
-> SEX BOOLEAN
-> );

3.查看表结构
->DESCRIBE 表名;
->DESC 表名;
->SHOW CREATE TABLE 表名 \G
五、修改表
修改表名
-> ALTER TABLE 旧表名 RENAME 新表名;
修改字段数据类型
->ALTER TABLE 表名 MODIFY 属性名 数据类型;
修改字段名
->ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;
增加字段
->ALTER TABLE 表名 ADD 属性名 数据类型 [完整性约束条件]; //插入到最后一个字段
->ALTER TABLE 表名 ADD 属性名 数据类型 [完整性约束条件] FIRST; //插入到第一个字段
->ALTER TABLE 表名 ADD 属性名 数据类型 [完整性约束条件] AFTER 属性2; //插入到字段属性2之后
删除字段
->ALTER TABLE 表名 DROP 属性名;
修改字段的排列顺序
->ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST;
->ALTER TABLE 表名 MODIFY 属性名1 数据类型 AFTER 属性名2; //插入到字段属性2之后
更改表的存储引擎
->ALTER TABLE 表名 ENFINE=存储引擎名;
删除外键约束
->ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;
六、删除表
删除没有被关联的普通表
->DROP TABLE 表名;
删除被其他表关联的父表
  先删除外键别名再删除表

MariaDB学习笔记(一)的更多相关文章

  1. MySQL/MariaDB学习笔记——mysql.user表中存在多个root用户问题理解

    mysql.user表中存在多个root用户问题 问题描述:使用 SELECT host,user FROM mysql.user 发现mysql.user表中存在三个root用户,如下 持着对中几个 ...

  2. mariadb 学习笔记

    安装:yum install mariadb-server mariadb vim /etc/my.cnf.d/server.cnfinnodb_file_per_table = on#设置后当创建数 ...

  3. MariaDB学习笔记(二)

    七 索引索引:索引是创建在表上的,是对数据库表中的一列或多列的值进行排序的一种结构.索引可以提高查询的速度.索引有两种存储类型: B型树索引 哈希索引I nnoDB和MyISAM支持B型树索引,MEM ...

  4. Hadoop-Impala学习笔记之入门

    CDH quickstart vm包含了单节点的全套hadoop服务生态,可从https://www.cloudera.com/downloads/quickstart_vms/5-13.html下载 ...

  5. Flyway学习笔记

    Flyway做为database migration开源工具,功能上像是git.svn这种代码版本控制.google搜索database migration,或者针对性更强些搜索database mi ...

  6. Rancher Server HA的高可用部署实验-学习笔记

    转载于https://blog.csdn.net/csdn_duomaomao/article/details/78771731 Rancher Server HA的高可用部署实验-学习笔记 一.机器 ...

  7. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  8. 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用

    目录 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用 23.1 跳出循环 23.1.1 break和continue 23.2 Shift参数左移指令 23.3 函数 ...

  9. 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环

    目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...

随机推荐

  1. 基于Opencv自有模型识别人脸与人眼

    #!/usr/bin/python # -*- coding: utf-8 -*- import cv2 face_cascade = cv2.CascadeClassifier("D:/O ...

  2. 在Intellij上开发项目发布到tomcat时,同一个局域网内的其他机子访问不到自己电脑上tomcat中的项目,只能本机访问

    在Intellij上开发项目发布到tomcat时,同一个局域网内的其他机子访问不到自己电脑上tomcat中的项目,只能本机访问 问题描述:在Intellij上开发项目发布到tomcat时,同一个局域网 ...

  3. zabbix入门之定义触发器

    zabbix入门之定义触发器 触发器的概念 触发器的定义:界定某特定的item 采集到数据的非合理区间或非合理状态.通常为逻辑表达式. 逻辑表达式(阈值):通常用于定义数据的不合理区间,其结果如下: ...

  4. 【LeetCode】队列 queue(共8题)

    [346]Moving Average from Data Stream [353]Design Snake Game [363]Max Sum of Rectangle No Larger Than ...

  5. java 方法返回多个值

    package java03; /* * 一个方法可以有0,1或者多个参数,但是返回值只能有0或者1个返回值,不能有多个返回值 * 但是如果希望有多个返回值,应该怎么办? * 答:使用数组作为返回值类 ...

  6. 消息队列之AciveMQ

    activemq安全设置 设置admin的用户名和密码  

  7. java8 Stream2

    new Thread(() -> System.out.println("lambda表达式,取代匿名函数......")).start(); Stream.of(" ...

  8. jsp中引入js文件缓存问题解决

    加上版本UUID <script charset="utf-8" src="${basePath}js/souke/soukegalist.js?v=<%=U ...

  9. 利用jmeter发起java请求调用shell脚本

    1.创建maven项目 在pom文件中加入依赖:     2.在路径src/main/java下创建类,如类名shellclass                     3.      创建jmet ...

  10. JavaWeb(二):Servlet

    一.本教程使用的Web容器——Tomcat Tomcat是提供一个支持Servlet和JSP运行的容器.Servlet和JSP能根据实时需要,产生动态网页内容.而对于Web服务器来说, Apache仅 ...