• Mysql学习总结(41)——MySql数据库基本语句再体会


    1、数据定义语言(DDL):定义和管理数据对象,比如建立数据库、数据表

    数据操作语言(DML):用于操作数据库对象中的包含的数据。

    数据查询语言(DQL):用于查询数据库对象中包含的数据,能够对表进行查询。

    数据控制语言(DCL):管理数据库的语言。

    2、进入数据库的方式

    开始-》运行-》cmd-》mysql -u root -p

    Mysql -h 主机地址 -u 用户名 -p

    Mysql -h localhost -u root -p

    3、数据库的操作:

    a.创建数据库 create database 数据库名;

    b.查看所有的数据库 show databases;

    c.选择数据库 use 数据库名;

    d.查看自己选择的数据库 select database();

    e.删除数据库 drop database 数据库名;

    如果不存在则创建:create database if not exists 库名

    如果不存在则创建并设置字符集:

    Create database if not exists 数据库名 default charset utf8

    4、数据表的操作:

    a.查看数据库中的数据表: show tables;

    b.创建数据表::create table 数据表名;

    c.查看数据表的结构: desc 数据表名;

    describe stu 描述表结构

    【DESCRIBE TABLE 用于列出指定表或视图中的所有列

    DESCRIBE INDEXFOR TABLE 用于列出指定表的所有索引。

    所以 DESCRIBE是用来显示数据结构信息的

    而desc是descend ,是用于查询出结果时候对结果进行排序,是降序排序】

    d.查看创建数据表的语句:show create table 数据表名;

    e.删除数据表:drop table 数据表名;

    F.如果存在则删除drop database if exists lamp

    5、数据的操作:

    1)、插入数据:

    方法1:插入指定的字段:

    insert into 数据表名(字段名1,字段名2....) values(值1,值2....);

    方法2:插入所有字段:

    insert into 数据表名 values(值1,值2,值3....)

    方法3:插入多条语句:

    insert into 数据表名 (字段名1,字段名2....) values (值1,值2),(值3,值4),........;

    方法4:插入单条语句:

    insert into 数据表名 set 字段名1 = 值1,字段名2 = 值2....

    方法5:插入某些查询的结果:

    insert into 数据表名(字段名1,字段名2....) select 字段名1, 字段名2.....from 数据表名;

    2)、查看数据:

    方法1:select 字段名1,字段名2,字段名3.... from 数据表名

    方法2:select * from 数据表名

    A. select主句

    查询当前的数据库 select database();

    查询版本 select version();

    select 1 + 2;

    B. from子句--从指定的数据表里面查找数据

    select 字段名1,字段名2,字段名3.... from 数据表名

    select * from 数据表名

    C. where子句--查询数据的条件(可选)

    select语句里面使用where子句指定过滤条件。 where条件中可以用:

    1. 算数运算符(+ - * / %)

    2 比较运算符( < >= > <= != =)

    3. 逻辑运算符(not and or )

    4. in操作符,指定条件范围,范围中的每个条件都可以进行匹配;

    格式:in(值1,值2.....)

    5. between操作符,在指定的两个值之间;

    格式:between 起始值 and 结束值

    6. not,否定后面的操作

    7. like或 not like 两个操作符要使用包含通配符的字符串

    通配符:

    %:表示任意字符出现任意次数,可以放在任意位置

    _:下划线,用户和%一样,但是表示任意字符出现一次

    格式:字段名 like '字符串'

    %值% :包含值 %值:以值结尾的 值%:以值开头的

    D. order by子句----对字段进行排序

    格式1:order by 字段名[asc | desc]

    注意:asc(默认排列顺序)是升序排序,desc降序排序

    格式2:order by 字段名1[asc | desc],字段名2[asc | desc]

    注意:指的是字段名1完全相同的情况下按照字段名2进行排序

    E. limit 子句---限制结果集

    格式1:limit m(返回多少行数据)

    格式2:limit n,m

    注意:1、n表示从多少行开始取值(第一条数据结果是从0开始 的),m表示返回的行数。

    2、如果没有足够的行数,有多少行就显示多少行。

    E. group by 子句--用于分组

    格式1: group by 字段名(按照字段名进行分组)

    格式2:group by 字段名 having 条件(按照分组完成之后的结果 再次进行过滤)

    注意顺序:select=>from=>where=>group by =>having=>order by =>limit

    3)、修改数据:

    update 数据表名 set 字段名1=值1,字段名2=值2.... where 字段名=值;

    所有的班级是null的学员的班级设置为天庭 is null 是null的值会被选中

    mysql> update stu set class = '天庭' where class is null;

    4)、删除数据:

    delete from 数据表名 where 字段名=值

    注意:1、一定要加上条件。2、在做大量的删除之前,一般会将条件先进行测试,使用select先测试出要删除的东西,然后再删除。3、要删除所有数据的时候不要使用delete而是使用 truncate table表名(他比delete要快,将表删除,然后再重新建立)

    6、对字段的操作

    1)、更改字段

    方法1: alter table 数据表名 change 原字段名 新字段名 类型 约束条件

    方法2: alter table 数据表名 modify 字段名 类型 约束条件

    注意:change可以修改字段名,modify不可以修改字段名

    2)、添加字段

    方法1:alter table 数据表名 add 字段名 类型 约束条件

    方法2:alter table 数据表名 add 字段名 类型 约束条件 first 放在最前面

    方法3:alter table 数据表名 add 字段名 类型 约束条件 after 放在哪个字段名后面

    3)、删除字段

    alter table 数据表名 drop 字段名

    4)、修改数据表名

    alter table 数据表名 rename as 新表数据名

    7、索引的分类:

    显示所有的索引

    mysql> show indexes from testG

    1)、常规索引(index),最基本的索引,没有任何限制

    A. 1-创建索引:

    create table 表名(

    字段.....,

    index 索引名 (要索引的字段)

    );

    2--数据表已经创建的情况下:

    create index 索引名 on 数据表名(要加索引的字段);

    B. 删除索引:

    drop index 索引名 on 数据表名

    alter table test(表名) drop index username;(索引名)

    C.删除主键索引时,该字段不能是自增

    mysql> alter table demo drop primary key;

    2)、唯一索引(unique)--索引列里面的值必须是唯一的,允许有空值

    A .1--创建索引:

    create table 表名(

    字段....,

    unique 索引名(要索引的字段)

    );

    2--数据表已经创建的情况下:

    create unique index 索引名 on 数据表名(要索引的字段)

    B. 删除索引:

    drop index 索引名 on 数据表名

    3)、主键索引(primary key) 一个表只能有一个主键

    A. 1--创建索引:

    create table 表名(

    id int unsigned auto_increment primary key,

    name char(32)

    );

    B. 删除索引:

    alter table 表名 drop primary key

    注意:如果主键的字段上面有自增(auto_increment)需要先将auto_increment去掉,再删除。

    alter table 表名 change 自增的列 自增的列 类型

    8、1) 默认情况下,创建表的时候不指定表的存储引擎,将使用默认的存储引擎。

    show variables like 'default_storage_engine';

    2)查看当前数据库支持的存储引擎

    show engines;

    3) 数据表定义存储引擎

    mysql> create table t2(

    -> id int unsigned auto_increment primary key,

    -> name char(32)

    -> )engine=myisam;

    9、数据类型

    整型-- int tinyint 浮点型-- float(M,D) double(M,D) 定点型-- decimal(M,D)

    字符串-- char(M) varchar(M) text blod 日期--时间戳 枚举型--enum 集合类型--set

    10、约束条件(通用)

    1)、null---字段中没有插入值时,默认为null。

    not null--必须在插入值时,在该字段中插入一个值。如果不插入值那么为”空“

    2)、default 值 在不插入该字段时默认插入的值。

    11、 整型的约束条件:

    1)、zerofill表示0填充。一般和整型后面设定的宽度一起使用,如果数值长度小于指定的长度那么将会在前面补充相对应的0进行填充。

    2)、unsigned(无符号)如果要在字段里面保存非负数,或者较大上限的值时可使用该约束条件,将从0开始,需要在字段类型后面紧跟着定义unsigned。

    3)、auto_increment,自增,在产生一个唯一的标识或顺序值的时候,可以利用这个约束条件。这个约束条件只能用于整数类型,值一般从1开始。每行加1,插入一个null到一个auto_increment列时,MySQL将插入一个比出现过的最大值+1的值。一个表中只能有一个auto_increment列,并且必须定义为primary key或unique才能够使用。

    12、统计查询

    1)、count()用来进行计数。

    获取该表中一共有多少条数据

    mysql> select count(*) from test

    count(*)数据行的条数。

    count(字段名) 来进行统计,但是它只会统计全体非null值的个数。

    2)、min()最小值

    3)、max()最大值

    4)、sum()和

    5)、avg()平均数 计算的时候不会将null的列计算在内

    13、完全限定

    select 表名.字段名 from 库名. 表名

    14、起别名

    字段名和表名都可以起别名 as

    select count(*) as 别名 from 表名;

    15、 拼接字段

    concat(字段,字段)

    16、关联查询

    1、找关系

    2、就先写出 select * from 表1,表2

    3、 写where 条件

    4、将*替换成你想要的数据

    17、子查询----在查询里面再包含一个查询

    注意:子查询总是从内向外进行处理.实际上他执行了2个SQL语句

    1)、select name,(select name from level where user.level=level.id) from user;

    2)、后置用法:当作条件来用

    现在我要找出所有翠红楼里面管理层人员。

    mysql> select name from user where level in (select id from level where name in( '翠红楼老鸨','翠红楼龟公','翠红楼老板'));

    18、导出mysql数据库

    1)、导出数据库及里面的结构和数据:C:Documents and Settingsadmin>mysqldump -u root -p lamp > C:xampphtdocs est.sql

    2)、导出指定库里面的表 C:Documents and Settingsadmin>mysqldump -uroot -p lamp test> C:xamppht docs est1.sql

    3)、导出数据库的结构的:mysqldump -u 用户名 -p -d 数据库名 > 导出的文件名

    4)、导出指定库的指定表的结构:mysqldump -u 用户名 -p -d 数据库名 表名 > 导出的文件名

    19、导入数据库

    1)、在退出数据库的情况下 mysql -u 用户名 -p 数据库名 < 数据库文件

    2)、在进入到数据库并且选中的情况下 source 数据库文件

    20、修改密码

    1、C:Documents and Settingsadmin>mysqladmin -u root -p password 要设置的密码

    2、set password for '用户名'@'登录主机'=password('新密码');

    21、mysql忘记密码

    步骤:

    1、关闭正在运行的MySQL

    2、打开dos跳转到mysql的bin目录下

    C:Documents and Settingslgzhyan>cd C:xamppmysqlin

    3、输入C:xamppmysqlin>mysqld --skip-grant-tables

    4、再打开一个窗口进入到mysql的bin目录下

    5、输入mysql回车,这个时候可以使用root的身份强行进去。

    6、进入到mysql这个库 use mysql

    7、update user set password=password('新密码') where user='root'

    8、刷新权限 flush privileges

    22、删掉匿名用户

    drop user ''@'localhost';

    23、退出MySQL 1)、quit 2)、exit 3)、q

    24、常见的一些操作

    g 可以代替分号。

    c 取消未完成的操作。

    -b 关闭蜂鸣器

    -P 端口号

    ’回车

    G 让数据竖起来

    25、进入数据库服务器在不选择数据库的情况下选择lamp库中的goods表中的所有数据

    mysql> select * from lamp.goods;

    26、PHP连接数据库步骤:

    1)、连接数据库

    mysql_connect('主机','账号','密码');

    2)、选择数据库作为默认的数据库

    mysql_select_db('数据库名');

    mysql_error(); //检查上一步执行的MySQL的错误

    3)、 设置字符集

    mysql_set_charset('utf8');

    做项目的时候乱码的解决方法:

    1、页面的存储字符集是否为UTF-8

    2、浏览器是否解析为utf-8字符集 header() <meta />

    3、是否设置了连接数据库的字符集

    4、数据库的存储字符集是否设置了utf8 default charset=utf8

    4)、执行SQL语句

    mysql_query(SQL语句);

    5)、处理结果

    一种是有结果集(select,desc)

    mysql_fetch_row($reuslt);//得到的将是一个索引数组

    mysql_fetch_assoc($result);//得到的将是一个关联数组

    mysql_fetch_array($result);//将得到的是一个关联和索引数组

    注意:结果集里面的数据使用上面的函数一次只能拿出来一条,没有的时候将会返回false。

    一种是没有结果集(insertdeleteupdate)

    mysql_affected_rows();//取得前一次 MySQL 操作所影响的记录行数

    6)、关闭资源

    mysql_close();

    其他的函数:

    mysql_num_rows('结果集的资源'); //返回总共获取到了多少跳数据

    mysql_insert_id();//取得了上次insert操作所产生的自增id

    授权

    mysql> grant all on lamp.* to 'zhangsan@'192.168.141.249' identified by '123456';

    刷新权限

    mysql> flush privileges;

    移除create 权限

    mysql> revoke create on lamp.* from 'haha'@'localhost';

    移除权限 revoke 权限 on 数据库名.数据表名 from '用户名'@'登录主机'

    mysql> revoke select on lamp.* from 'haha'@'localhost';

    删除用户

    删除mysql数据库下的user表中 user='haha'

    mysql> delete from mysql.user where user = 'haha';

    查询当前stu表中所有的索引

    mysql> show indexes from stuG

    数据定义语言(DDL):定义和管理数据对象,比如建立数据库、数据表

    数据操作语言(DML):用于操作数据库对象中的包含的数据。

    数据查询语言(DQL):用于查询数据库对象中包含的数据,能够对表进行查询。

    数据控制语言(DCL):管理数据库的语言。

    2、进入数据库的方式

    开始-》运行-》cmd-》mysql -u root -p

    Mysql -h 主机地址 -u 用户名 -p

    Mysql -h localhost -u root -p

    3、数据库的操作:

    a.创建数据库 create database 数据库名;

    b.查看所有的数据库 show databases;

    c.选择数据库 use 数据库名;

    d.查看自己选择的数据库 select database();

    e.删除数据库 drop database 数据库名;

    如果不存在则创建:create database if not exists 库名

    如果不存在则创建并设置字符集:

    Create database if not exists 数据库名 default charset utf8

    4、数据表的操作:

    a.查看数据库中的数据表: show tables;

    b.创建数据表::create table 数据表名;

    c.查看数据表的结构: desc 数据表名;

    describe stu 描述表结构

    【DESCRIBE TABLE 用于列出指定表或视图中的所有列

    DESCRIBE INDEXFOR TABLE 用于列出指定表的所有索引。

    所以 DESCRIBE是用来显示数据结构信息的

    而desc是descend ,是用于查询出结果时候对结果进行排序,是降序排序】

    d.查看创建数据表的语句:show create table 数据表名;

    e.删除数据表:drop table 数据表名;

    F.如果存在则删除drop database if exists lamp

    5、数据的操作:

    1)、插入数据:

    方法1:插入指定的字段:

    insert into 数据表名(字段名1,字段名2....) values(值1,值2....);

    方法2:插入所有字段:

    insert into 数据表名 values(值1,值2,值3....)

    方法3:插入多条语句:

    insert into 数据表名 (字段名1,字段名2....) values (值1,值2),(值3,值4),........;

    方法4:插入单条语句:

    insert into 数据表名 set 字段名1 = 值1,字段名2 = 值2....

    方法5:插入某些查询的结果:

    insert into 数据表名(字段名1,字段名2....) select 字段名1, 字段名2.....from 数据表名;

    2)、查看数据:

    方法1:select 字段名1,字段名2,字段名3.... from 数据表名

    方法2:select * from 数据表名

    A. select主句

    查询当前的数据库 select database();

    查询版本 select version();

    select 1 + 2;

    B. from子句--从指定的数据表里面查找数据

    select 字段名1,字段名2,字段名3.... from 数据表名

    select * from 数据表名

    C. where子句--查询数据的条件(可选)

    select语句里面使用where子句指定过滤条件。 where条件中可以用:

    1. 算数运算符(+ - * / %)

    2 比较运算符( < >= > <= != =)

    3. 逻辑运算符(not and or )

    4. in操作符,指定条件范围,范围中的每个条件都可以进行匹配;

    格式:in(值1,值2.....)

    5. between操作符,在指定的两个值之间;

    格式:between 起始值 and 结束值

    6. not,否定后面的操作

    7. like或 not like 两个操作符要使用包含通配符的字符串

    通配符:

    %:表示任意字符出现任意次数,可以放在任意位置

    _:下划线,用户和%一样,但是表示任意字符出现一次

    格式:字段名 like '字符串'

    %值% :包含值 %值:以值结尾的 值%:以值开头的

    D. order by子句----对字段进行排序

    格式1:order by 字段名[asc | desc]

    注意:asc(默认排列顺序)是升序排序,desc降序排序

    格式2:order by 字段名1[asc | desc],字段名2[asc | desc]

    注意:指的是字段名1完全相同的情况下按照字段名2进行排序

    E. limit 子句---限制结果集

    格式1:limit m(返回多少行数据)

    格式2:limit n,m

    注意:1、n表示从多少行开始取值(第一条数据结果是从0开始 的),m表示返回的行数。

    2、如果没有足够的行数,有多少行就显示多少行。

    E. group by 子句--用于分组

    格式1: group by 字段名(按照字段名进行分组)

    格式2:group by 字段名 having 条件(按照分组完成之后的结果 再次进行过滤)

    注意顺序:select=>from=>where=>group by =>having=>order by =>limit

    3)、修改数据:

    update 数据表名 set 字段名1=值1,字段名2=值2.... where 字段名=值;

    所有的班级是null的学员的班级设置为天庭 is null 是null的值会被选中

    mysql> update stu set class = '天庭' where class is null;

    4)、删除数据:

    delete from 数据表名 where 字段名=值

    注意:1、一定要加上条件。2、在做大量的删除之前,一般会将条件先进行测试,使用select先测试出要删除的东西,然后再删除。3、要删除所有数据的时候不要使用delete而是使用 truncate table表名(他比delete要快,将表删除,然后再重新建立)

    6、对字段的操作

    1)、更改字段

    方法1: alter table 数据表名 change 原字段名 新字段名 类型 约束条件

    方法2: alter table 数据表名 modify 字段名 类型 约束条件

    注意:change可以修改字段名,modify不可以修改字段名

    2)、添加字段

    方法1:alter table 数据表名 add 字段名 类型 约束条件

    方法2:alter table 数据表名 add 字段名 类型 约束条件 first 放在最前面

    方法3:alter table 数据表名 add 字段名 类型 约束条件 after 放在哪个字段名后面

    3)、删除字段

    alter table 数据表名 drop 字段名

    4)、修改数据表名

    alter table 数据表名 rename as 新表数据名

    7、索引的分类:

    显示所有的索引

    mysql> show indexes from testG

    1)、常规索引(index),最基本的索引,没有任何限制

    A. 1-创建索引:

    create table 表名(

    字段.....,

    index 索引名 (要索引的字段)

    );

    2--数据表已经创建的情况下:

    create index 索引名 on 数据表名(要加索引的字段);

    B. 删除索引:

    drop index 索引名 on 数据表名

    alter table test(表名) drop index username;(索引名)

    C.删除主键索引时,该字段不能是自增

    mysql> alter table demo drop primary key;

    2)、唯一索引(unique)--索引列里面的值必须是唯一的,允许有空值

    A .1--创建索引:

    create table 表名(

    字段....,

    unique 索引名(要索引的字段)

    );

    2--数据表已经创建的情况下:

    create unique index 索引名 on 数据表名(要索引的字段)

    B. 删除索引:

    drop index 索引名 on 数据表名

    3)、主键索引(primary key) 一个表只能有一个主键

    A. 1--创建索引:

    create table 表名(

    id int unsigned auto_increment primary key,

    name char(32)

    );

    B. 删除索引:

    alter table 表名 drop primary key

    注意:如果主键的字段上面有自增(auto_increment)需要先将auto_increment去掉,再删除。

    alter table 表名 change 自增的列 自增的列 类型

    8、1) 默认情况下,创建表的时候不指定表的存储引擎,将使用默认的存储引擎。

    show variables like 'default_storage_engine';

    2)查看当前数据库支持的存储引擎

    show engines;

    3) 数据表定义存储引擎

    mysql> create table t2(

    -> id int unsigned auto_increment primary key,

    -> name char(32)

    -> )engine=myisam;

    9、数据类型

    整型-- int tinyint 浮点型-- float(M,D) double(M,D) 定点型-- decimal(M,D)

    字符串-- char(M) varchar(M) text blod 日期--时间戳 枚举型--enum 集合类型--set

    10、约束条件(通用)

    1)、null---字段中没有插入值时,默认为null。

    not null--必须在插入值时,在该字段中插入一个值。如果不插入值那么为”空“

    2)、default 值 在不插入该字段时默认插入的值。

    11、 整型的约束条件:

    1)、zerofill表示0填充。一般和整型后面设定的宽度一起使用,如果数值长度小于指定的长度那么将会在前面补充相对应的0进行填充。

    2)、unsigned(无符号)如果要在字段里面保存非负数,或者较大上限的值时可使用该约束条件,将从0开始,需要在字段类型后面紧跟着定义unsigned。

    3)、auto_increment,自增,在产生一个唯一的标识或顺序值的时候,可以利用这个约束条件。这个约束条件只能用于整数类型,值一般从1开始。每行加1,插入一个null到一个auto_increment列时,MySQL将插入一个比出现过的最大值+1的值。一个表中只能有一个auto_increment列,并且必须定义为primary key或unique才能够使用。

    12、统计查询

    1)、count()用来进行计数。

    获取该表中一共有多少条数据

    mysql> select count(*) from test

    count(*)数据行的条数。

    count(字段名) 来进行统计,但是它只会统计全体非null值的个数。

    2)、min()最小值

    3)、max()最大值

    4)、sum()和

    5)、avg()平均数 计算的时候不会将null的列计算在内

    13、完全限定

    select 表名.字段名 from 库名. 表名

    14、起别名

    字段名和表名都可以起别名 as

    select count(*) as 别名 from 表名;

    15、 拼接字段

    concat(字段,字段)

    16、关联查询

    1、找关系

    2、就先写出 select * from 表1,表2

    3、 写where 条件

    4、将*替换成你想要的数据

    17、子查询----在查询里面再包含一个查询

    注意:子查询总是从内向外进行处理.实际上他执行了2个SQL语句

    1)、select name,(select name from level where user.level=level.id) from user;

    2)、后置用法:当作条件来用

    现在我要找出所有翠红楼里面管理层人员。

    mysql> select name from user where level in (select id from level where name in( '翠红楼老鸨','翠红楼龟公','翠红楼老板'));

    18、导出mysql数据库

    1)、导出数据库及里面的结构和数据:C:Documents and Settingsadmin>mysqldump -u root -p lamp > C:xampphtdocs est.sql

    2)、导出指定库里面的表 C:Documents and Settingsadmin>mysqldump -uroot -p lamp test> C:xamppht docs est1.sql

    3)、导出数据库的结构的:mysqldump -u 用户名 -p -d 数据库名 > 导出的文件名

    4)、导出指定库的指定表的结构:mysqldump -u 用户名 -p -d 数据库名 表名 > 导出的文件名

    19、导入数据库

    1)、在退出数据库的情况下 mysql -u 用户名 -p 数据库名 < 数据库文件

    2)、在进入到数据库并且选中的情况下 source 数据库文件

    20、修改密码

    1、C:Documents and Settingsadmin>mysqladmin -u root -p password 要设置的密码

    2、set password for '用户名'@'登录主机'=password('新密码');

    21、mysql忘记密码

    步骤:

    1、关闭正在运行的MySQL

    2、打开dos跳转到mysql的bin目录下

    C:Documents and Settingslgzhyan>cd C:xamppmysqlin

    3、输入C:xamppmysqlin>mysqld --skip-grant-tables

    4、再打开一个窗口进入到mysql的bin目录下

    5、输入mysql回车,这个时候可以使用root的身份强行进去。

    6、进入到mysql这个库 use mysql

    7、update user set password=password('新密码') where user='root'

    8、刷新权限 flush privileges

    22、删掉匿名用户

    drop user ''@'localhost';

    23、退出MySQL 1)、quit 2)、exit 3)、q

    24、常见的一些操作

    g 可以代替分号。

    c 取消未完成的操作。

    -b 关闭蜂鸣器

    -P 端口号

    ’回车

    G 让数据竖起来

    25、进入数据库服务器在不选择数据库的情况下选择lamp库中的goods表中的所有数据

    mysql> select * from lamp.goods;

    26、PHP连接数据库步骤:

    1)、连接数据库

    mysql_connect('主机','账号','密码');

    2)、选择数据库作为默认的数据库

    mysql_select_db('数据库名');

    mysql_error(); //检查上一步执行的MySQL的错误

    3)、 设置字符集

    mysql_set_charset('utf8');

    做项目的时候乱码的解决方法:

    1、页面的存储字符集是否为UTF-8

    2、浏览器是否解析为utf-8字符集 header() <meta />

    3、是否设置了连接数据库的字符集

    4、数据库的存储字符集是否设置了utf8 default charset=utf8

    4)、执行SQL语句

    mysql_query(SQL语句);

    5)、处理结果

    一种是有结果集(select,desc)

    mysql_fetch_row($reuslt);//得到的将是一个索引数组

    mysql_fetch_assoc($result);//得到的将是一个关联数组

    mysql_fetch_array($result);//将得到的是一个关联和索引数组

    注意:结果集里面的数据使用上面的函数一次只能拿出来一条,没有的时候将会返回false。

    一种是没有结果集(insertdeleteupdate)

    mysql_affected_rows();//取得前一次 MySQL 操作所影响的记录行数

    6)、关闭资源

    mysql_close();

    其他的函数:

    mysql_num_rows('结果集的资源'); //返回总共获取到了多少跳数据

    mysql_insert_id();//取得了上次insert操作所产生的自增id

    授权

    mysql> grant all on lamp.* to 'zhangsan@'192.168.141.249' identified by '123456';

    刷新权限

    mysql> flush privileges;

    移除create 权限

    mysql> revoke create on lamp.* from 'haha'@'localhost';

    移除权限 revoke 权限 on 数据库名.数据表名 from '用户名'@'登录主机'

    mysql> revoke select on lamp.* from 'haha'@'localhost';

    删除用户

    删除mysql数据库下的user表中 user='haha'

    mysql> delete from mysql.user where user = 'haha';

    查询当前stu表中所有的索引

    mysql> show indexes from stuG

    数据定义语言(DDL):定义和管理数据对象,比如建立数据库、数据表

    数据操作语言(DML):用于操作数据库对象中的包含的数据。

    数据查询语言(DQL):用于查询数据库对象中包含的数据,能够对表进行查询。

    数据控制语言(DCL):管理数据库的语言。

    2、进入数据库的方式

    开始-》运行-》cmd-》mysql -u root -p

    Mysql -h 主机地址 -u 用户名 -p

    Mysql -h localhost -u root -p

    3、数据库的操作:

    a.创建数据库 create database 数据库名;

    b.查看所有的数据库 show databases;

    c.选择数据库 use 数据库名;

    d.查看自己选择的数据库 select database();

    e.删除数据库 drop database 数据库名;

    如果不存在则创建:create database if not exists 库名

    如果不存在则创建并设置字符集:

    Create database if not exists 数据库名 default charset utf8

    4、数据表的操作:

    a.查看数据库中的数据表: show tables;

    b.创建数据表::create table 数据表名;

    c.查看数据表的结构: desc 数据表名;

    describe stu 描述表结构

    【DESCRIBE TABLE 用于列出指定表或视图中的所有列

    DESCRIBE INDEXFOR TABLE 用于列出指定表的所有索引。

    所以 DESCRIBE是用来显示数据结构信息的

    而desc是descend ,是用于查询出结果时候对结果进行排序,是降序排序】

    d.查看创建数据表的语句:show create table 数据表名;

    e.删除数据表:drop table 数据表名;

    F.如果存在则删除drop database if exists lamp

    5、数据的操作:

    1)、插入数据:

    方法1:插入指定的字段:

    insert into 数据表名(字段名1,字段名2....) values(值1,值2....);

    方法2:插入所有字段:

    insert into 数据表名 values(值1,值2,值3....)

    方法3:插入多条语句:

    insert into 数据表名 (字段名1,字段名2....) values (值1,值2),(值3,值4),........;

    方法4:插入单条语句:

    insert into 数据表名 set 字段名1 = 值1,字段名2 = 值2....

    方法5:插入某些查询的结果:

    insert into 数据表名(字段名1,字段名2....) select 字段名1, 字段名2.....from 数据表名;

    2)、查看数据:

    方法1:select 字段名1,字段名2,字段名3.... from 数据表名

    方法2:select * from 数据表名

    A. select主句

    查询当前的数据库 select database();

    查询版本 select version();

    select 1 + 2;

    B. from子句--从指定的数据表里面查找数据

    select 字段名1,字段名2,字段名3.... from 数据表名

    select * from 数据表名

    C. where子句--查询数据的条件(可选)

    select语句里面使用where子句指定过滤条件。 where条件中可以用:

    1. 算数运算符(+ - * / %)

    2 比较运算符( < >= > <= != =)

    3. 逻辑运算符(not and or )

    4. in操作符,指定条件范围,范围中的每个条件都可以进行匹配;

    格式:in(值1,值2.....)

    5. between操作符,在指定的两个值之间;

    格式:between 起始值 and 结束值

    6. not,否定后面的操作

    7. like或 not like 两个操作符要使用包含通配符的字符串

    通配符:

    %:表示任意字符出现任意次数,可以放在任意位置

    _:下划线,用户和%一样,但是表示任意字符出现一次

    格式:字段名 like '字符串'

    %值% :包含值 %值:以值结尾的 值%:以值开头的

    D. order by子句----对字段进行排序

    格式1:order by 字段名[asc | desc]

    注意:asc(默认排列顺序)是升序排序,desc降序排序

    格式2:order by 字段名1[asc | desc],字段名2[asc | desc]

    注意:指的是字段名1完全相同的情况下按照字段名2进行排序

    E. limit 子句---限制结果集

    格式1:limit m(返回多少行数据)

    格式2:limit n,m

    注意:1、n表示从多少行开始取值(第一条数据结果是从0开始 的),m表示返回的行数。

    2、如果没有足够的行数,有多少行就显示多少行。

    E. group by 子句--用于分组

    格式1: group by 字段名(按照字段名进行分组)

    格式2:group by 字段名 having 条件(按照分组完成之后的结果 再次进行过滤)

    注意顺序:select=>from=>where=>group by =>having=>order by =>limit

    3)、修改数据:

    update 数据表名 set 字段名1=值1,字段名2=值2.... where 字段名=值;

    所有的班级是null的学员的班级设置为天庭 is null 是null的值会被选中

    mysql> update stu set class = '天庭' where class is null;

    4)、删除数据:

    delete from 数据表名 where 字段名=值

    注意:1、一定要加上条件。2、在做大量的删除之前,一般会将条件先进行测试,使用select先测试出要删除的东西,然后再删除。3、要删除所有数据的时候不要使用delete而是使用 truncate table表名(他比delete要快,将表删除,然后再重新建立)

    6、对字段的操作

    1)、更改字段

    方法1: alter table 数据表名 change 原字段名 新字段名 类型 约束条件

    方法2: alter table 数据表名 modify 字段名 类型 约束条件

    注意:change可以修改字段名,modify不可以修改字段名

    2)、添加字段

    方法1:alter table 数据表名 add 字段名 类型 约束条件

    方法2:alter table 数据表名 add 字段名 类型 约束条件 first 放在最前面

    方法3:alter table 数据表名 add 字段名 类型 约束条件 after 放在哪个字段名后面

    3)、删除字段

    alter table 数据表名 drop 字段名

    4)、修改数据表名

    alter table 数据表名 rename as 新表数据名

    7、索引的分类:

    显示所有的索引

    mysql> show indexes from testG

    1)、常规索引(index),最基本的索引,没有任何限制

    A. 1-创建索引:

    create table 表名(

    字段.....,

    index 索引名 (要索引的字段)

    );

    2--数据表已经创建的情况下:

    create index 索引名 on 数据表名(要加索引的字段);

    B. 删除索引:

    drop index 索引名 on 数据表名

    alter table test(表名) drop index username;(索引名)

    C.删除主键索引时,该字段不能是自增

    mysql> alter table demo drop primary key;

    2)、唯一索引(unique)--索引列里面的值必须是唯一的,允许有空值

    A .1--创建索引:

    create table 表名(

    字段....,

    unique 索引名(要索引的字段)

    );

    2--数据表已经创建的情况下:

    create unique index 索引名 on 数据表名(要索引的字段)

    B. 删除索引:

    drop index 索引名 on 数据表名

    3)、主键索引(primary key) 一个表只能有一个主键

    A. 1--创建索引:

    create table 表名(

    id int unsigned auto_increment primary key,

    name char(32)

    );

    B. 删除索引:

    alter table 表名 drop primary key

    注意:如果主键的字段上面有自增(auto_increment)需要先将auto_increment去掉,再删除。

    alter table 表名 change 自增的列 自增的列 类型

    8、1) 默认情况下,创建表的时候不指定表的存储引擎,将使用默认的存储引擎。

    show variables like 'default_storage_engine';

    2)查看当前数据库支持的存储引擎

    show engines;

    3) 数据表定义存储引擎

    mysql> create table t2(

    -> id int unsigned auto_increment primary key,

    -> name char(32)

    -> )engine=myisam;

    9、数据类型

    整型-- int tinyint 浮点型-- float(M,D) double(M,D) 定点型-- decimal(M,D)

    字符串-- char(M) varchar(M) text blod 日期--时间戳 枚举型--enum 集合类型--set

    10、约束条件(通用)

    1)、null---字段中没有插入值时,默认为null。

    not null--必须在插入值时,在该字段中插入一个值。如果不插入值那么为”空“

    2)、default 值 在不插入该字段时默认插入的值。

    11、 整型的约束条件:

    1)、zerofill表示0填充。一般和整型后面设定的宽度一起使用,如果数值长度小于指定的长度那么将会在前面补充相对应的0进行填充。

    2)、unsigned(无符号)如果要在字段里面保存非负数,或者较大上限的值时可使用该约束条件,将从0开始,需要在字段类型后面紧跟着定义unsigned。

    3)、auto_increment,自增,在产生一个唯一的标识或顺序值的时候,可以利用这个约束条件。这个约束条件只能用于整数类型,值一般从1开始。每行加1,插入一个null到一个auto_increment列时,MySQL将插入一个比出现过的最大值+1的值。一个表中只能有一个auto_increment列,并且必须定义为primary key或unique才能够使用。

    12、统计查询

    1)、count()用来进行计数。

    获取该表中一共有多少条数据

    mysql> select count(*) from test

    count(*)数据行的条数。

    count(字段名) 来进行统计,但是它只会统计全体非null值的个数。

    2)、min()最小值

    3)、max()最大值

    4)、sum()和

    5)、avg()平均数 计算的时候不会将null的列计算在内

    13、完全限定

    select 表名.字段名 from 库名. 表名

    14、起别名

    字段名和表名都可以起别名 as

    select count(*) as 别名 from 表名;

    15、 拼接字段

    concat(字段,字段)

    16、关联查询

    1、找关系

    2、就先写出 select * from 表1,表2

    3、 写where 条件

    4、将*替换成你想要的数据

    17、子查询----在查询里面再包含一个查询

    注意:子查询总是从内向外进行处理.实际上他执行了2个SQL语句

    1)、select name,(select name from level where user.level=level.id) from user;

    2)、后置用法:当作条件来用

    现在我要找出所有翠红楼里面管理层人员。

    mysql> select name from user where level in (select id from level where name in( '翠红楼老鸨','翠红楼龟公','翠红楼老板'));

    18、导出mysql数据库

    1)、导出数据库及里面的结构和数据:C:Documents and Settingsadmin>mysqldump -u root -p lamp > C:xampphtdocs est.sql

    2)、导出指定库里面的表 C:Documents and Settingsadmin>mysqldump -uroot -p lamp test> C:xamppht docs est1.sql

    3)、导出数据库的结构的:mysqldump -u 用户名 -p -d 数据库名 > 导出的文件名

    4)、导出指定库的指定表的结构:mysqldump -u 用户名 -p -d 数据库名 表名 > 导出的文件名

    19、导入数据库

    1)、在退出数据库的情况下 mysql -u 用户名 -p 数据库名 < 数据库文件

    2)、在进入到数据库并且选中的情况下 source 数据库文件

    20、修改密码

    1、C:Documents and Settingsadmin>mysqladmin -u root -p password 要设置的密码

    2、set password for '用户名'@'登录主机'=password('新密码');

    21、mysql忘记密码

    步骤:

    1、关闭正在运行的MySQL

    2、打开dos跳转到mysql的bin目录下

    C:Documents and Settingslgzhyan>cd C:xamppmysqlin

    3、输入C:xamppmysqlin>mysqld --skip-grant-tables

    4、再打开一个窗口进入到mysql的bin目录下

    5、输入mysql回车,这个时候可以使用root的身份强行进去。

    6、进入到mysql这个库 use mysql

    7、update user set password=password('新密码') where user='root'

    8、刷新权限 flush privileges

    22、删掉匿名用户

    drop user ''@'localhost';

    23、退出MySQL 1)、quit 2)、exit 3)、q

    24、常见的一些操作

    g 可以代替分号。

    c 取消未完成的操作。

    -b 关闭蜂鸣器

    -P 端口号

    ’回车

    G 让数据竖起来

    25、进入数据库服务器在不选择数据库的情况下选择lamp库中的goods表中的所有数据

    mysql> select * from lamp.goods;

    26、PHP连接数据库步骤:

    1)、连接数据库

    mysql_connect('主机','账号','密码');

    2)、选择数据库作为默认的数据库

    mysql_select_db('数据库名');

    mysql_error(); //检查上一步执行的MySQL的错误

    3)、 设置字符集

    mysql_set_charset('utf8');

    做项目的时候乱码的解决方法:

    1、页面的存储字符集是否为UTF-8

    2、浏览器是否解析为utf-8字符集 header() <meta />

    3、是否设置了连接数据库的字符集

    4、数据库的存储字符集是否设置了utf8 default charset=utf8

    4)、执行SQL语句

    mysql_query(SQL语句);

    5)、处理结果

    一种是有结果集(select,desc)

    mysql_fetch_row($reuslt);//得到的将是一个索引数组

    mysql_fetch_assoc($result);//得到的将是一个关联数组

    mysql_fetch_array($result);//将得到的是一个关联和索引数组

    注意:结果集里面的数据使用上面的函数一次只能拿出来一条,没有的时候将会返回false。

    一种是没有结果集(insertdeleteupdate)

    mysql_affected_rows();//取得前一次 MySQL 操作所影响的记录行数

    6)、关闭资源

    mysql_close();

    其他的函数:

    mysql_num_rows('结果集的资源'); //返回总共获取到了多少跳数据

    mysql_insert_id();//取得了上次insert操作所产生的自增id

    授权

    mysql> grant all on lamp.* to 'zhangsan@'192.168.141.249' identified by '123456';

    刷新权限

    mysql> flush privileges;

    移除create 权限

    mysql> revoke create on lamp.* from 'haha'@'localhost';

    移除权限 revoke 权限 on 数据库名.数据表名 from '用户名'@'登录主机'

    mysql> revoke select on lamp.* from 'haha'@'localhost';

    删除用户

    删除mysql数据库下的user表中 user='haha'

    mysql> delete from mysql.user where user = 'haha';

    查询当前stu表中所有的索引

    mysql> show indexes from stuG

    数据定义语言(DDL):定义和管理数据对象,比如建立数据库、数据表

    数据操作语言(DML):用于操作数据库对象中的包含的数据。

    数据查询语言(DQL):用于查询数据库对象中包含的数据,能够对表进行查询。

    数据控制语言(DCL):管理数据库的语言。

    2、进入数据库的方式

    开始-》运行-》cmd-》mysql -u root -p

    Mysql -h 主机地址 -u 用户名 -p

    Mysql -h localhost -u root -p

    3、数据库的操作:

    a.创建数据库 create database 数据库名;

    b.查看所有的数据库 show databases;

    c.选择数据库 use 数据库名;

    d.查看自己选择的数据库 select database();

    e.删除数据库 drop database 数据库名;

    如果不存在则创建:create database if not exists 库名

    如果不存在则创建并设置字符集:

    Create database if not exists 数据库名 default charset utf8

    4、数据表的操作:

    a.查看数据库中的数据表: show tables;

    b.创建数据表::create table 数据表名;

    c.查看数据表的结构: desc 数据表名;

    describe stu 描述表结构

    【DESCRIBE TABLE 用于列出指定表或视图中的所有列

    DESCRIBE INDEXFOR TABLE 用于列出指定表的所有索引。

    所以 DESCRIBE是用来显示数据结构信息的

    而desc是descend ,是用于查询出结果时候对结果进行排序,是降序排序】

    d.查看创建数据表的语句:show create table 数据表名;

    e.删除数据表:drop table 数据表名;

    F.如果存在则删除drop database if exists lamp

    5、数据的操作:

    1)、插入数据:

    方法1:插入指定的字段:

    insert into 数据表名(字段名1,字段名2....) values(值1,值2....);

    方法2:插入所有字段:

    insert into 数据表名 values(值1,值2,值3....)

    方法3:插入多条语句:

    insert into 数据表名 (字段名1,字段名2....) values (值1,值2),(值3,值4),........;

    方法4:插入单条语句:

    insert into 数据表名 set 字段名1 = 值1,字段名2 = 值2....

    方法5:插入某些查询的结果:

    insert into 数据表名(字段名1,字段名2....) select 字段名1, 字段名2.....from 数据表名;

    2)、查看数据:

    方法1:select 字段名1,字段名2,字段名3.... from 数据表名

    方法2:select * from 数据表名

    A. select主句

    查询当前的数据库 select database();

    查询版本 select version();

    select 1 + 2;

    B. from子句--从指定的数据表里面查找数据

    select 字段名1,字段名2,字段名3.... from 数据表名

    select * from 数据表名

    C. where子句--查询数据的条件(可选)

    select语句里面使用where子句指定过滤条件。 where条件中可以用:

    1. 算数运算符(+ - * / %)

    2 比较运算符( < >= > <= != =)

    3. 逻辑运算符(not and or )

    4. in操作符,指定条件范围,范围中的每个条件都可以进行匹配;

    格式:in(值1,值2.....)

    5. between操作符,在指定的两个值之间;

    格式:between 起始值 and 结束值

    6. not,否定后面的操作

    7. like或 not like 两个操作符要使用包含通配符的字符串

    通配符:

    %:表示任意字符出现任意次数,可以放在任意位置

    _:下划线,用户和%一样,但是表示任意字符出现一次

    格式:字段名 like '字符串'

    %值% :包含值 %值:以值结尾的 值%:以值开头的

    D. order by子句----对字段进行排序

    格式1:order by 字段名[asc | desc]

    注意:asc(默认排列顺序)是升序排序,desc降序排序

    格式2:order by 字段名1[asc | desc],字段名2[asc | desc]

    注意:指的是字段名1完全相同的情况下按照字段名2进行排序

    E. limit 子句---限制结果集

    格式1:limit m(返回多少行数据)

    格式2:limit n,m

    注意:1、n表示从多少行开始取值(第一条数据结果是从0开始 的),m表示返回的行数。

    2、如果没有足够的行数,有多少行就显示多少行。

    E. group by 子句--用于分组

    格式1: group by 字段名(按照字段名进行分组)

    格式2:group by 字段名 having 条件(按照分组完成之后的结果 再次进行过滤)

    注意顺序:select=>from=>where=>group by =>having=>order by =>limit

    3)、修改数据:

    update 数据表名 set 字段名1=值1,字段名2=值2.... where 字段名=值;

    所有的班级是null的学员的班级设置为天庭 is null 是null的值会被选中

    mysql> update stu set class = '天庭' where class is null;

    4)、删除数据:

    delete from 数据表名 where 字段名=值

    注意:1、一定要加上条件。2、在做大量的删除之前,一般会将条件先进行测试,使用select先测试出要删除的东西,然后再删除。3、要删除所有数据的时候不要使用delete而是使用 truncate table表名(他比delete要快,将表删除,然后再重新建立)

    6、对字段的操作

    1)、更改字段

    方法1: alter table 数据表名 change 原字段名 新字段名 类型 约束条件

    方法2: alter table 数据表名 modify 字段名 类型 约束条件

    注意:change可以修改字段名,modify不可以修改字段名

    2)、添加字段

    方法1:alter table 数据表名 add 字段名 类型 约束条件

    方法2:alter table 数据表名 add 字段名 类型 约束条件 first 放在最前面

    方法3:alter table 数据表名 add 字段名 类型 约束条件 after 放在哪个字段名后面

    3)、删除字段

    alter table 数据表名 drop 字段名

    4)、修改数据表名

    alter table 数据表名 rename as 新表数据名

    7、索引的分类:

    显示所有的索引

    mysql> show indexes from testG

    1)、常规索引(index),最基本的索引,没有任何限制

    A. 1-创建索引:

    create table 表名(

    字段.....,

    index 索引名 (要索引的字段)

    );

    2--数据表已经创建的情况下:

    create index 索引名 on 数据表名(要加索引的字段);

    B. 删除索引:

    drop index 索引名 on 数据表名

    alter table test(表名) drop index username;(索引名)

    C.删除主键索引时,该字段不能是自增

    mysql> alter table demo drop primary key;

    2)、唯一索引(unique)--索引列里面的值必须是唯一的,允许有空值

    A .1--创建索引:

    create table 表名(

    字段....,

    unique 索引名(要索引的字段)

    );

    2--数据表已经创建的情况下:

    create unique index 索引名 on 数据表名(要索引的字段)

    B. 删除索引:

    drop index 索引名 on 数据表名

    3)、主键索引(primary key) 一个表只能有一个主键

    A. 1--创建索引:

    create table 表名(

    id int unsigned auto_increment primary key,

    name char(32)

    );

    B. 删除索引:

    alter table 表名 drop primary key

    注意:如果主键的字段上面有自增(auto_increment)需要先将auto_increment去掉,再删除。

    alter table 表名 change 自增的列 自增的列 类型

    8、1) 默认情况下,创建表的时候不指定表的存储引擎,将使用默认的存储引擎。

    show variables like 'default_storage_engine';

    2)查看当前数据库支持的存储引擎

    show engines;

    3) 数据表定义存储引擎

    mysql> create table t2(

    -> id int unsigned auto_increment primary key,

    -> name char(32)

    -> )engine=myisam;

    9、数据类型

    整型-- int tinyint 浮点型-- float(M,D) double(M,D) 定点型-- decimal(M,D)

    字符串-- char(M) varchar(M) text blod 日期--时间戳 枚举型--enum 集合类型--set

    10、约束条件(通用)

    1)、null---字段中没有插入值时,默认为null。

    not null--必须在插入值时,在该字段中插入一个值。如果不插入值那么为”空“

    2)、default 值 在不插入该字段时默认插入的值。

    11、 整型的约束条件:

    1)、zerofill表示0填充。一般和整型后面设定的宽度一起使用,如果数值长度小于指定的长度那么将会在前面补充相对应的0进行填充。

    2)、unsigned(无符号)如果要在字段里面保存非负数,或者较大上限的值时可使用该约束条件,将从0开始,需要在字段类型后面紧跟着定义unsigned。

    3)、auto_increment,自增,在产生一个唯一的标识或顺序值的时候,可以利用这个约束条件。这个约束条件只能用于整数类型,值一般从1开始。每行加1,插入一个null到一个auto_increment列时,MySQL将插入一个比出现过的最大值+1的值。一个表中只能有一个auto_increment列,并且必须定义为primary key或unique才能够使用。

    12、统计查询

    1)、count()用来进行计数。

    获取该表中一共有多少条数据

    mysql> select count(*) from test

    count(*)数据行的条数。

    count(字段名) 来进行统计,但是它只会统计全体非null值的个数。

    2)、min()最小值

    3)、max()最大值

    4)、sum()和

    5)、avg()平均数 计算的时候不会将null的列计算在内

    13、完全限定

    select 表名.字段名 from 库名. 表名

    14、起别名

    字段名和表名都可以起别名 as

    select count(*) as 别名 from 表名;

    15、 拼接字段

    concat(字段,字段)

    16、关联查询

    1、找关系

    2、就先写出 select * from 表1,表2

    3、 写where 条件

    4、将*替换成你想要的数据

    17、子查询----在查询里面再包含一个查询

    注意:子查询总是从内向外进行处理.实际上他执行了2个SQL语句

    1)、select name,(select name from level where user.level=level.id) from user;

    2)、后置用法:当作条件来用

    现在我要找出所有翠红楼里面管理层人员。

    mysql> select name from user where level in (select id from level where name in( '翠红楼老鸨','翠红楼龟公','翠红楼老板'));

    18、导出mysql数据库

    1)、导出数据库及里面的结构和数据:C:Documents and Settingsadmin>mysqldump -u root -p lamp > C:xampphtdocs est.sql

    2)、导出指定库里面的表 C:Documents and Settingsadmin>mysqldump -uroot -p lamp test> C:xamppht docs est1.sql

    3)、导出数据库的结构的:mysqldump -u 用户名 -p -d 数据库名 > 导出的文件名

    4)、导出指定库的指定表的结构:mysqldump -u 用户名 -p -d 数据库名 表名 > 导出的文件名

    19、导入数据库

    1)、在退出数据库的情况下 mysql -u 用户名 -p 数据库名 < 数据库文件

    2)、在进入到数据库并且选中的情况下 source 数据库文件

    20、修改密码

    1、C:Documents and Settingsadmin>mysqladmin -u root -p password 要设置的密码

    2、set password for '用户名'@'登录主机'=password('新密码');

    21、mysql忘记密码

    步骤:

    1、关闭正在运行的MySQL

    2、打开dos跳转到mysql的bin目录下

    C:Documents and Settingslgzhyan>cd C:xamppmysqlin

    3、输入C:xamppmysqlin>mysqld --skip-grant-tables

    4、再打开一个窗口进入到mysql的bin目录下

    5、输入mysql回车,这个时候可以使用root的身份强行进去。

    6、进入到mysql这个库 use mysql

    7、update user set password=password('新密码') where user='root'

    8、刷新权限 flush privileges

    22、删掉匿名用户

    drop user ''@'localhost';

    23、退出MySQL 1)、quit 2)、exit 3)、q

    24、常见的一些操作

    g 可以代替分号。

    c 取消未完成的操作。

    -b 关闭蜂鸣器

    -P 端口号

    ’回车

    G 让数据竖起来

    25、进入数据库服务器在不选择数据库的情况下选择lamp库中的goods表中的所有数据

    mysql> select * from lamp.goods;

    26、PHP连接数据库步骤:

    1)、连接数据库

    mysql_connect('主机','账号','密码');

    2)、选择数据库作为默认的数据库

    mysql_select_db('数据库名');

    mysql_error(); //检查上一步执行的MySQL的错误

    3)、 设置字符集

    mysql_set_charset('utf8');

    做项目的时候乱码的解决方法:

    1、页面的存储字符集是否为UTF-8

    2、浏览器是否解析为utf-8字符集 header() <meta />

    3、是否设置了连接数据库的字符集

    4、数据库的存储字符集是否设置了utf8 default charset=utf8

    4)、执行SQL语句

    mysql_query(SQL语句);

    5)、处理结果

    一种是有结果集(select,desc)

    mysql_fetch_row($reuslt);//得到的将是一个索引数组

    mysql_fetch_assoc($result);//得到的将是一个关联数组

    mysql_fetch_array($result);//将得到的是一个关联和索引数组

    注意:结果集里面的数据使用上面的函数一次只能拿出来一条,没有的时候将会返回false。

    一种是没有结果集(insertdeleteupdate)

    mysql_affected_rows();//取得前一次 MySQL 操作所影响的记录行数

    6)、关闭资源

    mysql_close();

    其他的函数:

    mysql_num_rows('结果集的资源'); //返回总共获取到了多少跳数据

    mysql_insert_id();//取得了上次insert操作所产生的自增id

    刷新权限

    mysql> flush privileges;

    移除create 权限

    mysql> revoke create on lamp.* from 'haha'@'localhost';

    移除权限 revoke 权限 on 数据库名.数据表名 from '用户名'@'登录主机'

    mysql> revoke select on lamp.* from 'haha'@'localhost';

    删除用户

    删除mysql数据库下的user表中 user='haha'

    mysql> delete from mysql.user where user = 'haha';

    查询当前stu表中所有的索引

    mysql> show indexes from stuG

    数据定义语言(DDL):定义和管理数据对象,比如建立数据库、数据表

    数据操作语言(DML):用于操作数据库对象中的包含的数据。

    数据查询语言(DQL):用于查询数据库对象中包含的数据,能够对表进行查询。

    数据控制语言(DCL):管理数据库的语言。

    2、进入数据库的方式

    开始-》运行-》cmd-》mysql -u root -p

    Mysql -h 主机地址 -u 用户名 -p

    Mysql -h localhost -u root -p

    3、数据库的操作:

    a.创建数据库 create database 数据库名;

    b.查看所有的数据库 show databases;

    c.选择数据库 use 数据库名;

    d.查看自己选择的数据库 select database();

    e.删除数据库 drop database 数据库名;

    如果不存在则创建:create database if not exists 库名

    如果不存在则创建并设置字符集:

    Create database if not exists 数据库名 default charset utf8

    4、数据表的操作:

    a.查看数据库中的数据表: show tables;

    b.创建数据表::create table 数据表名;

    c.查看数据表的结构: desc 数据表名;

    describe stu 描述表结构

    【DESCRIBE TABLE 用于列出指定表或视图中的所有列

    DESCRIBE INDEXFOR TABLE 用于列出指定表的所有索引。

    所以 DESCRIBE是用来显示数据结构信息的

    而desc是descend ,是用于查询出结果时候对结果进行排序,是降序排序】

    d.查看创建数据表的语句:show create table 数据表名;

    e.删除数据表:drop table 数据表名;

    F.如果存在则删除drop database if exists lamp

    mysql数据库-第一版(待更新)
  • 相关阅读:
    Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [web_dao,web_service] are excluded from annotation processing
    手把手教你springboot中导出数据到excel中
    MySql多表关联Update笔记
    Spring Security踩坑记录(静态资源放行异常)
    Can't find bundle for base name
    简单好用的对象映射器——Mapster
    YARP简介 —— IHttpProxy
    使用Let's Encrypt创建SSL证书
    使用Mono.Cecil动态添加资源文件
    给RapiDoc添加多接口支持
  • 原文地址:https://www.cnblogs.com/zhanghaiyang/p/7212798.html
Copyright © 2020-2023  润新知