mysql 相关操作

sanlanlan 2018-1-1 标签: mysql 浏览:1000 评论:0


转载至:http://blog.csdn.net/evankaka


一、用户创建、权限、删除

1、创建用户:

命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

CREATE USER 'test'@'localhost' IDENTIFIED BY '123456'; 

2、授权:

命令:GRANT privileges ON db.table TO 'username'@'host'

说明:privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL

如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.

GRANT SELECT, INSERT ON school.* TO 'test' @'%';

GRANT ALL ON *.* TO 'test'@'%';

注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON db.table TO 'username'@'host'WITH GRANT OPTION;

3、设置与更改用户密码

命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

4、删除用户

    命令: DROP USER 'username'@'host';

二、表复制及备份还原

        1.复制表结构

1.1 含有主键等信息的完整表结构

CREATE table 新表名 LIKE table;

1.2 只有表结构,没有主键等信息

create table 新表名 select * from table;

2.将旧表中的数据导入新表

INSERT INTO 新表 SELECT * FROM 旧表;

        3.备份数据库

        利用“mysqldump -u 用户名 -p 数据库名>备份名字”导出数据库到文件

4.还原数据库

先create database test

然后 下mysql>下

输入source 路径,即可。 //source test.sql

5.导出数据

select * from table into outfile”dest_file”;

select * from table limit 10 intooutfile "/tem/test.txt";

6.导入数据

        load data infile”file_name” into table table_name;

        load data infile"/tem/test.txt” into table tes;

三、数据库操作

1、按月查询统计数据

SELECT * FROM tb_stu WHERE month(date) = '$_POST[date]' ORDER BY date ;

注:SQL语言中提供了如下函数,利用这些函数可以很方便地实现按年、月、日进行查询

year(data):返回data表达式中的公元年分所对应的数值

month(data):返回data表达式中的月分所对应的数值

day(data):返回data表达式中的日期所对应的数值

2、查询结果不显示重复记录

SELECT DISTINCT 字段名 FROM 表名 WHERE 查询条件

注:SQL语句中的DISTINCT必须与WHERE子句联合使用,否则输出的信息不会有变化 ,且字段不能用*代替

3、显示数据表中重复的记录和记录条数

SELECT name,age,count(*) ,age FROM table WHERE age = '18' group by date

4、对数据进行多条件查询

SELECT 字段名 FROM table WHERE 条件 ORDER BY 字段1 ASC 字段2 DESC …

注意:对查询信息进行多条件排序是为了共同限制记录的输出,一般情况下,由于不是单一条件限制,所以在输出效果上有一些差别。

5、对统计结果进行排序

函数SUM([ALL]字段名) 或 SUM([DISTINCT]字段名),可实现对字段的求和,函数中为ALL时为所有该字段所有记录求和,若为DISTINCT则为该字段所有不重复记录的字段求和

如:SELECT name,SUM(price) AS sumprice FROM tb_price GROUP BY name
        SELECT * FROM tb_name ORDER BY mount DESC,price ASC

6、单列数据分组统计

SELECT id,name,SUM(price) AS title,date FROM table GROUP BY pid ORDER BY title DESC

注:当分组语句group by排序语句order by同时出现在SQL语句中时,要将分组语句书写在排序语句的前面,否则会出现错误

7、多列数据分组统计

多列数据分组统计与单列数据分组统计类似

SELECT *,SUM(字段1*字段2) AS (新字段1) FROM 表名 GROUP BY 字段 ORDER BY 新字段1 DESC

SELECT id,name,SUM(price*num) AS sumprice FROM tb_price GROUP BY pid ORDER BY sumprice DESC

注:group by语句后面一般为不是聚合函数的数列,即不是要分组的列

8、多表分组统计

SELECT a.name,AVG(a.price),b.name,AVG(b.price) FROM tb_demo058 AS a,tb_demo058_1 AS b WHERE a.id=b.id GROUP BY b.type;

9、索引操作

ADD:    ALTER TABLE  `table` ADD INDEX name (`name`);

delete:    ALTER TABLE `table` DROP INDEX name;

unique:    ALTER TABLE `table` ADD UNIQUE `name_sex` (`name`, `sex`);

delete:    ALTER TABLE table DROP INDEX name_sex

本文相关标签: mysql

发表评论: