MySQL数据库

数据库的基础概念

定义——数据库:保存有组织的数据的容器
定义——管理系统(DBMS):管理数据的数据库软件
定义——MySQL:客户/服务器模型、开放源码、关系型、SQL、数据库管理系统、多OS

分类

关系型数据库(MySQL、Oracle、SqlServer、MariaDB)、键值型数据库(Redis、Memcached)、面向文档数据库(MongoDB)、列存储数据库(HBase)、图数据库

Mariadb 5.5的软件架构

rpm  -ql  mariadb
#查看软件架构

配置文件: /etc/my.cnf
数据文件:/var/lib/mysql
日志文件:/var/log/mariadb/mariadb.log
服务名:service--mariadb
守护进程名:daemon--mysqld
监听端口:3306

MySQL中的三大数据类型

数值型:整型(int)、浮点型(FLOAT(size,d))、定点型
字符串类型:char{M}(定长,可存储的字符数);varchar{M}(变长,可存储的字符数);M代表字符
时间日期类型

SQL语言

定义:结构化查询语言

DDL数据库定义语言

  1. 声明列类型
  2. 常见约束
  3. 建库建表
  4. 删库删表

DDL命令

create table:创表

create table <tablename> (id int primary key auto_increment,name char(50) not null default 0,age int,btime datetime) char set=utf8;
--创建一个tablename的表,含有列id(primary key:主键,不可重复、不可为空;auto_increment:自增长),name(变长,字符数为50;not null:不可为空),age(default 0:默认为0),btime(datetime为时间日期类型);字符集为utf8;
CREATE TABLE t1 (id int PRIMARY KEY AUTO_INCREMENT, name varchar(20) NOT NULL, btime datetime);
--创建一个t1的表,含有列id(PRIMARY KEY:主键,不可重复、不可为空;AUTO_INCREMENT:自增长),name(变长,字符数为20;not null:不可为空),btime(datetime为事件日期类型);字符集为utf8;
create table reserve (id int primary key auto_increment,bookname varchar (20) not null,writer char(50) not null,price FLOAT(4,2),amount int);

create database:创库
drop table:删表
drop database:删库
alter:(开发常用)

DML数据库操作语言

  1. 增:insert into
  2. 删:delete form
  3. 改:update

DML命令

insert into

insert into <tablename> set col1=<value>,col2=<value>,……,;
insert into <tablename> values (valuse1,valuse2,valuse3);
insert into reserve values (2,'Linux inside','kevin','2008-2-15',83.00,50),(3,'LAMP','tom','2008-2-5',82.5,50);

delete form

delete form <tablename> where <条件>
--delete form是针对行进行删除
--一定要加条件

update

update <tablename> set col1=<value>,col2=<value>,……,where=条件;
--一定要加条件,不然会匹配所有行

DCL数据库控制语言

  1. 认证(user、password、host)
  2. 权限(可以执行的sql语句)

DCL命令

grant:认证和授权;授权不存在用户时会先创建用户再进行授权,越精确越优先

grant <priv> on <databases>.<tables> to <username>@<host> identified by <password>;
--将作用于一个库(databases)一个表(tables)的一个权限(priv)授权给来自于一个地址(host)的一个用户(uesrname),他的密码是(password)
grant all on *.* to kun@'%' identified by 'Kun950512';
--priv:all——除了授权意外的所有权限;
--*.*表示任意库的任意的表
--kun@'%'表示来自任意地址的kun用户;%表示任意
grant all on ecshop.* to php@'localhost' identified by 'php123';
--授权来自localhost的php用户对于ecshop库下所有表的所有权限
flush privileges;
--刷新授权,mysql会在数据库空闲时自动刷新权限,但是不够及时,我们这里手动刷新一下

revoke:回收权限;

revoke <priv> on <databases>.<tables> to <username>@<host>
--将来自于一个地址(host)的一个用户(uesrname)作用于一个库(databases)一个表(tables)的一个权限(priv)回收
revoke all on ecshop.* to php@'localhost';
--回收权限,无法删除用户
flush privileges;
--刷新权限
drop user php@'localhost';
--删除用户

drop user:删除用户
flush privileges:刷新授权

DQL数据库查询语言

1.select
查询的五大字句:where,group,having,order by,limit(了解并知道次序即可,重点掌握where)

关键字

in运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,语法如下:

select ID,user,password form user WHERE ID IN (1,3,5,7);
--查询user表中的ID,user,password列且ID列等于1,3,5,7的列
select ID,user,password form user WHERE ID NOT IN (1,3,5,7);
--查询user表中的ID,user,password列且ID列不等于1,3,5,7的列

BETWEEN 运算符用于 WHERE 表达式中,选取介于两个值之间的数据范围。BETWEEN 同 AND 一起搭配使用;通常 value1 应该小于 value2。当 BETWEEN 前面加上 NOT 运算符时,表示与 BETWEEN 相反的意思,即选取这个范围之外的值。语法如下:

select ID,user,password form user WHERE ID BETWEEN 1 AND 10
--查询user表中的ID,user,password列且ID列在1-10这个范围的列
select ID,user,password form user WHERE ID NOT BETWEEN 1 AND 10
--查询user表中的ID,user,password列且ID列不在1-10这个范围的列

like运算符,适用于模糊查询,全表搜索,无法使用使用索引,进度较慢语法如下:

select ID,user,password form user WHERE user like 'xin%';
--查询user表中的ID,user,password列且user列以xin开头的列
select ID,user,password form user WHERE user like 'xin___';
--查询user表中的ID,user,password列且user列以xin开头后面只有三个字符的列

group:常用语分类统计,求平均等场景,与一下函数进行配合

max——最大
min——最小
sum——求和
avg——平均
count——总行数
语法如下:

select  cat_id,max(shop_price),min(shop_price),avg(shop_price) from goods group by cat_id;
查询goods表中以cat_id为分组的shop_price列最大的,最小的和平均值

逻辑运算符

NOT或!——非
AND或&&——与
OR或||——或
XOR——异或

基础命令

systemctl start mariadb
#启动mariadb
mysql -uroot -p
#登录到mariadb数据库
mysql -u root password Kun950512
#创建mysql的密码
mysql -u root password  Kun950512
#修改密码
show databases;

--显示所有库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
--information_schema记录了数据库里面所有库和表的信息
--mysql              
--performance_schema记录数据库有木有锁,是否挂了,数据库管理员排错使用
--test公共库,没有限制,任何权限都可以操作 
use mysql;
--进入mysql库
show tables;
--显示所有表
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
--user存放着mysql里面所有的认证(是否能进来)和权限(进来后能作什么)  
select * from user limit 2;
--打印user表的前2行的所有列
--limit显示多少行,非标准sql语句
--select为过滤列
select user,Password,Host from user limit 2;
--显示user表前2行的user列、password列和host列
delete from mysql.user where user=' ' or password=' ' or host=' ';
--删除mysql库下user表中的user为空白或者password为空白或者host为空白的列
--where为过滤行
--过滤为先行后列
select user,password,host from user where 1;
--user表中的user,password,host列为真就打印出来
select user,password,host from user where 0;
--user表中的user,password,host列为假就打印出来

有错请指出,不喜勿喷,不接受喷我小白,虽然这是事实,如果要喷请预约

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

推荐阅读更多精彩内容

  • 一、MySQL架构与历史 A.并发控制 1.共享锁(shared lock,读锁):共享的,相互不阻塞的。 2.排...
    阿休阅读 4,633评论 0 37
  • 1.MySQL数据库 2.SQL语句 第一节课 ###1(MySQL数据库)数据库概念.avi 5...
    码了个农啵阅读 1,192评论 1 16
  • MySQL 数据库常用命令 1、MySQL常用命令 create database name; 创建数据库 use...
    55lover阅读 4,770评论 1 57
  • 今天,给儿子带回了酸奶机!儿子很高兴,妈妈我们两个一块做吧!我们准备好鲜奶,糖,酸奶发酵剂。然后安步骤...
    A蓝莓_b503阅读 168评论 0 0
  • 人是一种向死而生的动物,这提醒着我们时间的珍贵。最近,走进光的研习,我越来越发现,人更应该是向美而生的高级动物,这...
    苇苇是我阅读 361评论 0 0