• mysql 学习笔记


    Mysql 学习笔记
    1、安装 环境:
         Windows 7
         Mysql 5.5 从 http://www.mysql.com下载
         EMS Mysql Query 1.6.0.1
         本机IP:172.5.1.183
    2、安装Mysql。採用默认安装就可以
       文件夹选择在c:mysql,不要改动默认文件夹
    3、启动Mysql
       安装为服务:c:mysqlinmysqld --install
       启动Mysql: net start mysql
       停止Mysql: net stop mysql
    4、 系统创建的数据库有mysql,test
       mysql保存系统数据
       test数据库用来測试
    5、默认登陆方式
       在本机
         c:mysqlinmysql -uroot
         c:mysqlinmysql
       远程
         mysql -h 172.5.1.183 -uroot
      
       这些是在mysql.user表中,系统默认存在4条数据
            use mysql
            select host,user,password from user;
            +-----------+------+----------+
     | host      | user | password |
     +-----------+------+----------+
     | localhost | root |          |
     | %         | root |          |
     | localhost |      |          |
     | %         |      |          |
     +-----------+------+----------+
      
       这些数据代表的意义:
         username为root。password为空的用户能够从本机和不论什么远程主机登陆
         不论什么username。password为空的用户能够从本机登陆
         username为空,password为空的用户不能够从远程登陆 (user中后面的字段为N。所以无法登陆)
       改动rootpassword
         mysql -uroot
         use mysql
         update user set password=PASSWORD("root") where user='root' and host='localhost'
       下次就须要用mysql -uroot -proot才干够登陆
       在远程或本机能够使用 mysql -h 172.5.1.183 -uroot 登陆。这个依据第二行的策略确定
       权限改动生效:
      1)net stop mysql
        net start mysql
      2)c:mysqlinmysqladmin flush-privileges
          3)登陆mysql后,用flush privileges语句
    6、创建数据库staffer
       create database staffer;
    7、以下的语句在mysql环境在运行
       显示用户拥有权限的数据库       show databases;
       切换到staffer数据库       use staffer;
       显示当前数据库中有权限的表 show tables;
       显示表staffer的结构   desc staffer;
    8、创建測试环境
       1)创建数据库staffer
         mysql> create database staffer
       2)创建表staffer,department,position,depart_pos
       
     create table s_position
         (
             id int not null auto_increment,
             name varchar(20) not null default '经理', #设定默认值
             description varchar(100),
             primary key PK_positon (id)  #设定主键
         );    
         create table department
         (
             id int not null auto_increment,
             name varchar(20) not null default '系统部', #设定默认值
             description varchar(100),
             primary key PK_department (id)  #设定主键
         );
         create table depart_pos
         (
             department_id int not null,
             position_id int not null,
             primary key PK_depart_pos (department_id,position_id)  #设定复和主键
         );
         create table staffer
         (
             id int not null auto_increment primary key,  #设定主键
             name varchar(20) not null default '无名氏',  #设定默认值
             department_id int not null,
             position_id int not null,
             unique (department_id,position_id)  #设定唯一值
         );

       3)删除
         mysql>
            drop table depart_pos;
            drop table department;
            drop table s_position;
            drop table staffer;
            drop database staffer;
    9、改动结构
       mysql>
       #表position添加列test
       alter table position add(test char(10));
       #表position改动列test
       alter table position modify test char(20) not null;
       #表position改动列test默认值
       alter table position alter test set default 'system';
       #表position去掉test默认值
       alter table position alter test drop default;
       #表position去掉列test
       alter table position drop column test;
       #表depart_pos删除主键
       alter table depart_pos drop primary key;
       #表depart_pos添加主键
       alter table depart_pos add primary key PK_depart_pos (department_id,position_id);
    10、操作数据
       #插入表department
       insert into department(name,description) values('系统部','系统部');
       insert into department(name,description) values('公关部','公关部');
       insert into department(name,description) values('客服部','客服部');
       insert into department(name,description) values('財务部','財务部');
       insert into department(name,description) values('測试部','測试部');
       #插入表s_position
       insert into s_position(name,description) values('总监','总监');
       insert into s_position(name,description) values('经理','经理');
       insert into s_position(name,description) values('普通员工','普通员工');
       #插入表depart_pos
       insert into depart_pos(department_id,position_id)
       select a.id department_id,b.id postion_id
       from department a,s_position b;
       #插入表staffer
       insert into staffer(name,department_id,position_id) values('陈达治',1,1);
       insert into staffer(name,department_id,position_id) values('李文宾',1,2);
       insert into staffer(name,department_id,position_id) values('马佳',1,3);
       insert into staffer(name,department_id,position_id) values('亢志强',5,1);
       insert into staffer(name,department_id,position_id) values('杨玉茹',4,1);
    11、 查询及删除操作
       #显示系统部的人员和职位
       select a.name,b.name department_name,c.name position_name
       from staffer a,department b,s_position c
       where a.department_id=b.id and a.position_id=c.id and b.name='系统部';
       #显示系统部的人数
       select count(*) from staffer a,department b
       where a.department_id=b.id and b.name='系统部'
       #显示各部门的人数
       select count(*) cou,b.name
       from staffer a,department b
       where a.department_id=b.id
       group by b.name;
       #删除客服部
       delete from department where name='客服部';
       #将財务部改动为財务一部
       update department set name='財务一部' where name='財务部';
    12、 备份和恢复
        备份数据库staffer
         c:mysqlinmysqldump -uroot -proot staffer>e:staffer.sql
         得到的staffer.sql是一个sql脚本。不包含建库的语句,所以你须要手工
         创建数据库才干够导入
        恢复数据库staffer,须要创建一个空库staffer
         c:mysqlinmysql -uroot -proot staffer<staffer.sql
         假设不希望后来手工创建staffer,能够
         c:mysqlinmysqldump -uroot -proot --databases staffer>e:staffer.sql
         mysql -uroot -proot >e:staffer.sql
         但这种话系统种就不能存在staffer库。且无法导入其它名字的数据库,
         当然你能够手工改动staffer.sql文件
    13、 从文本向数据库导入数据
        1)使用工具c:mysqlinmysqlimport
        这个工具的作用是将文件导入到和去掉文件扩展名名字同样的表里。如
        staffer.txt,staffer都是导入到staffer表中
        经常使用选项及功能例如以下
     -d or --delete 新数据导入数据表中之前删除数据数据表中的全部信息
     -f or --force 无论是否遇到错误。mysqlimport将强制继续插入数据
     -i or --ignore mysqlimport跳过或者忽略那些有同样唯一
     keyword的行, 导入文件里的数据将被忽略。
     -l or -lock-tables 数据被插入之前锁住表。这样就防止了,
     你在更新数据库时,用户的查询和更新受到影响。
     -r or -replace 这个选项与-i选项的作用相反;此选项将替代
     表中有同样唯一keyword的记录。
     --fields-enclosed- by= char
     指定文本文件里数据的记录时以什么括起的, 非常多情况下
     数据以双引號括起。 默认的情况下数据是没有被字符括起的。
     --fields-terminated- by=char
     指定各个数据的值之间的分隔 符。在句号分隔的文件里,
     分隔符是句号。您能够用此选项指定数据之间的分隔符。
     默认的分隔符是跳格符(Tab)
     --lines-terminated- by=str
     此选项指定文本文件里行与行之间数据的分隔字符串
     或者字符。 默认的情况下mysqlimport以newline为行分隔符。
     您能够选择用一个字符串来替代一个单个的字符:
     一个新行或者一 个回车。
     mysqlimport命令经常使用的选项还有-v 显示版本号(version),
                -p 提示输入密码(password)等。
       这个工具有个问题。无法忽略某些列,这样对我们的数据导入有非常大的麻烦。尽管
       能够手工设置这个字段。但会出现莫名其妙的结果。我们做一个简单的演示样例
       我们定义例如以下的depart_no.txt,保存在e盘,间隔为制表符
     10 10
     11 11
     12 24 
     执 行例如以下命令
        c:mysqlinmysqlimport -uroot -proot staffer e:depart_pos.txt
        在这里没有使用列的包围符号。切割採用默认的 ,由于採用别的符号会有问题,
        不知道是不是windows的原因
        2)Load Data INFILE file_name into table_name(column1_name,column2_name)
          这个命令在mysql>提示符下使用。长处是能够指定列导入。示比例如以下
          c:mysqlinmysql -uroot -proot staffer
          mysql>load data infile "e:/depart_no.txt" into depart_no(department_id,position_id);
       
        这两个工具在Windows下使用都有问题,不知道是Windows的原因还是中文的问题,
        并且不指定的列它产生了空值,这显然不是我们想要的,所以慎重使用这些工具
  • 相关阅读:
    BEM(Block–Element-Modifier)
    http://element.eleme.io/#/zh-CN/component/quickstart
    Commit message 的写法规范。本文介绍Angular 规范(
    好的commit应该长啥样 https://github.com/torvalds/linux/pull/17#issuecomment-5654674
    代码管理
    if you have content fetched asynchronously on pages where SEO is important, SSR might be necessary
    Martin Fowler’s Active Record design pattern.
    The Zen of Python
    Introspection in Python How to spy on your Python objects Guide to Python introspection
    Object-Oriented Metrics: LCOM 内聚性的度量
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6817138.html
Copyright © 2020-2023  润新知