详解数据库引擎与SQL语句增删改查(非常详细,带例)

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

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

数据的组织结构

  层次型 :有上下级关系

  网状型 :

  关系型 :

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

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

                             管理数据本身完整性

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

 

扫描二维码关注公众号,回复: 6932196 查看本文章

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   --->小整形,范围:一个字节,最多表示范围-128127,或者0-255

         SMALLINT    --->微整形,范围:两个字节,最多表示范围-128127,或者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 库名 :在登录以后,直接把某个数据库设为默认数据库

show  databases  :显示有几个数据库

数据类型:

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

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

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

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

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

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

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

   auto_increment    --->自动增长

数值:

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

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

         SMALLINT    --->微整形,范围:两个字节,最多表示范围-128127,或者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   表名

                         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  '用户名'@'主机名;

创建与删除索引

创建索引: 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:会将纯文本密码加密作为散列值存储

 

客户端交互式命令

   批处理模型/脚本模式   (\?

       source  (\.)  :去载入你文件系统上的某一个脚本

         clear  (\c) :语句结束符

       connect  (\r) :重新连接服务器

            go  (\g):无论语句结束符是什么,直接将此语句送至服务器

          ego   (\G):无论语句结束符是什么,直接将此语句送至服务器,而且结果以竖排方式显示。

           quit  (\q) :退出

          system (\! ) :执行shell命令

                 \#  :对于新建的对象,支持补全功能

                 -A  :禁用命令补全

    在外部使用输入重定向的方式定义

      mysql  -r  -u  -h  < sun.sql

   

服务器端命令(mysqladmin)

  可以通过客户端执行服务器端命令的

mysqladmin  [-u|-p|-h]    子命令  选项  

 

  mysqladmin   -uroot  -p    password    '密码--->修改密码

 mysqladmin   -uroot   -p  -hlocalhost  create  库名   --->添加库

 mysqladmin   -uroot   -p  -hlocalhost  drop   库名   --->删除库

 mysqladmin   -uroot   -p  -hlocalhost   ping    --->测试数据库服务器是否在线

 mysqladmin   -uroot   -p  -hlocalhost   processlist   --->显示正在执行的线程列表

 mysqladmin   -uroot   -p  -hlocalhost   status   --->显示服务器当前状态:启动时间、运行的线程数、已经完成的查询数、man查询次数、                  

                                                      打开的表数、刷新的表数(flush)、打开的文件数、平均下来每秒钟的查询数

 mysqladmin   -uroot   -p  -hlocalhost   status --sleep 2 --->每两秒钟显示一次服务器状态

 mysqladmin   -uroot   -p  -hlocalhost   status --sleep 2 --count 2 --->每两秒钟显示一次,一共显示两次

 mysqladmin   -uroot   -p  -hlocalhost   extended-status   --->显示状态变量及其值(统计数据)

  mysqladmin   -uroot   -p  -hlocalhost   variables   --->显示服务器变量(定义工作属性)

    省略         flush-privileges    --->让mysql重读授权表(等同于reload

    省略         flush-tables      --->关闭所有已经打开的表

    省略         flush-status  --->重置大多数服务器状态变量(让统计数据清零)

    省略         flush-tables  --->关闭所有已打开的表

    省略         flush-threads  --->重置线程缓存(销毁空闲线程)

    省略         flush-logs  --->做二进制和中继日志滚动

    省略         flush-hosts  --->清除主机内部信息(由于太多的连接错误,而导致的用户拒接登录)

                  kill  --->杀死进程

    省略         refresh  --->等同于执行flush-logs和flush-hosts

    省略         shutdown  --->关闭mysql 服务器

    省略         version   --->显示musql版本信息和状态信息

    省略         start-slave   --->启动复制,启动从服务器的复制线程

                         SQL thread  --->启动的线程名字

                         IO thread    --->启动的线程名字

    省略         stop-slave   --->关闭复制功能

 

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

   名称             是否支持   简要描述                                                     是否支持事务   是否支持分布式事务   是否支持保存点

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| Engine             | Support | Comment                                                        | Transactions | XA                 | Savepoints |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys                  | YES      | YES                 | YES         |

                       (默认

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

创建表:

1、直接定义一张空表

   create   table   [if not extsts]  表名 (表属性) ,(表选项:字段名称,字段属性,约束/索引)

2、从其他表中查询出数据并以之创建新表

3、以其他表为模板,创建一个新表

  设置主键方法:

   create table sun1 (id int not  null auto_increment primary key ,name char(20)not null ,age tinyint  not null );

   create table sun2 (id int not  null auto_increment ,name char(20)not null ,age tinyint  not null,primary key(id,name));  :id和name联合起来成为主键 

  设置唯一键(名称字段中不允许出现重复)

     create table sun2 (id int not  null auto_increment ,name char(20)not null ,age tinyint  not null,primary key(id,name)  ,unique key (name));  :name这个字段中的数据不允许出现重复

     create table sun2 (id int not  null auto_increment ,name char(20)not null ,age tinyint  not null,primary key(id,name)  unique key (name)index(age)); :设置age 为索引

 设置表的存储引擎

     create  table  表名  (一系列属性 )engine = 存储引擎名

 设置最多存储多少行

     create  table  表名  (一系列属性 ) max-rows=多少行

当使用AUTOINCREMENT列创建序列时,INSERT语句中不使用字段名将导致MySQL自动产生序列的下一个序号。这个序号作为表的主键。

     insert into   kk     (ke)  values   ('huama'),('pixie'),('kuihua');

        关键字   表    字段  关键字    添加内容

 

  增加主键

     insert into   kk     (ke)  values   ('huama'),('pixie'),('kuihua');

        关键字   表    字段  关键字    添加内容

2、从其他表中查询出数据并以之创建新表

仿照一张表创建一张新表(有数据)

create  table  xinwen  select  *  from  kk     where  name >= 2;

    创建表     表名      查看 旧表   表名    关键字  条件

3、以其他表为模板,创建一个新表

仿照一张表创建一张新表(空表)

create  table  新建表名  like  仿照表明;

给表中一个字段添加一个唯一键(前提是表中没有重复的数据)

alter  table  表名  add  unique  key   (字段名);

或者:rename  table  旧名字 to  新名字;

删除一个表中的字段

alter  table 表名  drop  字段;

alter  table 

     添加、修改、删除字段    修改表属性

     添加、删除、修改索引    改表名

给表中一个字段添加一个唯一键(前提是表中没有重复的数据)

alter  table  表名  add  unique  key   (字段名);

给库中的表改名字

alter  table  旧名字  rename  to  新名字;

或者:rename  table  旧名字 to  新名字;

给表中的字段改名字

alter table表名 change   旧字段  新字段 新字段属性;

直接修改表引擎

alter   table   表名   engine=存储引擎名(MyISAM|lnnoDB

多表查询(将两张表联合起来查询相同的结果):

 

select  name   ,    keming   from  xuehao,kehao  where  xuehao.cid=kehao.cid;

查询    表A字段 表B字段         表名   表名  条件    两张表的cid相同的数据

 

注意:外键约束只能够用在支持事务的存储引擎上!

 

 

 

单表查询

在一个表中,某个字段中相同的数值只显示一次!

select  distinct  字段名   from  表名;

 

from子句 :表,多个表,其他查询语句(select

where子句:布尔关系表达式,操作符(<,>,>=,<=,=

 

组合条件查询

符号:   %:任意长度任意字符

         _:任意单个字符

 rlike/regexp:使用正则表达式

         in :离散取值

order  by  字段 (asc升序/desc降序):给查询出来的数据排序,(默认为升序)

and :和

or :或

not :非

between。。。and。。。:。。。与。。。。之间

 

select   cid  from  xuehao  where      not   cid >2;

                          关键字          条件

select   cid  from  xuehao  where     not    cid >2      and   id=1;

                          关键字         条件           条件

select   cid  from  xuehao  where    cid >2    or    id=1;

                          关键字    条件   或者   条件

select   cid  from  xuehao  where     not   cid > 2   and   not    id =1;

                          关键字         条件            条件

select   cid  from  xuehao  where     not  (cid > 2  or  id =1);

                          关键字     非     条件1或条件2

select   cid  from  xuehao  where     cid    between  2  and  6;

                          关键字     cid在26之间(between:。。。与。。。之间

select keming from    kehao  where    keming   like          'y%'

                            关键字  字段名   关键字    以y开头的字符

select keming from    kehao  where     keming   like         'k_ _ _';

                                                         以K开头后面有3个字符

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

                                                         字符中包含了k的字符串

select keming from    kehao   where     keming   rlike            '^[ky].*$' ;

                                           使用正则表达式     开头是k或y

select   cid   from    kehao  where      cid       in         (1,2,5);

                                    筛选出一个表中id的值为1,2,5

select    *    from    xuehao     order   by  cid

                                  排序   根据cid

别名:select  a.Name , b.Cname      from   students  as  a,courses  as  b  where  a.CID1=b.CID;

         字段别名为a   字段别名为b           表别名为a      表别名是b   条件   表aCID1=bCID

多表查询

连接方式

   交叉连接:笛卡尔乘积

   自然连接:将两张表上相同字段当中的的那个值逐一作比较,只将等值关系将它保留下来

    外连接:

           左外连接:左表  left  join  右表  on  条件

           右外连接:左表  right  join 右表  on  条件

select s.Name,c.Cname  from  students   as    lef t join  courses  as     on     s.CID1=c.CID;

                             左表  别名   s   左外连接 右表  别名    c  连接条件 

select s.Name,c.Cname  from  students   as    s   right join  courses  as  c  on  s.CID1=c.CID;

                             左表  别名   s   右外连接   右表  别名 c 连接条件

     子连接

          比较操作中使用子查询,子查询只能返回单个值

          in ():使用子查询

联合查询

union

  

(select Name,Age from  students) union  (select Tname,Age from  tutors);

 

insert  into 

insert  into  表名  (字段,字段value  ('字符串',数字)('字符串',数字)

insert  into  表名  set  字段=数值(字符串加引号),字段=数值,字段=数值;

select  *  from  kebiao  order  by    id     desc    limit  1;

                 表名   排序       字段   倒叙   只显示1个

当我们在表中删除一个数据(id 10),当我们再创建这个数据时,id不会再是10,用一条命令查看自动生成的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,把添加的那两行删除

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/linux-s/p/11290029.html