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 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数据库基本语句再体会的更多相关文章
- MySQL学习【第五篇SQL语句上】
一.mysql命令 1.连接服务端命令 1.mysql -uroot -p123 -h127.0.0.1 2.mysql -uroot -p123 -S /tmp/mysql.sock 3.mysql ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL GROUP BY 语句
GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT column_name, funct ...
- Mysql学习笔记整理之数据库优化
数据库性能瓶颈的原因 数据库连接数 数据量大 硬件资源限制 数据性能优化方案 sql优化 2.缓存 3.建好索引 4.读写分离 5. 分库分表 慢日志查 ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 创建数据库
在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB: [root@ho ...
- mysql学习3:mysql之my.cnf详解
mysql之my.cnf详解 本文转自:https://www.cnblogs.com/panwenbin-logs/p/8360703.html 以下是 my.cnf 配置文件参数解释: #*** ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 运算符
要介绍 MySQL 的运算符及运算符的优先级. MySQL 主要有以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 算术运算符 MySQL 支持的算术运算符包括: 在除法运算和模运算中, ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 导入数据
1.mysql 命令导入 使用 mysql 命令导入语法格式为: mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql) 实例: # mysql -uroot -p12 ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 处理重复数据
有些 MySQL 数据表中可能存在重复的记录,有些情况允许重复数据的存在,但有时候我们也需要删除这些重复的数据. 防止表中出现重复数据 可以在 MySQL 数据表中设置指定的字段为 PRIMARY K ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 元数据
你可能想知道MySQL以下三种信息: 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数. 数据库和数据表的信息: 包含了数据库及数据表的结构信息. MySQL服务器信息: ...
随机推荐
- shell脚本-基础
shell脚本-基础 编程基础 程序是指令+ 数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell 程序提供了编程能力,解释执行. 计算运行二进 ...
- E20170627-gg
ring n. 戒指,指环; 铃声,钟声; 环形物; 拳击场; vi. 按铃,敲钟; 回响; 成环形; rear n. 后部,背面,背后; 臀部; (舰队或军队的) 后方,后尾,殿后部队; ...
- 湖南集训day5
难度:☆☆☆☆☆☆☆ /* 二分答案 算斜率算截距巴拉巴拉很好推的公式 貌似没这么麻烦我太弱了...... 唉不重要... */ #include<iostream> #include&l ...
- codevs1258 关路灯(☆区间dp)
1258 关路灯 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每天早晨他必须 ...
- 拼接sql ()
SELECT ID,FORMNAME,NODENAME,SEQUENCE, NAME, STATE, NOWTIMES, WORK.FQREALNAME||'('||FQDEPT.FULLN ...
- warning: remote HEAD refers to nonexistent ref, unable to checkout
今天使用git clone时候 提示 warning: remote HEAD refers to nonexistent ref, unable to checkout 经过测试解决办法如下 git ...
- HTML--使用下拉列表框进行多选
下拉列表也可以进行多选操作,在<select>标签中设置multiple="multiple"属性,就可以实现多选功能,在 widows 操作系统下,进行多选时按下Ct ...
- ACM_汉诺塔问题(递推dp)
Problem Description: 最近小G迷上了汉诺塔,他发现n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列.由于发生错移产生的系列就增加了,这种错误是放错了 ...
- Oracle 10g RAC的负载均衡配置[转载]
Oracle 10g RAC的负载均衡配置 负载均衡是指连接的负载均衡.RAC的负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工作.在RAC中,负载均衡分为两种,一 ...
- win7 硬盘安装suse双系统启动顺序更改
使用win7硬盘安装suse双系统之后,首先面临的问题是,PC默认启动的系统更改的问题,有些人可能想默认启动是win7,只有在使用linux的时候在去选择suse系统,这里我告诉大家更改的办法: 首先 ...