MySQL数据库的部分笔记

让PHP和数据库相结合,掌握原理
mysql数据库:
1.连接mysql数据库:
在MySQL数据库的安装位置-->bin文件夹下复制路径-->在我的电脑-->右击-->属性-->高级系统设置-->环境变量(path)-->编辑-->新建-->CTRL+v粘贴-->确定
进入cmd命令行-->输入mysql -u root -p--> 输入密码 默认密码root
2.关于MySQL数据库:
    1.库和表单:表单是存放数据的,库是存放表单的
    2.显示数据库:
    显示全部数据库:show databases;   末尾加;不加分号会报错
    显示部分数据库:show databases like “对应的匹配模式”;
        如果忘记数据库名字可以用_下划线表示,表示当前位置的单个字符,或则加%:表示指示位置的多个字符
    3.创建数据库:create database class11; 创建数据库class11  注意:这里的database最后没有s
    创建下的数据库在安装路径下的data文件夹下,每创建一个数据库在data文件夹下就会创建一个对应的文件夹用来存储数据
    4.删除数据库:drop database class11;  注意:不可以删除MySQL数据库自带的数据库文件
    数据库可以删但是不能改名
关于表单:
    1.选择/使用数据库:use class11;
    2.查看库里的表单:show tables;
    3.创建表单:1.create table 表名(字段名 字段属性,字段名 字段属性);
        例如:create table student (id int(8),name char(16),sex char(4),addr char(32),tel int (16));  
            创建一个表单   内容有id
      注意:字段属性有int(8)   整数 ,括号里表示显示几位数    (一般为2的n次幂)
               char(16)字符串,括号里表示显示几个字符串,字母占一个位置,汉字占两个
             2.create table 表名 like 表名; 复制一个表,复制结构,不复制数据
     4.查看表单:
    查看全部表单:select * form 表单名;
    查看部分表单:select 字段名 form 表单名;如 select id,name from 表单名;
     查看详细表单:select * form 表单名 where 限制条件(如id='1' and/or name="zhang");
     5.向表单中添加数据:
    insert into 表单名 [(字段名,字段名)] values (内容,内容);
        []字段可以不写,不写values值就必须和表的字段一一对应
        如果写了,可以和表中字段不一一对应,但是values值要和字段名一一对应
修改表单内容:
     1.添加字段:alter table 表单名 add 字段名 字段属性 after tel;
    默认在最后添加     after  在tel之后     first 在表单第一个
     2.删除字段:alter table 表单名 drop 字段名;
     3.修改字段:alter table 表单名 旧字段名 新字段名 字段属性;
     4.修改字段属性:alter table 表单名 字段名 新属性;
     5.查看表结构:desc 表名;         describe 表名;    show columns form 表名;
     6.修改表名:rename table 旧表名 to 新表名;
     7.删除表:drop table 表名;
     8.修改表数据:update 表名 set 字段名=值 where 条件;
     9.删除数据:delete from 表名 where 条件;
中文模式:
在MySQL文件夹下找到my.ini配置文件,修改default-character-set=gbk   character-set-server=gbk
图像化界面: localhost/phpmyadmin   -->  账号密码都是root   
=====================================20200303=====================
MySQL高级操作:
添加多个:  insert into 表名 (字段名,字段名) values (内容,内容),(内容,内容);
去重:distinct     举例:select distinct 字段名 from 表名;
排序:order by   举例:select * from 表名 order by 列/列名;
          解释:by后面可以放字段名  也可以放第几列(如第11列:by 11)
数学统计:select max(字段名) from 表名;
    avg()平均值    sum()求和        max()最大值    min()最小值
拼接:concat()将括号内的数据合并,由多行变成一行显示
        select [group_]concat(name,"-",math) from stu;        前端查出的数据只在一行显示
        结果:
    +-------------------------------------+
    | group_concat(name,"-",math)         |
    +-------------------------------------+
    | 张三-100,李四-119,王五-95,赵六-99 |
    +-------------------------------------+
动态查询:两个表  user 和 weapon_name         先查看id括号里的再查看外面的
select w_name form weapon_name where id=(select weapon from user where uname="后裔");
    user;                weapon_name;
    +------+-------+-------+        +------+--------+
    | id   | uname | weapon    |        | id   | w_name    |
    +------+-------+--------+        +------+--------+
    |    1 | 李白     | 1               |        |    1 | 宝剑           |
    |    2 | 后裔     | 2               |        |    2 | 弓箭           |
    |    3 | 小乔     | 3               |        |    3 | 扇子           |
    +------+-------+--------+        +------+--------+
限制查询结果:select * from user limit 2;     只显示上边两行
            select * from user limit 3,2; 只显示从第3行往后2行的内容
比较运算符/逻辑运算符:>,>=,<,<=,and,or
    select * from stu where math>=50 and math<=60;显示数学50-60之间的内容
    select math from stu where name is ("张三","李四");显示张三和李四的数学成绩
数据的模糊查询:select math from stu where name like "%san";      %代表多个字符
               select math from stu where name like "_hansan";   _代表单个字符
数据库数据类型:
   一、整数类型:
      1、tinyint:迷你整形,系统采用1个字节保存数据。1个字节=8位,代表的数值是0-255(-128-127) 真正存放数据是(-128-127)之间,超出127按127处理
      2、int:整形
      3、smallint:小整形,用2个字符保存数据,代表的数值范围(0-65535)真正存贮数据范围(-32768-32767)超出按32767处理
      4、bigint:大整形,
   二、小数类型:
      1、浮点型:
       (1.)float:单精度 小数点后7位   
    例如:float(M,N)   M>N   M是有效位,N是小数位   M如果是5,是指有效位小数点前后一共5位;N如果是2,是指小数位,表示保存小数点后2位
         (2.)double:双精度 更准确 小数点后15位
       2、定点型:
           decimal:小数点后30位,与float用法相同  一般用在银行系统
   三、枚举类型:
        1、enum  在创建表单时使用
             应用范围:对于保存的数据,有限定的个数,并且是确定的,为了方便使用,给予有限的结果进行标号,以不同的标号得出不同的结果
             语法:enum(“男”,“女”,“保密”)当输入1-->男,2-->女,3-->保密
   四、字符串类型:
          char:定长字符   char(L)L代表字符数,长度为0-255,实际有效长度-128-127之间
          varchar:边长字符  节约空间   用法:varchar(L) L代表字符数,长度0-65535,实际长度-32768-32767之间
          test:文本类型
    tinytext:存放数据2的8次+1数据   text:存放2的16次+1数据    mediumtest:存放2的24次+1数据    longtext:存放2的32次+1数据
==================================20200304================================
列属性:查看列属性:desc 表名;
   null:是否允许为空   yes  允许   not  不允许
            在定义列属性时,在属性后+not null   例:id int not null;
   key:主键   在一个表格中具有唯一性   只能设置一个主键
            主键的作用:设置为主键的字段,字段的值是不允许重复的,一般情况下会将id设为主键
            添加主键的方式:
    1、创建表时,在要添加主键的字段后加primary key;
    2、修改列属性:alter table 表名 add primary key(字段);
            添加主键失败原因:1、要设置的主键字段出现重复值
                  2、表格中已经存在主键
            删除主键:alter table 表名 drop primary key;
            主键自增长:只能在创建表时添加,在primary key后面加上属性:auto_inorement
   default:默认值
            在没有给字段添加数据时,该字段使用给定的默认值,如果用户添加了数据,则使用用户添加的数据
            定义:在定义字段属性时,在属性后添加default“男”
            举例:sex char(4)default“男”;
    unique key:唯一键       
            作用:用来设置字段的值不允许重复,在一个表格中可以有多个。
            使用:1.可以创建表单时,在对应的字段属性后面加unique key;
          2.修改表单属性:alter table 表名 modify 字段名 字段属性(值)unique key;
            删除:alter table 表名 drop index 唯一键字段名字;
    主键和唯一键区别:
    1.主键在一个表格中只能设置一个,唯一键可以设置多个
    2.设置主键的字段不允许为空,默认值为0,唯一键不会影响null和default
MySQL数据库管理
     一、数据备份
           1.数据库备份形式:
    (1.)整库备份
           语法:mysqldump.exe -h主机号 -p端口号 -u用户名 -p密码 数据库名 > 备份位置
           例如:mysqldump.exe -hlocalhost -p3306 -uroot -proot class11 > d:/bak.sql
           还原:
        语法:mysql -u用户名 -p密码 要还原库名 < 备份的位置
        例如:mysql -uroot -proot class11 < d:/bak.sql
            注意:1.空格问题,主机名、端口号、用户名、密码之间没有空格
         2.文件后缀必须是.sql
    (2.)单表备份
                        语法:mysqldump.exe -h主机号 -p端口号 -u用户名 -p密码 数据库名 表名 > 备份位置
            举例:mysqldump.exe -hlocalhost -p3306 -uroot -proot class11 usr > d:/bak.sql
            还原:
        方法一:语法:mysql -u用户名 -p密码 要还原库名 < 备份的位置
                     例如:mysql -uroot -proot class11 < d:/bak.sql
        方法二:语法:mysql > source 备份位置;
                      例如:source d:/bak.sql;
      (3.)多表备份   与单表备份相同
                       语法:mysqldump.exe -h主机号 -p端口号 -u用户名 -p密码 数据库名 表名 表名 表名 > 备份位置
           举例:mysqldump.exe -hlocalhost -p3306 -uroot -proot class11 usr user users > d:/bak.sql
           还原:与单表备份还原一样
        方法一:语法:mysql -u用户名 -p密码 要还原库名 < 备份的位置
                     例如:mysql -uroot -proot class11 < d:/bak.sql
        方法二:语法:mysql > source 备份位置;
                      例如:source d:/bak.sql;
    2、其他:information_schema    存放整个MySQL数据库的表结构
         performance_schema  存放整个MySQL数据库的所有数据
         MySQL             存放整个MySQL数据库的用户信息
         test             MySQL数据库测试库,没有太大的作用
     二、用户管理   在MySQL数据库中有user表   里面存放MySQL的用户信息  select Host,User,Password from user;
            创建用户:方法一:直接在user表中插入数据(不建议)
                 方法二:create user 用户名 indetified by "密码"
                  例如:create user 'user1'@'localhost/12.0.0.1' identifed by '123456'  指定IP和密码
               create user 'user1'@'%' identifed by '123456'   指定密码,不指定IP 任何IP都能连            
                           create user user1  不指定IP和密码
        注意:用户名要写成用户名@主机名(localhost/127.0.0.1)   
                                数据库文件支持远程登陆,远程登陆时需要验证账号和密码,还要验证对方的IP
             删除用户:方法一:drop user 'user1'@'192.168.%.%';
                 方法二:直接在user表中删除(不推荐)
             修改用户:
    修改密码:set password for 用户名=password('新密码');
     三、权限管理
            1.数据权限分裂     三类权限
    1.数据权限:增 insert     删  delete   改  update   查  select
    2.结构权限:create  drop
    3.管理权限:create user       grant赋权    revoke 撤权
            2.权限管理   针对用户的  针对某个库  针对某个表单
    1.授权管理:
           基本语法:grant 权限列表 on 数据库.表名 to 用户名;
                  解释:权限列表   多个权限之间用   ,   隔开;all    privileges全部权限
           数据库名:库名.*                某个库下的所有表单
                库名.表名           某个库下的某个表
                *.*                     所有库下所有表
           例如:grant select,update on class11.user to 'user3'@'%';
    2.撤权
             基本语法:revoke  权限列表 on 数据库.表名 from 用户名;
             例如:revoke update on class11.user from user3;
             提示:在不同的机器上  给用户赋权或撤权 不用重新登陆 立即生效 刷新一下,命令:flush privileges
             3.破解root用户密码:不使用密码通过root用户进入MySQL数据库
           mysqld.exe --skip-grant-tables 再打开一个cmd终端输入mysql就可以直接登陆root用户    mysqld.exe是MySQL数据库的救援模式
远程登陆:tomcat软件    root用户不能直接登陆
==========================================2020305===================================
数据库与PHP结合    在MySQL数据库中创建一个库class11
       登陆:
          在PHP创建一个HTML文件,输入
     <form action="./che.php" method="post" enctype="application/x-www-form-urlencoded">    连接.PHP
        <input type="text" name="uname" placeholder="请输入用户名" value=""><br>                       输入框
        <input type="password" name="upassword" placeholder="请输入密码" value=""><br>    输入框
        <input type="submit" value="登陆"><input type="submit" value="注册">            按钮
    </form>
        在PHP先和数据库建立联系
      $name=$_POST["uname"];
      $password=$_POST["upassword"];
       1. 连接数据库
      $link=mysqli_connect("localhost","root","root","class11");
        2.判断是否连接成功
      var_dump((bool)$link);
      if (!$link){
    echo "数据库连接失败";
           }
       3. 准备数据库命令
      $sql="select * from user where uname='$name' and upassword='$password'";
       4. 发送数据库命令
      $res=mysqli_query($link,$sql);
       5. 获取数据库返回结果并做处理
      $row=mysqli_fetch_array($res);//这个是将数据库返回结果转换成关联数组
      if ($row!=null){
          echo "登陆成功";
      }else{
          echo "登陆失败";
      }
        6.关闭数据库
      mysqli_close($link);
   注册:
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值