Mysql数据库操作

                                                                               Mysql数据库操作
1.SQL语句分类
(1)DDL(Data Definition Laguage):数据库定义语言,用来定义数据库对象,库
表,列等;
创建,删除,修改,库、表结构
(2)DML(Data Manipulation Language):数据库操作语言,用来定义数据库记录
(数据);
增,删,改,表记录
(3)DCL(Data Control Language):数据库控制语言,用来定义访问权限和安全级别
(4)DQL(Data Query Language):数据库查询语言,用来查询记录(数据)
2.数据库
(1)查看所有数据库
 show databases;
(2)选择要操作的数据库
  use 数据库名;
(3)创建数据库
 create database [if not exists] 数据库名;
(4)删除数据库
 drop database [if exists] 数据库名;
(5)修改数据库编码
  alter database 数据库名 character set utf8;
3.表
(1)创建表:
   create table [ if not exists] 表名(列名 列类型,列名 列类型,....);
(2)查看当前数据库中所有表名称:show tables;
(3)查看指定表的创建语句:show create table 表名;
(4)查看表结构:desc 表名;
(5)删除表:drop table 表名;
(6)修改表:前缀: alter table 表名
   修改之添加列
   alter table 表名 add(
   列名 列类型,
   列名 列类型,
   列名 列类型,
   ..............
);
 修改之修改列类型(如果被修改的列已存在数据,那么新的类型可能会影响到已存在数据)
 alter table 表名 modify 列名 列类型;
 修改之修改列名
 alter table 表名 change 原列名 新列名 列类型;
 修改之删除列 
 alter table 表名 drop 列名
 修改表名称
 alter table 原表名 raname to 新表名

(7)表的复制

    只复制表的结构

    create table 复制后的表名 like 被复制的表名;

   复制表的结构+表的数据

  create table 复制后的表名

   select * from 被复制的表名;
4.DQL操作
 (1)基本查询
  A.字段(列)控制
    a.查询所有列
    select * from 表名;
    b.查询指定列
    select 列1 [,列2,... 列n] from 表名;
    c.完全重复的记录只一次
     当查询结果中的多行记录一模一样时,只显示一行。
     select distinct * |列1 [,列2,....列n] from 表名;
     d.列运算
      1)数量类型的列可以作加,减,乘,除运算。
       select sal*2 from emp;
       2)字符串类型可以做连续运算
       select concat('$',sal) from emp;
       3)转换null值
       又是需要把null值转换成其他值,例如com+100时,如果com列存在null值,那么null
      +100还是null,为了避免这种情况,我们需把null转换成0,例如:
       select ifnull(com,0)+100 from emp;
        ifnull(com,0);如果com中存在null值,那么当成0来运算。
        4)给列起别名
        select 原列名 as 新列名 from 表名;
         其中as可以省略。
(2)条件控制
   A.条件查询
   select语句使用where子句控制记录,例如:
   select empno,ename,sal,com from where sal>1000 and comm is not null;
   select empno,ename,sal from emp where sal betweeen 2000 and 3000;
   select empno,ename,job from emp where job in ('经理','董事长');
   B.模糊查询
    当你想查询姓李,并且姓名一共两个字的员工时,这时使用模糊查询
    select * from emp where ename like '李';
    模糊查询需要使用运算符:like,其中_匹配一个任意字符,只匹配一个字符
   如果我们查询姓李,名字多个字符时可以使用“%”;
   select * from emp where ename like '张%';
   其中%可以匹配0~n个任意字符
(3)排序
  1)升序
   select * from where emp order by sal asc;
   sal按升序排列
   其中asc可以省略
   2)降序
   select * from where emp order by com desc;
  com按降序排列
  desc不可以省略
   3)使用多列作为排序条件
   select * from where emp order by sal asc, com desc;
5.DML操作
 (1)插入数据
  insert into 表名(列名1,列名2,列名3,....)values(列值1,列值2,列值3,....);
  insert into 表名 values(列值1,列值2,...);
  没有给出要插入的列,那么表示插入所有列。
 (2)修改数据
 update 表名 set 列名1=列值1,列名2=列值2,...[where 条件];
 条件可选,必须是一个boolean类型的值或表达式。
 (3)删除数据
  delete from 表名 [where 条件];
6DCL操作
 (1)创建用户
   create user 用户名@IP地址 identified by '密码';
   用户只能在指定的IP地址上登录
    create user 用户名@'%' identified by '密码';
    用户可以在任意IP地址上登录
 (2)给用户授权
    grant 权限1,...,权限n on 数据库.* to 用户名@IP地址
    grant all on 数据库.* to 用户名@IP地址
    给用户分派指定数据库上的所有权限。
 (3)撤销授权
    revoke 权限1,...,权限n on 数据库.* from 用户名@IP地址
   撤销指定用户在制定数据库上的指定权限
  (4)查看权限
   show grants for 用户名@IP地址
   查看指定用户的权限
  (5)删除用户
   drop user 用户名@IP地址
6.聚合函数
  聚合函数用来做某列的纵向运算。
  1)count
   select count(*) from emp;
   就算emp表中所有列都不为null的记录的行数。
  2)max
    select max(sal) from emp;
    查询最高工资
  3)min
   select min(sal) from emp;
   查询最低工资
  4)sum
   select sum(sal) from emp;
  查询工资和
 5)avg
   select avg(sal) from emp;
  查询平均工资
7.分组查询
  分组查询是把记录使用某一列进行分组,然后查询组信息
  例如:查询所有部门的记录数
   select deptno, count(*) from emp group by deptno;
  使用deptno 分组,查询部门编号和每个部门的记录数
  select job,max(sal) from emp group by job;
  使用job分组,查询每种工作的最高工资
  组条件
  以部门分组,查询每组记录数,条件为记录数大于3
 select deptno,count(*) from emp group by deptno having count(*)>3;
8 limit子句
   limit用来限定查询结果的起始行,以及总行数。
   例如: 查询起始行为第五行,一共查询3行记录
     select * from emp limit 4,3;
    其中4表示从第五行开始,其中3表示一共查询3行,即5,6,7行记录.
    一般查询的关键字顺序为select, from ,where ,group by ,having, order by。
 9.mysql编码问题
  1)查看mysql数据库编码
     show variables like 'char%';
  2)编码解释
     character_set_client: mysql使用该编码来解读客户端发送过来的无数据,例如该编码为
     utf8,那么客户端发送过来的数据不是utf8,那么就出现乱码。
     character_set_result :mysql会把数据转换成该编码后,再发送给客户端,例如该编码为utf8
     ,那么如果客户端不使用utf8解读,那么就会乱码。
    3)控制台乱码
       插入或修改时出现乱码
       这是因为cmd下默认使用GBK,而character_set_client不是GBK原因,我们只需
      让这两个编码相同即可,即设置character_set_client为GBK。
       查询出的数据为乱码
       这是因为character_set_result不是GBK,而cmd默认使用GBK原因,我们只需
       让这两个编码相同即可,即设置character_set_client为GBK。
       设置变量语句:
      set character_set_client=gbk;
      set character_set_result=gbk;
       注意: 设置变量只对当前连接有效,当退出窗口后,再次登录mysql,还需要再次设置变量。
      为了一次性更正,可以在my.ini中设置
      default-character-set=gbk即可
     4)指定默认编码
      在my.ini配置文件中设置character-set-server=utf8即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值