首页 > 代码库 > Mysql

Mysql

DDL语句:操作表的语句;

DML语句:操作表的数据和字段的语句;

DCL语句:是数据库控制功能,是设置或更改数据库用户或角色权限的语句;

 

mysql是一个关系型数据库;

特点:体积小,成本低,开放源码,

安装:yum安装,rpm安装,源码安装;

 

存储引擎:InnoDB,myISAM,Memory

InnoDB是mysql的一种存储引擎,给mysql提供了事务、回滚、崩溃修复能力、多版本并发控制的事务安全。特点:支持事务和外键

 修改存储引擎:alter table 表名 engine=存储引擎名

 

连接登录:mysql -h 主机名或ip -P 端口号 -u user -p密码   ---->-p与密码之间没有空格

 

数据库授权:为用户授权  grant 权限 on 数据库对象 to 用户

取消用户权限:revoke 权限 on 数据库类型 from 用户

用户设置密码:set password     ---set password for 用户=password("密码");

       修改密码:update user set password=password("新密码") where user=‘用户‘;

       删除密码:delete from user where user =‘用户‘;

 

数据类型:

         数字型:一般int

         浮点型:float double

         日期与时间类型:date 日期 yyyy-mm-dd;time 时间 hh:ii:ss;year 年份;

                                     datetime timestamp都是日期与时间混合类型;

                                     datetime的取值范围大于timestamp

          字符串类型:char() 定长;varchar() 

          二进制类型

 

 

显示所有数据库:show databases

选择默认数据库:use dbname

显示所有表:show tables

 

创建数据库:create database 数据库名

删除数据库:drop database 数据库名

 

主键:primary key   ====not null + unique

          唯一标示一条记录;不能重复;不允许为空;主键只能有一个;

           作用:保证数据的完整性;

外键:foreign key

           表的外键是另外一张表的主键(主外键关联),外键可以有重复,可以为空,一个表可以有多个外键;

           作用:与其他表建立联系用的;

约束:unique  唯一;auto_increment 整数列自增长;unsigned 无序号整数;default 默认值 /cur_timestamp创建新记录时默认保存当前时间    默认约束;

 

 

 

 创建表:create table 表名 (

                   列名 列类型 列约束,

                   列名 列类型 列约束,

                    ......

              ) ----->每列之间用逗号隔开,最后一列什么都不用

 

查看表结构:desc 表名;show create table 表名;

修改表名:alter table 旧表名 rename [to] 新表名;

修改字段数据类型:alter table 表名 modify 属性名  数据类型

                               alter table 表名 change  旧属性名  新属性名 新数据类型;

增加字段:alter table 表名 add 列名 数据类型 [完整性约束条件] [first|after 列名2] ----first和after是修改字段的排列位置

增加外键:alter table 表名 add constraint 外键别名 foreign key(外键的字段名) references 主表(字段名)

删除外键:alter table 表名 drop foreign key 外键别名   ----->主外键关联后先删除外键才能删除主键;

删除字段:alter table 表名 drop 字段名;

删除:truncate 表名/delete from  表名    ----清空数据

           drop table 表名    ----删除表

插入数据:insert  into ... values(......);   ---插入一条数据

                 insert into ... values(......),(......),(......),(......),.....;    ----插入多条数据

                 insert into 表名2 select * from 表名1;  ----查询出数据插入另一个表,表2要已存在

                 replace:1.replace into 表名 [(字段列表)] values (.....);   ----插入一条数据

                                 2.replace [into] 表名2 select * from 表1;    ----查询出数据插入另一个表,表2要已存在

                                 3.replace [into] 表名 set 列名1=值1,列名2=值2

 

                 insert 与replace的区别:replace将delete和insert合二为一了。当使用replace时,如果新数据的主键值或者唯一约束的字段值已有相同的值时,会删除已存在的数据,然后再插入新的数据。

更新数据:update 表名 set 列名1=值1,......,列名n=值n where ........;

查询:select ....... from ....... where ......

          多表:select ..... from 表1,表2 where 表1字段=表2字段

                     inner join 内连     -----显示两张表所有数据

                     left join 左连     -----显示左表全部+右表符合条件的

                     right join 右连   -----与左连相反

           in/not in (多个结果);

起别名:as 或者直接 空格输入表名  ----->列名 as 别名;列名 别名

         

表达式:or  可同时使用多个or   多着满足其一就行

              and  可同时使用多个and  要全部满足

              between ... and ...  在这个范围内

              like 模糊查询   _一个字符 %任意字符

              null/not null/‘‘ 为空或不为空

              order by 排序  放最后 asc升序 desc降序    默认升序

              group by 分组   与聚合函数和having一起使用  having放group by 后面

去重:distinct 放列名之前

限制查询条数:limit 数字     放最后   ----->select * from user limit 5/10,20;

聚合函数:count();sum();avg();max();min();

合并结果集:select 语句 union select 语句   ----会自动去重

                     union all   ----不自动去重   但是效率高于union

子查询:=;in/not in; exist/not exist

 

 

数据库备份:

     mysqldump 先查出需要备份的表结构,再在文本文件中生成一个create语句,将表中所有记录转换成一条insert语句,然后还原。

     mysqldump -u用户名 -p密码 -A/-n/-t/-d>表名  ----A全部表/只导出数据,不添加create database/只导出数据,不添加create table语句/只导出表结构

恢复备份:mysql -u用户名 -p密码 [数据库]<表名    

 

索引:

     特殊数据库结构,快速查询数据,提高数据库性能的重要方式;

     普通索引:create index 索引名 no 表名(列);

                       alter table 表名 add index 索引名(列);

     唯一索引:create unique index ......

                       alter table 表名 ......

     多个列用逗号隔开;

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

    

存储过程:

      delimiter $$;   -----修改结束符

      create procedure 存储过程名(参数,参数2...) ---参数in/out/inout 在参数之前

      begin

           declare ......

           set .......

            sql语句块;

      end

      $$;

      delimiter;

     set  ......

      call 存储过程名();    ---调用存储过程

 

if循环

 if 条件 then

    语句

 elseif 条件  then

    语句

 else

    语句

 end if;

 

case语句

 case value

 where 条件  then

     语句

 when 条件  then

     语句

 else

    语句

 end case;

 

while循环     ---多用于造数据

 while  条件 do

     语句

 end while;

 

repeat循环    ---至少会执行一次

 repeat

    语句

 until 条件

 end repeat;

 

       

Mysql