mysql.基础01

01. DDL

  > 查询所有数据库:  show databases;

  > 查询当前数据库:   select database();   //括号是必须要加的

  >  创建数据库:  create database [if not exists]  数据库名 [default charset 字符集] [collate 排序规则]

    -> 关于字符串:  utf8   一个汉字存3字节,但有些特殊符号会存4字节,所以会使用  utf8md4 做为字符集

  > 删除:  drop database [if exists] 数据库名

  > 使用:  use 数据库名;

    > 查看当前数据库所有的表:   show tables;

    > 查询表结构:  desc 表名;

    > 查询指定表的建表语句:  show create table 表名;

    > 创建数据表

      

 

     ** mysql中的数据类型    (id tinyint unsigned  -- 表示:新建表时,创建的是一个无符号珠 tinyint 字段 id )

    

    

    

 

     > 添加字段:  alter table 表名  add 字段名 类型(长度) [comment 描述] [约束]    

 

     > 修改数据类型  alter table 表名 modify 字段名 新数据类型(长度)

    > 修改字段名和字段类型:  alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 描述] [约束];

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

    > 修改表名:alter table 表名 rename to 新表名;

    > 删除表:drop table [if exists] 表名;

    > 删除指定表并重新创建:  truncate table 表名;

  ** 图形化工具:

    > sqlyog

    > navicat

    > DataGrid    

 02. DML

  >添加指定字段的数据:  Insert into 表名(字段1, 字段2....) values (值1, 值2....)

  > 添加的有字段的数据  insert into 表名 values (值1,值2....)

  > 批量添加数据

     insert into 表名(字段1,字段2...)  values (值1,值2...) ,(值1,值2...),(值1,值2...)...

     insert into 表名 values (值1,值2...) ,(值1,值2...),(值1,值2...)...

  ** 插入字符串和日期类型的数据时,数据要包含在引号中;

  > 修改数据  update 表名 set 字段名1=值1, 字段名2=值2,.... [where 条件]  

  > 删除数据 delete from 表名 [where 条件]  

03.DQL

  

 

  > where 和 having 的区别

    > 执行时机不同:  where 是分组前过滤,不满足where条件的,不参与分组;

            having 是分组之后的结果进行过滤;

    > 判断条件不同:  where不能对聚合函数进行判断;having可以;

  > 分页查询: select 字段列表 from 表名 limit 起始索引, 查询记录数

    >起始索引: 从0开始,起始索引=(查询页码-1)*每页记录条数

    > 分页查询是数据库的方言,不同的数据库有不同的实现;mysql中是 limit

    > 如果查询的是第1页数据,起始索引可以省略,直接简写为 limit 每页记录数;

  > 关于取字段内值的长度的问题 (注意 length, char_length 的区别)

    

 04.DCL

  > 查询用户:  

    use mysql;

    select * from user;

  > 创建用户 (此时无任何权限)

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

    >> 若只限定在本机访问,则主机名为: localhost

    >> 若创建的账号可在任意主机访问数据库,则 主机名为:%

  > 修改用户密码

    alter user '用户名'@'主机名' identified with mysql_native_password by '新密码'

  > 删除用户

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

  > 可控制的权限

    

 

 

   >查询权限: show grants for '用户名'@'主机名'

  > 授予权限:grant 权限列表 on 数据库名.表名 to '用户名'@'主机名'

  > 撤销权限:  revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名'

        数据库名.*  表示数据库中所有的表