一、数据类型:
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. JS 页面繁简字转换

    // 本js用于客户在网站页面选择繁体中文或简体中文显示,默认是正常显示,即简繁体同时显示// 在用户第一次访问网页时,会自动检测客户端语言进行操作并提示.此功能可关闭// 本程序只在UTF8编码下测 ...

  2. vim常用快捷键及操作记录

    1. 安装 sudo apt-get install vim 或者 yum install -y vim-enhanced 2. 具体使用技巧如下 打开文件: 命令/操作 说明 vim + filen ...

  3. weblogic启动脚本01

    DATE=`date +%Y%m%d%H%M%S` user=`whoami` logDir=/app/logs/sguap_admin #启动日志存放路径sguap是例子系统简称# logDestd ...

  4. Axis2 客户端调用 设置超时时间

    我用的是axis2-1.6.2版本.请看下面的客户端代码: import org.apache.axis2.client.Options; import com.ctis.ta.service.imp ...

  5. 对OpenStack运维架构的总结(转)

    这里,仅从技术角度出发,谈谈OpenStack云平台在部署.架构和运维实施等方面的感想. 缘起,在2014年大二首次接触到OpenStack,当时国内外资料远没有当前这么丰富,为安装一个OpenSta ...

  6. HTML基础:用表单写一个简易登录页面

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. java String练习题

    package java07; /* 题目: 定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串,格式参照如下:[word1#word2#word3] 思路: 1.首先准备一个int[]数 ...

  8. GET和POST是HTTP请求的两种基本方法,区别是什么!?

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  9. python3.x运行的坑:AttributeError: 'str' object has no attribute 'decode'

    1.Python3.x和Python2.X版本有一些区别,我遇到了两个问题如下: a.第一个报:mysqlclient 1.3版本不对: 解决办法:注释掉这行即可: b.第二个报:字符集的问题: 报错 ...

  10. python使用HTMLTestRunner.py生成测试报告

    这里我使用的是python selenium webdriver环境,浏览器驱动安装见selenium 1.下载HTMLTestRunner.py:http://tungwaiyip.info/sof ...