第一部分:
mysql的查询操作(select 语句)
1.查询全部
格式:select * from 表名
例如查询 管理员表
SELECT * FROM admin;
2.指定字段
(1)格式:select field1,field2 from 表名
SELECT news_id,title FROM news
例如查询新闻表
(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
(2)例如查询产品分类表中product_cat_id 大于30的记录
SELECT * FROM `sp_product_category` WHERE product_cat_id >30
(3)例如产品分类表中product_cat_id 大于30 小于 40 的记录
SELECT *
FROM `sp_product_category`
WHERE product_cat_id >30
AND product_cat_id <40
(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';