Mysql数据库入门基础上

2019-01-15 17:58:10   DB

  php  

Mysql入门基础

在DOS系统Mysql的配置和基本操作

环境变量

我的电脑 -> 右击属性 -> 高级系统设置 -> 环境变量 -> 新建
                                                                      |
变量值:MySQL下的bin目录路径 <-变量名:PATH   
        DOS系统下清屏的命令:cls
        mysql -h localhost -u root -p -b

        mysql 数据库
        -h  服务器(本地、指定服务器IP的)[本地localhost可以省略]
        -u  用户名(我们用的是root用户:超级管理员)
        -p  用户密码(不需要再它后面写密码,密码是回车之后写的)
        -b  蜂鸣器(当命令敲错了,报错时提示的声音)

    7.进入MySQL数据库以后的命令

        注意:
            1> 每一行命令结束了以后,请使用 ; 或 \g 来结束,否则命令可以一直写下去
            2> 在MySQL的命令中,如果一行命令没有敲完,就回车了,它会继续执行下去,前提是必须是一条完整的命令
            3> 退出敲错的命令、或不想继续执行下去的命令时,用\c
            4> 我们要想让数据竖起来显示,在命令后用\G,有时候一行盛不下了会乱,
               \G可以解决这个问题
            5> \s 可以显示当前服务器的配置
            6> help 查看所有可以使用的快捷命令
            7> 如果在命令行中遇到了单引号,则MySQL认为你要输入一段字符串,所以,它是
               必须使用结束的单引号,可以跳出字符串输入状态;

    8. 退出数据库服务器
        \q
        exit
        quit

基础命令

create database 数据库名;//创建数据库

注意:
1.如果数据库已存在,不能创建同名的数据库
2.创建命令和数据库名都不区分大小写
if not exists 如果数据库已存在,加上前面的关键字可以避免报错

drop database 数据库名;//删除数据库

show databases;//查看已创建的数据库

use 数据库名;//使用一个数据库

select database();//查看当前我们所使用的数据库

show create database 数据库名;//查看建库语句

注意:通过该命令,我们可以看到所建数据库的建库语句、编码类型;
            1.MySQL数据库中命令不区分大小写。
            2.数据库的名字也是不区分大小写的。
            2.每创建一个数据库,就会在data目录下创建一个以此数据库名称命名的文件夹。
            3.在Windows下,数据库名称也是不区分大小写的,但在Linux下,数据库名称严格区分大小写。
        tee命令:可以将MySQL中的练习语句导出到外部的一个文件当中
        使用方法:tee E:\wamp\www\lamp171\lesson23_MySQL01\test.txt

        创建数据表
        create table 表名(
                        字段名1 字段类型,
                        字段名2 字段类型,
                        字段名3 字段类型
        );
            注意:
                1.创建一个数据表时,它的每个字段之间用逗号","隔开;
                2.最后一个字段不用逗号",";
                3.创建完表以后,最后的括号后面使用分号结束
                4.建表时,表名后面的括号中写表的字段名(字段类型)
                5.
desc 表名;//查看表结构

show create table 表名;//查看建表语句

show tables;// 查看当前数据库存在的数据表

drop table 表名//删除数据表

添加数据
① insert into 表名 (字段1,字段2……) values (值1,值2……);
② insert into 表名 values (值1,值2……),(值1,值2……);
③ insert into 表名 (字段1,字段2……) values (值1,值2……),(值1,值2……);
④ insert into 表名 values (值1,值2...);
⑤ insert into 表名 set 字段1=值1,字段2=值2...;
注意:
1.值和字段名要一一对应,否则会报错
2.你写入的值一定要和数据类型相匹配

删除数据
delete from 表名 where 条件;
注意:删除数据的时候,也一定要加上where条件,否则会删除所有的数据

修改数据
update 表名 set 要修改的字段=修改后的值,要修改的字段=修改后的值 where 条件
注意:修改数据的时候,一定要加上where条件,否则会修改所有的数据

查找数据
select *(所有字段) from 表;
select 字段1,字段2.. from 表;

数据库文件的导出

    1.在DOS命令行下导出数据库(带数据)
        mysqldump -u root -p 数据库名 > E:\wamp\www\lamp175\lamp175.sql

    2.在DOS命令行下导出数据表(带数据)
        mysqldump -u root -p 数据库名 数据表名 > E:\wamp\www\lamp175\lamp175_stu.sql

    3.在DOS命令行下导出数据库(不带数据)
        mysqldump -u root -p -d 数据库名 > E:\wamp\www\lamp175\lamp175.sql

    4.在DOS命令行下导出数据表(不带数据)
        mysqldump -u root -p -d 数据库名 数据表名 > E:\wamp\www\lamp175\lamp175_stu.sql

数据库文件的导入

1.在DOS命令行下导入数据库文件
mysql -u root -p 数据库名 < E:\wamp\www\lamp175\lamp175.sql

2.在MySQL命令行下导入数据库文件(必须在指定的库当中)
source E:\wamp\www\lamp175\lesson24_MySQL02\lamp175.sql

数据库密码的添加:

1.在DOS命令行下
mysqladmin -u root -p password 新密码
注意:新密码处不要加双引号、分号,否则可能出现问题

2.在MySQL命令行下
set password for 'root'@'localhost' = password('新密码');

密码改错的找回方法:

1.先关闭数据库服务(任务栏右击,打开任务管理器,找到mysqld.exe)

2.打开一个DOS命令框,将路径跳转到 E:\wamp\bin\mysql\mysql5.7.9\bin 目录下

3.输入命令 mysqld --skip-grant-tables ,光标会一直在下方闪烁

4.再打开一个DOS命令框,输入 mysql 直接以root权限进入数据库服务系统

5.进入mysql库,查看user表,再修改root用户的 authentication_string 的值

6.update user set authentication_string=password('123456') where User='root';

7.flush privileges; 修改完成之后,使用该命令刷新几次

8.重启mysql服务,进入DOS命令框,登陆修改之后的密码即可

建表(MySQL当中的数据类型):

当我们存储不同的数据时,需要配合不同的类型来进行存储

1.php当中的数据类型:
布尔型、整型、浮点型、字符串型、数组型、对象型、资源型、空型

2.MySQL当中的数据类型:
整型、浮点型、定点型、字符串型、日期时间型、集合型、枚举型   
1> 整型

tinyint:    短整型(常用)
smallint:   小整型
mediumint: 中整型
int:        整型(常用)
bigint: 长整型

这些数据类型,其实都是存储整数的,只是占用长度不同,存储范围不同

注意:
1.在定义整型数据时,不需要指定长度,它会采用默认的长度来存储
2.如果要是定义长度,该长度是为后续的一个约束条件准备的
3.在插入整数类型的值的时候,注意不要越界,否则会报错
4.我们使用整数类型时,选用合适的存储范围即可

2>浮点型:

float(M,D): 单精度
double(M,D):    双精度
decimal(M,D):   定点数

3.14    3.1415926
使用浮点型数据的时候,肯定会指定一下精度和标度

注意:
1.单精度、双精度唯一的区别就是长度和存储范围
2.精度:整数位和小数位的长度和
3.标度:小数位的长度就是标度
4.当我们想要存储一些需要准确精确表达的数据时,不要使用单、双精度
5.我们推荐使用定点数进行存储

3> 字符串型:

char:       定长字符串(常用)
varchar:    变长字符串(常用)
tinytext:   短文本
text:       文本(常用)
mediumtext:中文本
longtext:   长文本

字符串型的最大的区别在于他们的存储范围

注意:
1.char定长字符串,可以不指定长度,默认长度为1;如果指定长度, 则该长度就为固定长度了!
2.varchar变长字符串,必须指定长度,存储到varchar中的数据,会根据数据的长度,自动调整存储范围,但是不能越界!
3.超出长度的,会报错
4.char和varchar除了上述的区别外,就是存储范围的不同了
5.当我们存储内容比较长的长文本时,例如小说、文章等内容,可以使用text长文本格式进行存储!

4> 日期时间型:
这个日期时间型,我们了解一下即可,存储时间我们推荐使用整型,因为时间戳就是一个整型值

5> 枚举型:

多选一
enum("dabolang","xiaobolang","meibolang","lang");

注意:
1.枚举类型的数据,必须使用双引号将每一个值括起来,每个值使用逗号隔开
2.枚举型的值,只能多选1

6> 集合型:
多选多
set("dabolang","xiaobolang","meibolang","lang");
注意:
1.集合型的数据和枚举型的数据定义方式一样
2.区别在于,枚举型只能多选一,集合型可以多选多!

3.字段的约束条件
1.给整型准备的约束条件
1> unsigned :无符号
注意:
1.当我们给整型的字段加上无符号余数条件之后,该字段的存储 范围会发生改变(具体范围参考word文档)
2.unsigned无符号修饰符必须加在我们所定义的字段类型之后

2> zerofill :前导零
注意:
1.整型当中所定义的长度,其实是给前导零准备的
2.当我们给某个整型的字段添加了前导零的约束条件之后,它自动 给我们添加了一个unsigned约束条件,说明,我们如果使用前导零 则不能添加负数值

2.通用的约束条件
1> not null :不能为空
注意:
1.改关键字所修饰的字段不能为空
2.如果你非得让它为空,那么你只能通过给定默认值解决此问题
3.not null的顺序不限,但是不能放到unsigned之前

2> default :默认值
注意:
1.当我们给某个字段添加默认值时,该字段为何类型,则默认值也 是该类型
2.默认值一般放到最后  
3.因为高版本mysql默认开启严格模式,如果不传值并设置为非空的情况下,int类型设置默认值0,字符串类型设置EMPTY  STRING类型

3> auto_increment :自增
注意:
1.自增通常是给表中的ID准备的约束条件
2.每一个表都会有一个id字段
3.如果我们要给id字段添加自增关键字,则必须要给该字段一个索引修饰,该索引修饰可以使 primary key(主键索引)或者是 unique(唯一索引)
4.具有自增条件的字段,每次自增1
5.一个表中只能有一个自增字段