一、数据类型:
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. tensorflow实现一个神经网络简单CNN网络

    本例子用到了minst数据库,通过训练CNN网络,实现手写数字的预测. 首先先把数据集读取到程序中(MNIST数据集大约12MB,如果没在文件夹中找到就会自动下载): mnist = input_da ...

  2. Windows下svn使用教程

    SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversion是什么? ...

  3. python常用函数 N

    nlargest(int , iterable,key) 查找最大的n个元素. 例子: 还支持传入key进行复杂元素比较:如:nlargest (n, list,key=lambda a:a[b]). ...

  4. boost bimap

    The library Boost.Bimap is based on Boost.MultiIndex and provides a container that can be used immed ...

  5. 谷歌SEO和百度SEO的区别

    远程桌面连接 一直有一个现象:关于谷歌优化或只是以谷歌为例谈SEO观点或技术时,经常有读者说,不适用于百度,希望多看到关于百度​​SEO的帖子上一篇利用规范的标签在谷歌排名中陷害竞争对手的帖子,就有好 ...

  6. Android中微信抢红包插件原理解析和开发实现

    一.前言 自从去年中微信添加抢红包的功能,微信的电商之旅算是正式开始正式火爆起来.但是作为Android开发者来说,我们在抢红包的同时意识到了很多问题,就是手动去抢红包的速度慢了,当然这些有很多原因导 ...

  7. django搭建一个小型的服务器运维网站-重启服务器的进程

    目录 项目介绍和源码: 拿来即用的bootstrap模板: 服务器SSH服务配置与python中paramiko的使用: 用户登陆与session; 最简单的实践之修改服务器时间: 查看和修改服务器配 ...

  8. YII 1.0 常用CURD写法

    <?php //yii1.0 curd简单写法 //查询 Yii::app()->db->createCommand($sql)->queryAll();//查询所有行数据 ​ ...

  9. html标签<td><tr><th>全称及缩写说明

    <td> 是table data cell 的缩写,单元格 <tr> 是table row 的缩写,表格中的一行 <th> 是table header cell 的 ...

  10. Go的struct

    1. 前言 Go的struct声明允许字段附带Tag来对字段做一些标记. 该Tag不仅仅是一个字符串那么简单,因为其主要用于反射场景,reflect包中提供了操作Tag的方法,所以Tag写法也要遵循一 ...