zoukankan      html  css  js  c++  java
  • 涂抹mysql笔记-管理mysql库和表

    mysql的表对象是基于库维护的,也就是说它属于某个库,不管对象是由谁创建的,只要库在表就在。这根Oracle不同Oracle中的表对象是基于用户的。属于创建改对象的用户所有,用户在表就在。
    mysql中的数据库(database)和Oracle数据库中的数据库概念不同。每个mysql都是由多个数据库组成(创建好默认4个)而Oracle中的数据库则是一个整体。
    mysql默认的4个库
    information_schema:记录用户、表、视图等元素信息、提供类似oracle的数据字典功能,类似于oracle数据库的system表空间。值得关注的是这个库是个特例,它是虚拟出来的库,是由mysql实例构建和维护的,其对象都保存在内存中。也就是说在磁盘上找不到对应的物理存在,因为它是虚拟的。那么用户也无法再该库下创建对象。甚至是root身份用户也不行,该库只能查询。而且该库中的对象在用户权限上面也非常特别。
    mysql:记录用户权限、帮助、日志等信息,提供类似oracle数据字典功能,类似于oracle数据库中的system和sysaux表空间。
    performance_schema:mysql服务性能指标库提供类似oracle数据库中v$类视图和数据字典功能。5.5引入的
    test:测试库可以删除掉

    show databases;
    显示当前连接用户拥有访问权限的数据库。最高权限root账户可以查看到所以存在的数据库。对于只拥有一定权限的用户就指挥看到它拥有访问权限的库和对象。
    删除test库,提醒删除有风险操作需谨慎。
    drop database test;
    create database jason;
    查某个数据库的字符集:
    mysql> show create database jason;
    +----------+----------------------------------------------------------------+
    | Database | Create Database |
    +----------+----------------------------------------------------------------+
    | jason | CREATE DATABASE `jason` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    +----------+----------------------------------------------------------------+
    1 row in set (0.00 sec)
    mysql> select * from information_schema.schemata;
    +--------------+--------------------+----------------------------+------------------------+----------+
    | CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
    +--------------+--------------------+----------------------------+------------------------+----------+
    | def | information_schema | utf8 | utf8_general_ci | NULL |
    | def | jason | utf8 | utf8_general_ci | NULL |
    | def | mysql | utf8 | utf8_general_ci | NULL |
    | def | performance_schema | utf8 | utf8_general_ci | NULL |
    +--------------+--------------------+----------------------------+------------------------+----------+
    4 rows in set (0.01 sec)
    选定某个数据库
    use database_name;
    mysql> use mysql
    Database changed
    也可以在登陆的时候指定数据库名
    mysql -uroot -p'password' database_name
    或者编写的sqlplus.sh 3306 mysql
    查看库中的表对象show tables;
    mysql> show tables;
    建表:
    use jason
    create table users(
    username varchar(10),
    sex tinyint,
    birth date,
    address varchar(50),
    phoneno varchar(15)
    );

    select database();

    help create table;

    desc mysql.db
    Field 显示列名
    Type 显示列的数据类型
    Null 表示该列是否可以为空 显示NO表示不能为空 否则就是允许为空
    Key 表示该列是主键列或索引列 为空的话表示该列上没有创建任何索引
    Default 用于显示个该列的默认值,为空表示没有默认值。
    Extra 用于显示一些额外的附件信息 比如说该列如果定义为自增列 则会显示为AUTO_INCREMENT 对于timestamp
    列如果定义了on update选项 则此处也会显示相应的关键字。
    也可以用show columns from table_name;
    查看某个表的索引
    获取mysql.db对象的创建脚本
    alter table的语法 help alter table;
    alter table users add (email varchar(50),salary smallint);
    alter table users drop salary;
    mysql数据库中,碰到字符类型列,如char/varchar这一类在定义长度时,长度声明的是字符长度不是字节长度。
    GBK VARCHAR(30) 保存汉字30个 占用60字节
    UFT8 汉字30 占用90字节
    alter table users change username name varchar(10); 可以修改列名和列定义值。
    alter table users modify name varchar(20); 只能修改列的定义值、
    删除表:drop table users;
    将jason_mc库下的users表移动至jason下保存:
    rename table jason_mc.users to jason.users;
    rename table information_schema.tables to jason_mc.tables;
    ERROR 1044 (42000): Access denied for user 'system'@'localhost' to database 'information_schema' 报没权限,下章引入权限。

  • 相关阅读:
    关于Android线程间通信
    关于代码重构
    Android读书笔记01
    回忆 2012年写的
    我的笑 -- 2007年写的?
    伊人笑 2010年
    血色青春 2012年
    隔夜听雨
    错乱的爱 2010年
    【前端JS、后台C#】编码解码。
  • 原文地址:https://www.cnblogs.com/datalife/p/6700211.html
Copyright © 2011-2022 走看看