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() <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。

一种是没有结果集(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() <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。

一种是没有结果集(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() <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。

一种是没有结果集(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() <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。

一种是没有结果集(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数据库-第一版(待更新)

Mysql学习总结(41)——MySql数据库基本语句再体会的更多相关文章

  1. MySQL学习【第五篇SQL语句上】

    一.mysql命令 1.连接服务端命令 1.mysql -uroot -p123 -h127.0.0.1 2.mysql -uroot -p123 -S /tmp/mysql.sock 3.mysql ...

  2. 吴裕雄--天生自然MySQL学习笔记:MySQL GROUP BY 语句

    GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT column_name, funct ...

  3. Mysql学习笔记整理之数据库优化

    数据库性能瓶颈的原因 数据库连接数 数据量大 硬件资源限制 数据性能优化方案 sql优化       2.缓存        3.建好索引    4.读写分离        5. 分库分表 慢日志查  ...

  4. 吴裕雄--天生自然MySQL学习笔记:MySQL 创建数据库

    在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB: [root@ho ...

  5. mysql学习3:mysql之my.cnf详解

    mysql之my.cnf详解 本文转自:https://www.cnblogs.com/panwenbin-logs/p/8360703.html 以下是 my.cnf 配置文件参数解释: #*** ...

  6. 吴裕雄--天生自然MySQL学习笔记:MySQL 运算符

    要介绍 MySQL 的运算符及运算符的优先级. MySQL 主要有以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 算术运算符 MySQL 支持的算术运算符包括: 在除法运算和模运算中, ...

  7. 吴裕雄--天生自然MySQL学习笔记:MySQL 导入数据

    1.mysql 命令导入 使用 mysql 命令导入语法格式为: mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql) 实例: # mysql -uroot -p12 ...

  8. 吴裕雄--天生自然MySQL学习笔记:MySQL 处理重复数据

    有些 MySQL 数据表中可能存在重复的记录,有些情况允许重复数据的存在,但有时候我们也需要删除这些重复的数据. 防止表中出现重复数据 可以在 MySQL 数据表中设置指定的字段为 PRIMARY K ...

  9. 吴裕雄--天生自然MySQL学习笔记:MySQL 元数据

    你可能想知道MySQL以下三种信息: 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数. 数据库和数据表的信息: 包含了数据库及数据表的结构信息. MySQL服务器信息: ...

随机推荐

  1. 机器视觉: LBP-TOP

    之前介绍过机器视觉中常用到的一种特征:LBP http://blog.csdn.net/matrix_space/article/details/50481641 LBP可以有效地处理光照变化,在纹理 ...

  2. bzoj4753

    bzoj4753 树形dp+01分数规划 这是一个典型的树形背包+01分数规划.看见分数形式最大就应该想到01分数规划. 于是套用分数规划,每次用树形背包检验. 首先这是一棵树,不是一个森林,所以我们 ...

  3. openstack instance resize

    Error: No valid host was found. No valid host found for resize

  4. Flink之Stateful Operators

    Implementing Stateful Functions source function的stateful看官网,要加lock Declaring Keyed State at the Runt ...

  5. 在网页上打印,js window.print

    window.print默认会打印出当前页在屏幕中显示的部分,可以实现在线打印

  6. redis过期策略和内存淘汰机制

    目录 常见的删除策略 redis使用的过期策略:定期删除+惰性删除 定期删除 惰性删除 为什么要采用定期删除+惰性删除2种策略呢? redis内存淘汰机制 常见的删除策略 1.定时删除:在设置键的过期 ...

  7. $tsinsenA1067$

    \(problem\) 这种题目需要一个定理 \(a[1]+a[2]+a[3]+a[4]...=(a[1]%mod)+...\) 本人出奇的懒 然后 动态规划?(恰似枚举) #include < ...

  8. UNIX环境高级编程--8. 进程控制

    进程控制进程标识:    每一个进程都有一个非负整型表示的唯一进程ID.虽然唯一,但是ID可以复用.当一个进程结束后,其进程ID会被延迟复用.    ID=0的进程通常是调度进程,常被称作交换进程(s ...

  9. [ BZOJ 3445 ] Roadblock

    \(\\\) \(Description\) 给出一张\(N\) 个点\(M\)条边的无向图,选择一条边使其权值翻倍,求操作后比操作前最短路长度增量最大值. \(1\le N\le 250\),\(1 ...

  10. photoshop制作古风画

    效果图: 素材结构: 前期准备: 素材准备,我的素材包括:印章.花束.二次元妹纸,背景图片. 软件准备,用的软件是 photoshop CS6. 把二次元妹纸拖入photoshop,把她抠出来,Ctr ...