数据库系统(DBMS): 专门负责数据管理的工具。增加数据、创建索引、建立索引之间的关联关系、更新索引。。。。。。

连接器:PHP要访问MySQL,可以通过API访问,也可以通过PHP的驱动,而那个驱动就是连接器。

数据的组织结构

层次型 :有上下级关系

网状型 :

关系型 :

关系型数据库管理系统(RDBMS) :以表的方式来展示,并且能帮我们去维护这些表和表之间关系的这么一个软件!

负责将数据从文件中抽取出来,并展示为表的格式

管理数据本身完整性

DBA视图:既能看到用户视图,又能看到物理视图。还能看到中间的处理过程

SQL基本组件

1、用户或者前端驱动。。。会发出SQL命令

2、SQL命令送给我们的DBMS以后,DBMS必须要接受下来,并且做处理

3、提供一个分析器,做词法分析,语法分析。。。。

4、分析的结果要生成执行计划----计划执行器(我们到底有多少种路径可以完成相应任务)

5、对每一条计划进行筛选,选出代价最小,性能最好的---优化器(先不执行,选择一条最优的执行方式)

6、这一切分析结束以后,语句执行要操作数据,文件的存取

7、文件读进来之后先缓存在内存中,---缓存器(先把数据读取到缓存器里面才能进行操作的)

8、缓存器中所提供的任何内容最终还要回存到硬盘中去---磁盘空间管理器(实现对磁盘空间中的某个数据文件中的数据到底该怎么存储进行管理)

9、故障恢复管理器---服务器崩溃,再次启动之后,把存储数据,正在存储数据恢复为正常状态

10、事务管理器

11、锁管理器

mysql简单应用

特性:mysql名:mysql安装到Windows上不需要命令大小写,安装在Linux上区分大小写

mysql基于tcp连接的

若服务器端和客户端在同一台主机上时;服务器端与客户端连接方式为:

Linux:socket (这种连接实现的是本机进程与进程之间的通信,不需要网络驱动来连接,速度非常快!)

windows:memory (共享内存)

socket:套接字文件,这个文件在/var/lib/mysql/mysql.sock

命令(选项和参数之间可以不用加空格)

mysql

-u :指定用户,指名以哪个用户的身份去连接(后面不跟用户名,默认为root)

-p :给这个用户提供密码(后面没有密码,默认为空密码)

-h :指定主机,你的服务器是谁?(后面没跟服务器地址,默认为localhost)

例:mysql  -uroot  -p  -h  127.0.0.1 (第一次登陆)

MySQL数据库管理

数据库对象:

库、表、索引、视图、约束、存储过程、、存储函数、触发器(主动数据库)、游标、用户、权限、事务

关系型数据库最核心的组件就是表(行(row)、列(field/column)组成)

一个表称为实体

字段名称:定义一个字段时,这个字段中存储的是数据还是数值做一下说明(数据类型)。

数据类型:

字符(字符型默认情况下不区分大小写):

CHAR(字符长度)  --->你最多存储多少个字符,最多存储256个字符

VARCHAR(字符长度)     --->你最多存储多少个字符,最多存储65536个字符 (两个字节)(可变化空间)

BINARY(字符长度)        --->以二进制格式进行存储(区分大小写的字符)(固定空间)

VARCHAR(字符长度)       --->以二进制格式进行存储(区分大小写的字符)(可变化空间)

TEXT(文本长度)      --->文本大对象,(不区分大小写)

BLOB(文本长度)      --->二进制格式的文本大对象(区分大小写)

数值:

精确数值(整型),有6种变化,分别使用不同长度的字节来存储整数

TINYINT   --->小整形,范围:一个字节,最多表示范围-128到127,或者0-255

SMALLINT    --->微整形,范围:两个字节,最多表示范围-128到127,或者0-255

MEDIUMINT     --->中等整形,范围:三个字节

INT             --->范围:四个字节

BIGINT      --->大整形,范围:八个字节

DECIMAL    --->十进制

修饰符:UNSIGNED,无符号,

NOT NULL ,不允许为空

近似数值(浮点型)

FLOAT

DOUBLE

日期时间:

DATE   --->日期

TIME   --->时间

DETETIME   --->日期时间

STAMP   --->时间戳

布尔(逻辑):

内置(枚举):

表头(header):每一列的名称

列(row):具有相同数据类型的数据的集合

行(col):每一行用来描述某个人/物的具体信息

值(value):行的集体信息

键(key):表中用来识别某个特定的人/物的方法,键的值在当前列中具有唯一性

数据库命令分类及其常用命令(命令不区分大小写)

姓名(name)  年龄(age) 学号(id) 性别(sex) 电话(tel)

DDL:数据定义语言

create:创建数据库、表

create  database;  数据库名称; --->创建数据库

create  database  if  not  exists   数据库名称;   --->如果数据库不存在我们就创建

create  table  指定库. 表名  (属性1,属性2,...);     --->创建表

alter :修改数据库、表

alter  table   表名

modify :修改某个字段(改字段属性)

change :改变某个字段(不改属性,改内容)

add  :添加一个字段

drop :删除一个字段

drop :删除数据库、表

drop  table   表名    --->删除表

drop  table   if   exists  表名    --->表存在才删除表

drop  database   数据库名;  --->删除数据库

DML:数据操作语言(表)

insert:插入

insert  into  表名 (字段名称1,字段名称2...)value("字符串",数值);  --->数值不用加引号,不加字段名称代表每个字段都写

replace:替换

replace  into

update:修改

update   表名      set   字段='替换内容'  where  name='名字'

delete:删除

delete    from   表名   where  符合条件的行

DCL:数据控制语言

grant:给用户授权                                                                                      也可以修改密码

grant   权限1,权限2,...   on  库名.表名  to  '用户名'@'主机名'  identified  by  '密码';--->给用户授权,用户不存在自动创建用户

revoke:取回权限

revoke    权限1,权限2...  on  库名.表名  from  '用户名'@'主机名;

select   查询

select格式:  select   指定字段   from   表名   条件

create  user :创建用户   格式:   create  user  '用户名'@'主机名'  identified  by '密码';

drop    user :删除用户  格式:  drop   user   '用户名'@'主机名';

select * from 表名;    --->查看表中的内容

show databases;    --->查看库

show  tables  from  指定库;--->查看库中的表

desc 表名;   --->查看表中的结构

show  grants  for  '用户名'@'主机名';   --->查看用户的授权

select  user();   --->当前登录的用户

use   数据库名;  --->设置默认数据库

where   指定搜索条件;   --->做逻辑比较

flush  privileges;     --->刷新授权表

set  password  for   '用户名'@'主机名'  =password('密码'); --->为用户创建密码

选择和投影

选择:指定以某字段作为搜索码,做逻辑比较 ,筛选符合条件的行

投影:选择列为搜索码

数据库命令使用格式详解

创建表及修改字段

create  table  xueyuan   (name  char(20) not null,    age     tinyint  unsigned,    gender  char(1)  not null);

添加表        表名       姓名   属性   不能为空, 年龄    属性  不能为负数,  性别    属性  不能为空

alter      table  xueyuan  add     kecheng  varchar(100);

一个字段     表名     添加   字段名   属性

alter  table  xueyuan  change  kecheng  Kecheng       varchar(100)   after  name;

一个字段     表名     修改    字段名  修改后字段名     属性      放在字段name下面

给表插入数据

insert  into  xueyuan  (name,gender)  value   ('linghuchong',   'm') ,   ('xiaolongnv','f');

插入       表名     字段,字段   关键字   (name字段,gender字段),(name字段,gender字段);

insert  into  xueyuan  value   ('xiao'      , 'hama'    ,    57 ,      'm');

插入        表名    关键字   name字段, course字段,age字段,性别字段

给表修改数据

update  xueyuan     set    Kecheng='shuxue'    where  name = 'xiao'

修改属性   表名    关键字   字段  修改的内容   条件   字段  修改哪一行

在表中筛选数据

select   name,Kecheng  from   xueyuan  where  Kecheng='shuxue';

查询     字段  字段    关键字  表名     选择    Kecheng字段中有shuxue 的行

在表中删除数据

delete  from       xueyuan  where  Kecheng='xiaoniu';

删除     关键字    表名     条件   在Kecheng字段中有xiaoniu的行

创建、删除用户

create  user  'sun' @ '%'          identified  by  'sun';

创建   用户  用户名  所有主机     identified  by:会将纯文本密码加密作为散列值存储

mysql

-u :指定用户,指名以哪个用户的身份去连接(后面不跟用户名,默认为root)

-p :给这个用户提供密码(后面没有密码,默认为空密码)

-h :指定主机,你的服务器是谁?(后面没跟服务器地址,默认为localhost)

--protocol :{tcp|socket|pipe|memory}  指定使用的协议

--port :指定端口

-D 库名 :在登录以后,直接把某个数据库设为默认数据库

个字符

VARCHAR(字符长度)     --->你最多存储多少个字符,最多存储65536个字符 (两个字节)(可变化空间)

BINARY(字符长度)        --->以二进制格式进行存储(区分大小写的字符)(固定空间)

VARCHAR(字符长度)       --->以二进制格式进行存储(区分大小写的字符)(可变化空间)

TEXT(文本长度)      --->文本大对象,(不区分大小写)

BLOB(文本长度)      --->二进制格式的文本大对象(区分大小写)

auto_increment    --->自动增长

数值:

精确数值(整型),有6种变化,分别使用不同长度的字节来存储整数

TINYINT   --->小整形,范围:一个字节,最多表示范围-128到127,或者0-255

SMALLINT    --->微整形,范围:两个字节,最多表示范围-128到127,或者0-255

MEDIUMINT     --->中等整形,范围:三个字节

INT             --->范围:四个字节

BIGINT      --->大整形,范围:八个字节

DECIMAL    --->十进制

修饰符:UNSIGNED,无符号,

NOT NULL ,不允许为空

近似数值(浮点型)

FLOAT

DOUBLE

DDL:数据定义语言

create:创建数据库、表

create  database;  数据库名称; --->创建数据库

create  database  if  not  exists   数据库名称;   --->如果数据库不存在我们就创建

create  table  指定库. 表名  (属性1,属性2,...);     --->创建表

alter :修改数据库、表

alter  table   ,字段名称2...)value("字符串",数值);  --->数值不用加引号,不加字段名称代表每个字段都写

replace:替换

replace  into

update:修改

update   表名      set   字段='替换内容'  where  name='名字'

delete:删除

delete    from   表名   where  符合条件的行

DCL:数据控制语言

grant:给用户授权                                                                                      也可以修改密码

grant   权限1,权限2,...   on  库名.表名  to  '用户名'@'主机名'  identified  by  '密码';--->给用户授权,用户不存在自动创建用户

revoke:取回权限

revoke    权限1,权限2...  on  库名.表名  from  '用户名'@'主机名;

创建与删除索引

创建索引: create   index  索引名称    on  表名  (字段) ;

删除索引:drop  index  索引名   on  表名;

select   查询

select格式:  select   指定字段   from   表名   条件

create  user :创建用户   格式:   create  user  '用户名'@'主机名'  identified  by '密码';

drop    user :删除用户  格式:  drop   user   '用户名'@'主机名';

truncate  表名; --->清空表,并且重置计数器(类似于ID..)

show table status like '表名'\g ;  --->查看一个表的属性信息

show  engines;   --->可以显示当前数据库 所支持的所有存储引擎

select * from 表名;    --->查看表中的内容

show databases;    --->查看库

show  tables  from  指定库;--->查看库中的表

desc 表名;   --->查看表中的结构

show  grants  for  '用户名'@'主机名';   --->查看用户的授权

select  user();   --->当前登录的用户

use   数据库名;  --->设置默认数据库

select database();  --->查看当前默认的数据库

where   指定搜索条件;   --->做逻辑比较

flush  privileges;     --->刷新授权表

select  USER,Host,Password FROM user; --->查看用户列表

set  password  for   '用户名'@'主机名'  =password('密码'); --->为用户创建密码

show  variables  like  "%变量名%" --->查看变量

show  indexes   from  表名 ;    --->查看指定表的索引

show  master  status; --->查看当前正在使用的二进制日志文件

show  binary  logs;  查看当前mysql上所可以使用的二进制文件的列表

show  binlog  events  in "file" ; 查看某一个二进制日志文件中的相关内容

选择和投影

选择:指定以某字段作为搜索码,做逻辑比较 ,筛选符合条件的行

投影:选择列为搜索码

数据库命令使用格式详解

创建表及修改字段

create  table  xueyuan   (name  char(20) not null,    age     tinyint  unsigned,    gender  char(1)  not null);

添加表        表名       姓名   属性   不能为空, 年龄    属性  不能为负数,  性别    属性  不能为空

alter      table  xueyuan  add     kecheng  varchar(100);

一个字段     表名     添加   字段名   属性

alter  table  xueyuan  change  kecheng  Kecheng       varchar(100)   after  name;

一个字段     表名     修改    字段名  修改后字段名     属性      放在字段name下面

给表插入数据

insert  into  xueyuan  (name,gender)  value   ('linghuchong',   'm') ,   ('xiaolongnv','f');

插入       表名     字段,字段   关键字   (name字段,gender字段),(name字段,gender字段);

insert  into  xueyuan  value   ('xiao'      , 'hama'    ,    57 ,      'm');

插入        表名    关键字   name字段, course字段,age字段,性别字段

给表修改数据

update  xueyuan     set    Kecheng='shuxue'    where  name = 'xiao'

修改属性   表名    关键字   字段  修改的内容   条件   字段  修改哪一行

在表中筛选数据

select   name,Kecheng  from   xueyuan  where  Kecheng='shuxue';

查询     字段  字段    关键字  表名     选择    Kecheng字段中有shuxue 的行

在表中删除数据

delete  from       xueyuan  where  Kecheng='xiaoniu';

删除     关键字    表名     条件   在Kecheng字段中有xiaoniu的行

创建、删除用户

create  user  'sun' @ '%'          identified  by  'sun';

创建   用户  用户名  所有主机     identified  by:会将纯文本密码加密作为散列值存储

客户端交互式命令

批处理模型/脚本模式   (

select   cid  from  xuehao  where     cid    between  2  and  6;

关键字     cid在2与6之间(between:。。。与。。。之间)

select keming from    kehao  where    keming   like          'y%'

关键字  字段名   个字符

select keming from    kehao   where    keming    like         '%k%';

,用一条命令查看自动生成的id,(select  last_insert_id();)mysql会接着这里面的数字继续排下去,除非把这里面的数值清零。

在表中筛选出的数据插入到另一张表中(两种表的字段必须相同)

insert  into  kebiao  (name) select  name  from  xuesheng   where   id>2;

插入到     表名   字段      在  字段        表名        筛选   条件

在表中筛选出的数据插入到另一张表中,若这张表中数据重复则替换

replace  into  kebiao  (name) select  name  from  xuesheng   where   id>2;

delete

mysql内置选项:当你使用delete语句或者update语句时,没有使用where条件(字句),它不会让你执行!

注意:当你清空整张表时,在插入数据,数据的id号也会接着最后一个被清空数据的id号继续往下排

所以,想要从零开始,必须清空(select  last_insert_id();)中的数值

truncate  表名; --->清空表,并且重置计数器(select  last_insert_id();)类似于id。。。

加锁:lock   tables    表名   锁类型{read|write}

解锁:unlock   tables    :表示解除所有表的锁

mysql默认隔离级别为REPATABLE  READ可重读

查看隔离级别:show global variables like '%iso%';

修改隔离级别:set  {session|global} 变量名='对应值'; |set tx_isolation='read-committed';

创建用户

create  权限   用户名@主机名   identified   by  "密码"

flush  privileges;  重读授权表,读取用户信息

show  grants  for  用户名@'主机名'; 查看用户账户信息

修改管理员密码

退出并关闭mysql :service  mysql   stop

手动修改启动文件:/etc/init.d/mysql  修改第283行

添加:

--skip-grant-tables :跳过授权表

--skip-networking :跳过网络

启动mysql服务:service mysql  start

use  mysql   :指定数据库

select  User,Host,Password  from  user;    :查看用户表

update  user   set   Password=PASSWORD('密码')  where  User='root';  :手动修改密码

退出数据库,关闭服务!

修改/etc/init.d/mysql,把添加的那两行删除

再重新启动服务,就可以登陆了

详解数据库引擎与SQL语句增删改查(非常详细,带例)的更多相关文章

  1. 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

    数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...

  2. sql语句增删改查(转)

    一.增:有4种方法 1.使用insert插入单行数据:                  语法:insert [into] <表名> [列名] values <列值>    例 ...

  3. sql语句增删改查(方便你我Ta)

    又自学,把SQL的一些常用语句复习了一遍. 整理如下: 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strde ...

  4. SQL 语句(增删改查)

    一.增:有4种方法1.使用insert插入单行数据: --语法:insert [into] <表名> [列名] values <列值> 例:insert into Strden ...

  5. 安卓开发之sql语句增删改查2(利用谷歌封装好的API进行增删改查)

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. 安卓开发之sql语句增删改查

    package com.lidaochen.phonecall; import android.content.Context; import android.database.sqlite.SQLi ...

  7. sql语句增删改查与子查询

    修改表 修改表 语法: Alter table <旧表名> rename [ TO] <新表名>; 例子:Alter table `demo01` rename `demo02 ...

  8. 数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)

    SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) ...

  9. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

随机推荐

  1. Excel 文本函数

    1.FIND函数--要查找的字符在 字符串中 的  位置 FIND(find_text,within_text,start_num) Find_text 是要查找的字符串. Within_text 是 ...

  2. Apex 中 DML 进阶知识小结

    DML 选项 在 DML 语句执行的时候可以设置选项.这些选项用 DML.Options 类来表示. 完整的介绍在官方文档中. 在建立一个 DML.Options 实例之后,可以使用 setOptio ...

  3. [LeetCode] 322. Coin Change 硬币找零

    You are given coins of different denominations and a total amount of money amount. Write a function ...

  4. 分布式共识算法 (三) Raft算法

    系列目录 分布式共识算法 (一) 背景 分布式共识算法 (二) Paxos算法 分布式共识算法 (三) Raft算法 分布式共识算法 (四) BTF算法 一.引子 1.1 介绍 Raft 是一种为了管 ...

  5. Spring Cloud Gateway重试机制

    前言 重试,我相信大家并不陌生.在我们调用Http接口的时候,总会因为某种原因调用失败,这个时候我们可以通过重试的方式,来重新请求接口. 生活中这样的事例很多,比如打电话,对方正在通话中啊,信号不好啊 ...

  6. Java Scala获取所有注解的类信息

    要想获取使用指定注解的类信息,可借助工具: org.reflections.Reflections 此工具将Java反射进行了高级封装,Reflections 通过扫描 classpath,索引元数据 ...

  7. 【Struts】Struts框架配置详解

    1.首先将所必须的Jar包放到项目的WebRoot/WEB-INF/lib目录下. 如果你没有这些Jar文件,你可以到Struts官网上下载:http://struts.apache.org/.因为经 ...

  8. 【操作系统之十三】Netfilter与iptables

    一.Netfilter Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤.数据包处理.地址伪装. ...

  9. pyqt助手中安装Qt帮助文档

    一.个人安装环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 4.通过Anaco ...

  10. Python - 批量下载 IIS 共享的文件

    1.说明 用 IIS 以WEB形式发布了本地文件夹,提供文件下载,并设置了访问权限:默认下载需要点击一个一个的下载,web界面如下: 3.脚本 执行脚本批量下载文件,会在当前目录创建文件夹,并压缩该文 ...