mysql 基础(服务搭建,索引,主健,复合主健,外健)

一、搭建mysql数据库服务器 
1装包
1.1 删除系统自带mariadb mysql数据库软件
         rpm   -qa  |  grep   -i  mariadb
         systemctl  stop  mariadb
         rpm   -e  --nodeps   mariadb-server   mariadb
         rm  -rf  /etc/my.cnf
         rm  -rf  /var/lib/mysql

1.2 安装mysql软件
        tar  -xf  mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar
        ls  *.rpm
        rm  -rf   mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm
        yum   -y   install    perl-JSON   
        rpm  -Uvh    mysql-community-*.rpm
        rpm  -qa   | grep  -i   mysql

1.3启动服务
        systemctl   start  mysqld  systemctl   enable  mysqld
1.4查看服务进程和端口号
        [root@mysql51 mysql]#  ps   -C   mysqld
               PID TTY          TIME CMD
               3252 ?        00:00:00 mysqld

        [root@mysql51 mysql]# netstat  -utnlp  | grep  mysqld
              tcp6       0      0 :::3306                 :::*                    LISTEN      3252/mysqld  
      
#########################################################################################
二、数据库服务的基本使用
2.1 使用初始密码在本机连接数据库服务
       grep password /var/log/mysqld.log
       mysql   -hlocalhost   -uroot   -p'hqToPwaqf5,g!><'
2.2 重置本机连接密码
       mysql>set global validate_password_policy=0;  只检查密码的长度
       mysql>set global validate_password_length=6; 密码长度不能小于6个字符
       mysql>alter  user   root@"localhost"  identified by "123456";
       mysql>quit
       mysql>ssh  -hlocalhost   -uroot   -p123456
       mysql>show   databases;
2.3让密码策略永久生效
      vim  /etc/my.cnf
           [mysqld]
             validate_password_policy=0
             validate_password_length=6
             :wq

     systemctl   restart  mysqld

##########################################################################################二:mysql键值:普通索引    唯一索引   全文索引   主键   外 键

索引介绍: 树状目录结构  类似与书的“目录”
优点:      加快查询表记录的速度
缺点 :       会减慢编辑表记录的速度,且占用磁盘的物理存储空间
(delete  insert   update)

 1:普通索引的使用(index)

 查看:desc  表名;     show   index  from   表名;

                                      Table: t2
                                      Key_name: aaa
                                      Column_name: age
                                      Index_type: BTREE  (二叉树)
     在已有表创建:create   index   索引名  on   表名(字段名);
     建表是时创建:
                      create  table  表名(
                      字段列表,
                     
index(字段名),
                      index(字段名)

                     );

     删除:drop   index   索引名  on   表名;

######################################################################################

2.主键(primary   key (普通主键    复合主键    主键+auto_increment)

     查看:   desc   表;   key ----> PRI
     在已有表创建:  alter  table   表   add   primary  key(字段名);
     建表时创建
两种方法 ):
                         
create  table  表名(

                         字段列表1  primary  key,

                         字段列表2                    

                         );

                         create  table  表名(

                         字段列表1,

                         字段列表2,

                         primary  key(字段名1)

                         );


创建复合主键的使用: 多个字段一起做主键,插入记录时,只要做主键字段的 值不同时重复,就可以插入记录。
                                 create  table  表名(

                                       字段列表1,

                                        字段列表2,

                                         primary  key(字段名1,字段名2)

                                         );

删除主键   mysql>  alter  table   表   drop    primary  key;

主键primary  key  通常和auto_increment连用,让字段的值自动增长  i++

##########################################################################################

3:创建自增(auto_increment)(前提:1主健,2数值类型) 

表中插入记录时不给自动增长的字段赋值,字段的值是如何获得的呢,用当前字段最大的值+1后把结果做当前新记录字段的值。

             create table  t1(
                     id  int(2)   primary key auto_increment,
                     name char(15)  not null,
                     age tinyint(2) unsigned  default 19,
                     pay  float(7.2)  default 26800

                      );

      查看自增:desc t1;

4:添加外键(foreign key

create  table  gztab(
    gz_id int(2),
    name  float(7,2),
      foreign key(gz_id) references yginfo(yg_id)
     on  delete cascade  on  update cascade
  (与被参考字段增删该查同步)
    ) engine=innodb ;
删除外键 
    格式: alter  table  表名  drop  foreign key  外键名;
              例如:alter  table  bjb  drop  foreign key  bjb_ibfk_1;
###################################################################################

查看导入导出数据库的默认文件路径:mysql> show variables like "secure_file_priv"

导入导出数据库的默认文件路径:/var/lib/mysql-files

可修改配置文件来指定文件路径:
mkdir /mydata      &&        vim  /etc/my.cnf  --->secure_file_priv="/mydata"
##################################################################################
导入数据的命令: mysql> load data infile "/mydata/passwd"  into table db3.user

                                      fields  terminated by":" lines terminated by "\n";
导出数据的命令:
语法:mysql>sql查询命令 into outfile "目录名/文件名"  
                     fields terminated by "自定义"  lines terminated by "自定义";
         例1:select *  from t1  into outfile "/mydata/t1.txt";
         例2(指定行分隔符##):
                                       select *  from t1  into outfile "/mydata/t1.txt  
                                       fields terminated by "##";
         例3(指定行分隔符####,列分隔符!!!):
                                       select *  from t1  into outfile "/mydata/t1.txt
                                       fields terminated by"####" lines terminated by "!!!";
################################################################################
查询(select):
      完整语法格式:select 字段名列表 from 表 where 条件;
更新记录字段的值(update):
     update 表 set 字段名=值,字段名=值,.... where 条件;
删除记录(delete,删除表里的行):
     delete from 表 where 条件;
增添记录(insert 增加表里的行或者多行):
     insert into 表(字段1,字段2...)  values(值1,值2,值3....);
################################################################################
1.数值比较符号: >    >=   <   <=    =    !=
     格式:where  数据型的字段名  符号  值
2.字符比较:=   !=
    格式:where 字段名 符号 "值"
    例如:select name,shell from user where !=/bin/bash;
3.匹配空:  is null     匹配非空:is  not  null
4.逻辑比较: and(与) or(或)  ! not(非)   优先级:() >  and  >  or
5.范围内匹配:
in:
     例如:select  name,shell  from user where  shell   in ("/sbin/nologin","/bin/bash");
not in:
     例如:select  name,shell  from user where  shell  not  in ("/sbin/nologin","/bin/bash");
between  and :
    例如:mysql> select *  from user where uid between 10 and 20;
    效果等同:select *  from user where uid>=10 and uid<=20;

6.去掉字段的重复值并显示 :

distinct(只适合查询):   select distinct shell from user where uid<=500;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值