频道栏目
首页 > 资讯 > MySQL > 正文

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

16-10-25        来源:[db:作者]  
收藏   我要投稿

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 test\G

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 Settings\admin>mysqldump -u root -p lamp > C:\xampp\htdocs\test.sql

2)、导出指定库里面的表 C:\Documents and Settings\admin>mysqldump -uroot -p lamp test> C:\xampp\ht docs\test1.sql

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

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

19、导入数据库

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

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

20、修改密码

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

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

21、mysql忘记密码

步骤:

1、关闭正在运行的MySQL

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

C:\Documents and Settings\lgzhyan>cd C:\xampp\mysql\bin

3、输入C:\xampp\mysql\bin>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()

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。

一种是没有结果集(insert\delete\update)

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 stu\G

数据定义语言(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 test\G

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 Settings\admin>mysqldump -u root -p lamp > C:\xampp\htdocs\test.sql

2)、导出指定库里面的表 C:\Documents and Settings\admin>mysqldump -uroot -p lamp test> C:\xampp\ht docs\test1.sql

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

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

19、导入数据库

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

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

20、修改密码

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

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

21、mysql忘记密码

步骤:

1、关闭正在运行的MySQL

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

C:\Documents and Settings\lgzhyan>cd C:\xampp\mysql\bin

3、输入C:\xampp\mysql\bin>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()

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。

一种是没有结果集(insert\delete\update)

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 stu\G

数据定义语言(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 test\G

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 Settings\admin>mysqldump -u root -p lamp > C:\xampp\htdocs\test.sql

2)、导出指定库里面的表 C:\Documents and Settings\admin>mysqldump -uroot -p lamp test> C:\xampp\ht docs\test1.sql

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

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

19、导入数据库

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

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

20、修改密码

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

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

21、mysql忘记密码

步骤:

1、关闭正在运行的MySQL

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

C:\Documents and Settings\lgzhyan>cd C:\xampp\mysql\bin

3、输入C:\xampp\mysql\bin>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()

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。

一种是没有结果集(insert\delete\update)

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 stu\G

数据定义语言(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 test\G

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 Settings\admin>mysqldump -u root -p lamp > C:\xampp\htdocs\test.sql

2)、导出指定库里面的表 C:\Documents and Settings\admin>mysqldump -uroot -p lamp test> C:\xampp\ht docs\test1.sql

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

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

19、导入数据库

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

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

20、修改密码

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

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

21、mysql忘记密码

步骤:

1、关闭正在运行的MySQL

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

C:\Documents and Settings\lgzhyan>cd C:\xampp\mysql\bin

3、输入C:\xampp\mysql\bin>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()

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。

一种是没有结果集(insert\delete\update)

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 stu\G

数据定义语言(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数据库-第一版(待更新)

相关TAG标签
上一篇:用EXCEL查询SQLSERVER数据库U8876的现存量。有重复的用黄色标记。
下一篇:mysqlclusterndb的索引性能
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站