MySQl之基础二

一 安装

a. 版本

社区版
    GPL
企业版
集群版
    集群管理器,自动扩展,跨域复制

 

b.端口

TCP 3306

 

c.主配置文件

/etc/my.cnf

 

d.数据目录

/var/lib/mysql

 
e.登录配置

#yum -y install mysql mysql-server    #mysql:连接和管理数据库的工具; mysql-server:提供服务器端的主程序
#service mysqld start (两个 OK)

1.设置管理员密码
   mysqladmin -uroot password '123'

2.登录选项
  u 用户
  p 密码
  P 端口
  S 套接字
  h  登录地址

3.创建用户
  create user '用户'@'登录地址' identified by ‘123456’;
      登录地址:“IP、localhost、%”   # %任意远端地址,不能本地

4.密码设置
    set password=password(“新密码”) 为登录用户修改密码
    set password for ‘用户’@‘登录地址’=password(“新密码”) 为其他用户修改密码
    

5.管理员密码找回
    service mysqld stop
    
    vim /etc/my.cnf
    skip-grant-tables 
        
    service mysqld start

    mysql 

    update mysql.user set password=password('123') where user='root';

    vim /etc/my.cnf
    删除 skip-grant-tables 
    
    service mysqld restart

6.数据库结构
    DBMS  数据库管理系统
    数据库
    数据表
    数据记录
    段、类型、值、主键……

 

二 SQL语句

A.增删改查


     create database 数据库   创建数据库
     create table 表名 (字段1 类型1,字段2 类型2, ……)    创建数据表
     insert into 表名 (字段1,字段2,……)    values (值1,值2,……) 插入数据


drop database 数据库 删除数据库 delete
from 数据表 where 主键=值 删除数据 between 值1 and 值2 匹配区域数据

update 表名 set 字段
=新值 where 主键=值 修改数据 alter table 数据表 操作类型 操作类型: rename 改表名 modify 改类型 change 修改字段名称 add 添加字段 drop 删除字段 first 添加到第一列 after 添加到某字段后

show databases 查看所有数据库 use 数据库 使用数据库 show tables 查看所有数据表 select 字段
from 数据表 查看指定数据表中的数据记录

 

示例一(数据库):

#-- 1.创建数据库(在磁盘上创建一个对应的文件夹)
    create database [if not exists] db_name [character set xxx] 
    
#-- 2.查看数据库
    show databases;查看所有数据库
    show create database db_name; 查看数据库的创建方式

#-- 3.修改数据库
    alter database db_name [character set xxx] 

#-- 4.删除数据库
    drop database [if exists] db_name;
    
#-- 5.使用数据库
    切换数据库 use db_name; -- 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
    查看当前使用的数据库 select database();

 

示例二(数据表):

#-- 1.创建表(类似于一个excel表)

        create table tab_name(
            field1 type[完整性约束条件],
            field2 type,
            ...
            fieldn type
        )[character set xxx];

         -- 创建一个员工表employee
         create table employee(
            id int primary key auto_increment ,
            name varchar(20),
            gender bit default 1,   -- gender char(1)  default 1   -----    或者 TINYINT(1) 
            birthday date,
            entry_date date,
            job varchar(20),
            salary double(4,2) unsigned,
            resume text    -- 注意,这里作为最后一个字段不加逗号
          );


    /* 约束:
       primary key (非空且唯一)  :能够唯一区分出当前记录的字段称为主键!
       unique
       not null
       auto_increment 主键字段必须是数字类型。
       外键约束 foreign key  */

#-- 2.查看表信息
    desc tab_name 查看表结构
    show columns from tab_name  查看表结构
    show tables 查看当前数据库中的所有的表
    show create table tab_name    查看当前数据库表建表语句 

#-- 3.修改表结构
   -- (1)增加列(字段)
      alter table tab_name add [column] 列名 类型[完整性约束条件][first|after 字段名];
      alter table user add addr varchar(20) not null unique first/after username;
      #添加多个字段
      alter table users2 
            add addr varchar(20),
            add age  int first,
            add birth varchar(20) after name;

   -- (2)修改一列类型
      alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名];
      alter table users2 modify age tinyint default 20;
      alter table users2 modify age int  after id;
   
   -- (3)修改列名
      alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名];
      alter table users2 change age Age int default 28 first;

   -- (4)删除一列
      alter table tab_name drop [column] 列名;
      -- 思考:删除多列呢?删一个填一个呢?
      alter table users2 
            add salary float(6,2) unsigned not null after name,
            drop addr;    

   -- (5)修改表名
      rename table 表名 to 新表名;
   -- (6)修该表所用的字符集    
      alter table student character set utf8;

#-- 4.删除表
    drop table tab_name;

#---5 添加主键,删除主键
    alter table tab_name add primary key(字段名称,...) 
    alter table users drop primary key;

    eg:
    mysql> create table test5(num int auto_increment);
    ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined 
as a key
    create table test(num int primary key auto_increment);
    -- 思考,如何删除主键?
    alter table test modify id int;   -- auto_increment没了,但这样写主键依然存在,所以还要加上下面这句
    alter table test drop primary key;-- 仅仅用这句也无法直接删除主键

#-- 唯一索引
    alter table tab_name add unique [index|key] [索引名称](字段名称,...) 

    alter table users add unique(name)-- 索引值默认为字段名show create table users;
    alter table users add unique key user_name(name);-- 索引值为user_name

    -- 添加联合索引
    alter table users add unique index name_age(name,age);#show create table users;

    -- 删除唯一索引
    alter table tab_name drop {index|key} index_name

 

B.权限修改

MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,可用一个表来说明:

         

 

权限修改 
        grant 权限1,权限2…… on 数据库.数据表 to 用户@‘登录地址’ identified by '密码'

        show grants for '用户'@'登录地址'

        revoke 取消权限1,取消权限2,…… on 数据库.数据表 from '用户'@'登录地址'

 

 示例 :

mysql> grant drop,update on db.* to tom@'localhost' identified by '123456';  #设置drop,update权限

mysql> show grants for 'tom'@'localhost';   #查看
 GRANT UPDATE, DROP ON `db`.* TO 'tom'@'localhost' 
    
mysql> revoke drop on db.* form 'tom'@'localhost';  #删除

 

posted @ 2018-05-11 07:19  shadow3  阅读(168)  评论(0)    收藏  举报