• MySQL-SQL的分类以及基本的操作


    1.DDL:数据定义语言

      用来定义数据对象:数据库,表,列等

      关键字:create、drop、alter等

      (1)操作数据库:CRUD

        1.C(Create):创建

          Ⅰ.创建数据库:create database 数据库名称;

          Ⅱ.指定数据库的字符集以及判断是否已经存在该数据库,如果存在就不创建该数据库:create database if not exists 数据库名称 character set 字符集名称(如:utf8);

        2.R(Retrieve):查询

          Ⅰ.查询所有数据库的名称:show databases;

          Ⅱ.查询某个数据库的字符集:查询某个数据库的创建语句:show create database 数据库名称;

        3.U(Update):修改

          Ⅰ.修改数据库的字符集:alter database 数据库名称 character set 字符集名称;

        4.D(Delete):删除

          Ⅰ.删除数据库:drop database 数据库名称;

          Ⅱ.判断数据库是否存在,如果存在再删除:drop database if exists 数据库名称;

        5.使用数据库

          Ⅰ.查询当前正在使用的数据库名称:select database 数据库名称;

          Ⅱ.使用数据库:use 数据库名称;

      (2)操作表

        1.C(Create):创建

          Ⅰ.语法:create table 表名(

                列名1 数据类型1,

                列名2 数据类型2,

                ......    ......,

                列名n 数据类型n

               );

          Ⅱ.复制表:create  table 复制的表名 like 被复制的表名;

          Ⅲ.数据库的数据类型:

        

             Ⅳ.注意:

             double类型要标注一共几个位,保留小数点后几位:create table score double(5,2);

             date,datetime,timestamp都是表示时间,区别是:date只表示年月日,datetime和timestamp都表达年月日时分秒,而timestamp如果不给它的字段赋值则默认使用当前的时间,而datetime如果不给它的字段赋值则显示的是null

        2.R(Retrieve):查询

          Ⅰ.查询某个数据库所有的表名称:show tables;

          Ⅱ.查询表结构:desc 表名称;

        3.U(Update):修改

          Ⅰ.修改表名:alter table 表名 rename to 新表名;

          Ⅱ.修改表的字符集:alter table 表名 character set 新的字符集;

          Ⅲ.添加列:alter table 表名 add 列名 数据类型;

          Ⅳ.修改列名,类型:alter table 表名 change 列名 新列名 新数据类型;

          Ⅴ.只修改类型:alter table 表名 modify 列名 新数据类型;

          Ⅵ.删除列:alter table 表名 drop 列名;

        4.D(Delete):删除

          Ⅰ.删除表:drop table 数据库表名;

          Ⅱ.如果存在该表则删除,如果不存在就不删除:drop table if exists 数据库表名;

    2.DML:数据操作语言

      用来对数据库中的表进行增删改

      关键字:insert、update、delete等

      (1)添加数据:

          Ⅰ.可以将选择的列插入数据,没有选择的列值为null:insert into 表名(列名1,列名2,列名3,...,列名n) values(值1,值2,...,值n);

          Ⅱ.为所有的列插入数据:insert into 表名(列名1,列名2,列名3,...,列名n) values(值1,值2,...,值n);

      (2)删除数据:

          Ⅰ.删除单个数据:delete from 表名 where 条件;

          Ⅱ.删除该表的全部数据:

            delete from 表名;(不推荐,因为有多少条记录就会执行多少次删除操作,效率低下)

            truncate table表名;(推荐,这条sql语句是将该表先删除,然后在创建一个名字一模一样的空表,只执行两条sql语句,效率较高)

      (3)修改数据:

          Ⅰ.修改单个数据:update 表名 set 列名1=值1,列名2=值2,...,列名n=值n where 条件;

          Ⅱ.修改表中选择列的全部数据:update 表名 set 列名1=值1,列名2=值2,...,列名n=值n;

          Ⅲ.为某列的部份字段修改相同的数据(如修改这个表的部分数量减一):update 表名 set 列名=值 where id in(id1,id2,id3...idn);

    3.DQL:数据查询语言

      用来查询数据库中表的记录

      关键字:select、where、

      (1)查询数据:

        Ⅰ.基本查询:select 查询的列名 from 表名;

          ①.去除重复的结果集:select distinct 列名 from 表名;(注意:如果该列名查询出来的结果还会有重复,则看一下重复的数据是否有空格的存在,如:'香港'和'香港 ')

          ②.计算数据之和:select 列名1,列名2,列名3,列名2+列名3 from 表名;(注意:该计算的数据之和如果任何一个数据是null,计算结果也是null,如列名2的结果是null,列名3有数据,则结果依然是null)

                   select 列名1,列名2,列名3,ifnull(列名2,0)+列名3 from 表名;(解决了上述结果为null的情况,就是用ifnull来把为null的数据替换为0)

          ③.给列起别名:select 列名1,列名2,列名3,列名2+列名3 from 表名 as 别名;(把列名2+列名3的数据之和的这一列的列名起一个别名)

        Ⅱ.sql语句的查询可能用到的查询的条件:

          select

            字段列表  

          from

            表名列表

          where

            条件列表

          group by

            分组字段

          having

            分组之后的条件

          order by

            排序

          limit

            分页限定

        Ⅲ.条件查询:

          ①where字符句后跟条件

          ②比较运算符

             >、<、<=、>=、=、<>:在这些运算符中,没有==,是用=代替的,既可以使用!=,也可以使用<>,代表的意思一样

             BETWEEN...AND:查询在一个范围内符合要求的字段,包头也包尾 如:select * from student where age between 20 and 30;(相当于select * from student where age>=20 and age<=30;) 

            in:集合表示多个值,用逗号隔开 如:select * from student where age in(22,18,25); (相当于select * from student where age=22 or age=18 or age=25;)

             like:模糊查询

                根据%(多个占位符)来确定如何模糊查询,如 '%张' 则说明是这一列末尾的字为张的所有字段,'张%' 这个则说明是这一列第一个字为张的所有字段,'%张%' 这个表示这一列存在张的所有字段(无论张在句首还是句尾还是句中)

               根据_(单个占位符)来确定如何模糊查询,如 '_张%' 说明这一列第二个字为张的所有字段,'张_' 这个说明这一列只有两个字符且第一个字符为张的所有字段,且第一个为张,'%张_' 这个说明这一列倒数第二个字符为张的所有字段,'___'这个则说明查询这一列有三个字符的所有字段

             is (not) null:查询某一列为(不为)null的字段(在sql语句中不能写=null)如:select * from student where age is null;(不能这么写:select * from student where age=null;)

          ③逻辑运算符

            and 或 &&:

            or 或 ||:

            not 或 !:

    4.DCL:数据控制语言

      用来定义数据库的访问权限和安全级别,及创建用户

      关键字:grant、revoke等

       1.管理用户

        1.添加用户:

          --创建用户

          create user '用户名'@'主机名' identified by '密码';

          2.删除用户:

           --删除用户

           drop user '用户名'@'主机名';

          3.修改用户密码:

            --修改密码

            update user set password = password('新密码') where user = '用户名';

            或

            set password for '用户名'@'主机名' = password('新密码');

          4.查询用户:

          --切换到mysql数据库(每个数据库自带的数据库)

          use mysql;

          --查询user表

          select * from user;

           通配符:%表示可以在任意主机使用用户登录数据库

          5.忘记密码

            

       2.权限管理:

        1.查询权限

          show grants for '用户名'@'主机名';

             show grants for 'lisl'@'%';

        2.授予权限

          --授予部分权限

          grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

             grant select,delete on db.account to 'lisi'@'%';

           --授予所有权限

           grant all on *.* to '用户名'@'主机名';

           grant all on *.* 'zhangsan'@'localhost';

        3.撤销权限

          --撤销权限

           revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

           revoke select on db.account from 'lisi'@'%';

  • 相关阅读:
    今天的赢在中国推迟了,给大家推荐个视频,看看什么是真正的中华武术
    赢在中国080312
    盛大(上海)诚聘软件测试人员
    jQuery入门[2]-选择器
    阿里巴巴诚信通成为《赢在中国》的实战项目,要花多少钱?--《赢在中国》(20080408)
    唐僧晒书
    用于生成网页、WAP、JS中文编码的Unicode编码工具
    jQuery入门[5]-AJAX
    中国哲学(一)
    20071212公映的《色即是空2》(sex is zero 2)字幕文件
  • 原文地址:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/11882109.html
Copyright © 2020-2023  润新知