MariaDB基础

关系型数据库

关系数据库(英语:Relational database),是创建在关系模型基础上的数据库,借助于集合代数数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言(SQL不是基于关系数据库的语言),这种语言执行对关系数据库中数据的检索和操作。

关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。------引自维基百科

MariaDB

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。------引自维基百科

MariaDB和MySql的区别

其实MariaDB和MySql是没有什么区别的,在Sun公司被Oracle收购后,按照Oracle的风格MySql是肯定会被闭源的,考虑到这种情况下所以MySql之父就另开了MariaDB分支。
MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。
MariaDB 是一个采用Aria存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。

SQL

SQL是一个标准的数据库语言,是面向集合的描述性非过程化语言。
它功能强,效率高,简单易学易维护。SQL语言分为以下四大类:
DDL、DML、DCL、DQL。

DDL(数据库定义语言)

用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等,常用的命令如create, drop, alter等

  • create:用来创建数据库,表,索引,视图等。常用语法:
# 创建数据库:
CREATE DATABASE [IF NOT EXISTS] db_name;

# 创建表:
CREATE TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options];
  • drop:用来删除数据库,表,索引,视图等。常用语法:
# 删除数据库
DROP DATABASE [IF EXISTS] db_name;

# 删除表
DROP TABLE [IF EXISTS]  tbl_name [, tbl_name] ..;
  • alter:用来修改数据库,表或者表字段,索引,视图等信息。常用语法:
# 修改数据库信息
ALTER DATABASE [db_name] [DEFAULT] CHARACTER SET [=] charset_name;

# 修改表的信息:
ALTER TABLE tbl_name [alter_specification [, alter_specification] ...];

#alter_specification可以是一下内容:
alter_specification:
    ADD [COLUMN] col_name column_definition
        [FIRST | AFTER col_name ]
|   ADD [CONSTRAINT] PRIMARY KEY
|   ALTER [COLUMN] col_name {SET DEFAULT value | DROP DEFAULT}
|   DROP [COLUMN] col_name
|   DROP PRIMARY KEY
|   CHANGE [COLUMN] old_col_name new_col_name column_definition
        [FIRST|AFTER col_name]
|   MODIFY [COLUMN] col_name column_definition
        [FIRST | AFTER col_name];

DML(数据库操纵语言)

DML是对数据中的表数据的可以执行的操作的语言。数据操作指令包括:update、insert、delete。

  • insert:向指定的数据表中插入数据,可以是一条或者多条数据,语法:
INSERT [INTO] tbl_name [(col_name,...)]
    {VALUES | VALUE} (value1),(value2)...;
  • update:用来修改表中的数据。语法:
UPDATE  table_name
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition];
  • delete:删除表中的数据。语法:
DELETE [col_name]  FROM tbl_name
    [WHERE where_condition];

注意:在更新和删除表里面的数据时一定要使用where字句,否则默认是操作所有行,在delete中语句中如果指定col_name则是删除该字段的数据。

DCL(数据库控制语言)

DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。对事务的处理主要是rollback和commit。主要还是对权限的控制。语法如下:

GRANT privileges ON database.table TO 'username'@'host' IDENTIFIED BY('password');

说明:database,table用*表示所有,host用%表示任意参数。

DQL(数据库查询语言)

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成。语法:

SELECT
    [ALL | DISTINCT  ]  select_expr1 [, select_expr2 ...]
    [FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC] [HAVING where_condition]]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

这里只是初略的介绍一下sql语句的一些基础用法,其实在sql中其实最重要的是DQL语句中的一些高级应用。如子查询,复合查询等。这将在后边的文章里面介绍。

练习:

学生选课系统:

  1. 创建学生选课系统
  2. 切换数据库
  3. 创建学生表 TbStudent,主键stuid ,姓名stuname,性别stusex,生日stubirth,电话stutel,住址stuaddr,照片stuphoto(以二进制存)
  4. 创建课程表TbCourse
    主键cosid, 班级名称cosname,学分coscredit,课程描述cosintro
  5. 学生选课记录表TbSC
    主键scid,学生外键sid ,班级外键cid,创建日期scdate, 分数score

代码如下:

# 创建SCC数据库,默认字符集为utf-8:
create database if not exists SCC default charset utf8;

use SCC;

#创建tbstudent学生表,默认字符集为utf-8,存储引擎为innodb:
create table if not exists tbstudent(
stuid int(15) not null primary key,
stuname varchar(20) not null,
stusex tinyint(1) default 1,
stubirth datetime,
stutel varchar(11),
stuaddr varchar(255),
stuphoto longblob
)engine innodb default charset utf8;

# 创建tbcourse课程表,默认字符集为utf-8,存储引擎为innodb:
create table if not exists tbcourse(
cosid int not null primary key,
cosname varchar(20) not null,
coscredit int not null,
cosintro varchar(200)
)engine innodb default charset utf8;

#创建tbsc选课记录表,默认字符集为utf-8,存储引擎为innodb:
create table if not exists tbsc(
scid int not null primary key auto_increment,
sid int not null,
cid int not null,
scdate datetime not null,
score decimal(3,1)
)engine innodb default charset utf8;

# 为三张表创建外键约束:
aler table tbsc add constrait fs_sid foreign key(sid) references tbstudent(stuid) on delete cascade on update cascade;
aler table tbsc add constrait fs_cid foreign key(cid) references tbsourse(cosid) on delete set null on update cascade

# 向学生表中插入数据:
insert into tbstudent (stuid, stuname, stusex, stubirth, stuaddr, stuphoto) values
(1001, '张三丰', default, '1978-1-1', '成都市一环路西二段17号', null);
insert into tbstudent (stuid, stuname,stubirth) values
(1002, '郭靖', '1980-2-2');
insert into tbstudent (stuid, stuname, stusex, stubirth, stuaddr) values
(1003, '黄蓉', 0, '1982-3-3', '成都市二环路南四段123号');
insert into tbstudent (stuid, stuname, stusex, stubirth, stuaddr, stuphoto) values 
(1004, '张无忌', 1, '990-4-4', null, null),
(1005, '丘处机', 1, '1983-5-5', '北京市还定去宝胜北里西区28号', null),
(1006, '王处一', 1, '1985-6-6', '深圳市宝安区宝安大道5010号',null),
(1007, '刘处玄', 1, '1987-7-7', '郑州市金水区纬五路21号', null),
(1008, '孙不二', 0, '1989-8-8', '武汉市光谷大道61号', null),
(1009, '平一指', 1, '1992-9-9', '西安市雁塔区高新六路52号', null),
(1010, '老不死', 1, '1993-10-10', '广州市天河区元岗路310号', null),
(1011, '王大锤', 0, '1994-11-11', null, null),
(1012, '隔壁老王', 1, '1995-12-12', null, null),
(1013, '郭啸天', 1, '1977-10-25', null, null);

# 删除学生表中id为1004的学生信息:
delete from tbstudent where stuid=1004;

# 更新学生表中id为1002的学生的信息:
update tbstudent set stubirth='1980-12-12',stuaddr='上海市宝山区同济支路199号' where stuid=1002;

# 向课程标准插入数据
insert into tbcourse values 
(1111, 'C语言程序设计', 3,'大神级讲师教授需要抢座'),
(2222, 'Java程序设计', 3, null),
(3333, '数据库概论', 2, null),
(4444, '操作系统原理', 4, null);

# 向学生选课记录表中插入数据:
insert into tbsc (sid, cid, scdate, score) values
(1001, 1111, '2016-9-1', 95),
(1002, 1111, '2016-9-1', 94),
(1001, 2222, now(), null),
(1001, 3333, '2017-3-1', 85),
(1001, 4444, now(), null),
(1002, 4444, now(), null),
(1003, 2222, now(), null),
(1003, 3333, now(), null),
(1005, 2222, now(), null),
(1006, 1111, now(), null),
(1006, 2222, '2017-3-1', 80),
(1006, 3333, now(), null),
(1006, 4444, now(), null),
(1007, 1111, '2016-9-1', null),
(1007, 3333, now(), null),
(1007, 4444, now(), null),
(1008, 2222, now(), null),
(1010, 1111, now(), null);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容

  • Lamp之MariaDB 数据库结构模型分类 1、层次模型 2、网状模型 3、关系模型 关系模型的组成部分 二维关...
    魏镇坪阅读 7,296评论 0 2
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,737评论 0 44
  • 数据库简介关系型数据库MySQL安装和使用SQL语言 一、数据库简介 (一)数据库的发展 文件系统:磁盘文件存储数...
    哈喽别样阅读 441评论 0 1
  • 倏忽间走到了23。黄粱一梦,却也尚未惊慌失措。16岁前莫名觉得自己过不了20,如今已然飞逝了七年。 去年今日。毕业...
    榄仁小姐写字的地方阅读 541评论 3 2
  • 秀婷 中周进行到了第二天 你已经精疲力尽了 两天来 各种状态都活现出来了 哭哭笑笑 打打闹闹 都来了 真是佩服你 ...
    洪秀婷阅读 106评论 0 0