Mysql 常用的操作

原文链接: https://my.oschina.net/mofire/blog/1122133

第一部分:

mysql的查询操作(select 语句)

1.查询全部

格式:select * from 表名

例如查询 管理员表

SELECT * FROM admin;

Mysql 常用的操作_第1张图片

2.指定字段

(1)格式:select field1,field2 from 表名

SELECT news_id,title FROM news

例如查询新闻表

Mysql 常用的操作_第2张图片

(2)使用as 给自动指定别名

SELECT news_id as id,title FROM news

3.去重查询

格式:select [all | distinct] field from 表名

例如查询学生表

SELECT DISTINCT class_id FROM student;

4.使用where 加入条件

格式:select * from 表名 where 表达式

(1)例如查询产品分类表中pid 为0的记录

SELECT * FROM sp_product_categroy WHERE pid = 0

Mysql 常用的操作_第3张图片

(2)例如查询产品分类表中product_cat_id 大于30的记录

SELECT * FROM `sp_product_category` WHERE product_cat_id >30

Mysql 常用的操作_第4张图片

(3)例如产品分类表中product_cat_id 大于30 小于 40 的记录

SELECT *
FROM `sp_product_category`
WHERE product_cat_id >30
AND product_cat_id <40

Mysql 常用的操作_第5张图片

(4)例如查询产品分类表 id 小于 6 或 大于 60 的记录

SELECT *
FROM `sp_product_category`
WHERE product_cat_id < 6 || product_cat_id > 60

(5)例如查询字段填充NULL的

SELECT * FROM sp_product_category WHERE ename IS NULL

(6)例如查询字段填充NOT NULL的

SELECT * FROM sp_product_category WHERE ename IS NOT NULL

(7)例如查询产品分类表中product_cat_id 在5,6,7,8,10 集合中匹配

SELECT * FROM sp_product_category WHERE product_cat_id IN (5,6,7,8,10) 

(8)例如查询产品分类表中product_cat_id 不在 5,6,7,8,10 集合中匹配

SELECT * FROM sp_product_category WHERE product_cat_id NOT IN (5,6,7,8,10) 

(9)例如查询指定区间

SELECT * FROM student WHERE cj > 60 AND cj < 80
SELECT * FROM student WHERE cj BETWEEN 60 AND 80

(10) 使用like关键字进行模糊匹配

SELECT * FROM student WHERE name LIKE '%张'
SELECT * FROM student WHERE name LIKE '张%'
SELECT * FROM student WHERE name LIKE '%张%'

4.查询两张表

例如查询新闻表和新闻分类表

SELECT a.*,b.* FROM news a,newscate b WHERE a.newscate_id = b.newscate_id

5.关联查询

(1)例如查询新闻表和新闻分类表

SELECT a.*,b.* FROM news a JOIN newscate b ON a.newscate_id = b.newscate_id

6.常用函数

#查看mysql版本
SELECT VERSION();
#查看当前函数
SELECT NOW();
#取当前日期中的日
SELECT DAYOFMONTH(CURRENT_DATE); 
#取当前时间中的月
SELECT MONTH(CURRENT_DATE); 
#取当前时间中的年 
SELECT YEAR(CURRENT_DATE); 

7.计算器

#计算7乘以7
SELECT 7*7;

8.字符串组合

SELECT *,CONCAT('stu-',class_id,'-',no) FROM student

9.ORDER BY 指定排序字段

格式:SELECT * FROM 表名  ORDER BY 排序字段 ASC/DESC

SELECT * FROM news ORDER BY news_id DESC

10.GROUP BY 分组

格式:SELECT * FROM 表名 GROUP BY 字段

SELECT * FROM news GROUP BY newscate_id

11.使用LIMIT 限制记录数量

格式:SELECT * FROM 表名 LIMIT 0,20

0表示从第0条开始,一共20条

SELECT * FROM news LIMIT 0,20

12.使用SUM,COUNT,AVG

格式:SELECT SUM(field) FROM 表名

13.使用FLOOR,RAND,MD5

格式:SELECT RAND();     产生随机数

格式:SELECT FLOOR();       取整数

14.使用常量:CURRENT_TIME,TIMESTAMP,CURRENT_USER

格式:SELECT RAND();     产生随机数

格式:SELECT FLOOR();       取整数

 

补充内容

创建数据库并指定编码

CREATE DATABASE IF NOT EXISTS 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

事务处理

START TRANSACTION / BEGIN

sql语句1

sql语句2

COMMIT / ROLLBACK

mysql> use RUNOOB;
Database changed
mysql> CREATE TABLE runoob_transaction_test( id int(5)) engine=innodb;  # 创建数据表
Query OK, 0 rows affected (0.04 sec)
 
mysql> select * from runoob_transaction_test;
Empty set (0.01 sec)
 
mysql> begin;  # 开始事务
Query OK, 0 rows affected (0.00 sec)
 
mysql> insert into runoob_transaction_test value(5);
Query OK, 1 rows affected (0.01 sec)
 
mysql> insert into runoob_transaction_test value(6);
Query OK, 1 rows affected (0.00 sec)
 
mysql> commit; # 提交事务
Query OK, 0 rows affected (0.01 sec)
 
mysql>  select * from runoob_transaction_test;
+------+
| id   |
+------+
| 5    |
| 6    |
+------+
2 rows in set (0.01 sec)


########################################################################################
 
mysql> begin;    # 开始事务
Query OK, 0 rows affected (0.00 sec)
 
mysql>  insert into runoob_transaction_test values(7);
Query OK, 1 rows affected (0.00 sec)
 
mysql> rollback;   # 回滚
Query OK, 0 rows affected (0.00 sec)
 
mysql>   select * from runoob_transaction_test;   # 因为回滚所以数据没有插入
+------+
| id   |
+------+
| 5    |
| 6    |
+------+
2 rows in set (0.01 sec)
 
mysql>

关于索引

1.添加主键索引

格式:ALTER TABLE 表名 ADD PRIMARY KEY ( 字段)

ALTER TABLE  `ecs_user_account` ADD PRIMARY KEY (  `amount` )

2.添加唯一索引

格式:ALTER TABLE 表名 ADD UNIQUE ( 字段)

ALTER TABLE  `ecs_user_account` ADD UNIQUE (  `amount` )

3.添加常规索引

格式:ALTER TABLE 表名 ADD INDEX ( 字段)

ALTER TABLE  `ecs_user_account` ADD INDEX (  `amount` )

4.添加全文索引

格式:ALTER TABLE 表名 ADD FULLTEXT [索引名称] ( 字段)

ALTER TABLE  `ecs_user_account` ADD FULLTEXT [am] (  `amount` )

删除索引

格式:DROP INDEX 字段 ON 表名

DROP INDEX amount ON ecs_user_account;

 

维护命令

清空表

TRUNCATE 表名;

TRUNCATE user;

分析表

ANALYZE TABLE 表1,表2

ANALYZE TABLE profile ,user

检查表

CHECK TABLE 表1,表2

CHECK TABLE profile , user

优化表

OPTIMIZE TABLE 表1,表2 ###可以是多个

OPTIMIZE TABLE user,profile;

修复表

REPAIR TABLE 表1,表2

REPAIR TABLE profile , user

 

导入导出

1.导出

在mysql\bin 目录下 执行mysqldump.ext +参数

格式:MYSQLDUMP -h127.0.0.1 -uroot -proot 数据库名 > 路径+XXX.sql 

MYSQLDUMP.exe -h127.0.0.1 -uroot -proot news > D:\news.sql 

2.导入

在mysql 命令提示符下,(USE 数据库后)

格式:SOURCE  路径+XXX.sql 

SOURCE  D:\news.sql 

用户权限

GRANT 权限 ON 数据库.数据表 TO 用户名@登录主机 INDENTIFIED BY “密码”
例如:
添加一个新用户名为lijie,密码为字符串“jiege”。让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先要以root用户登录,然后输入以下命令:
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'lijie'@'%' INDENTIFIED BY 'jiege'

GRANT SELECT,UPDATE ON news_cmd.* TO  'lily'@'%' IDENTIFIED BY '123';

 

转载于:https://my.oschina.net/mofire/blog/1122133

你可能感兴趣的:(Mysql 常用的操作)