Ø 连接MySQL
mysql -h主机地址 -u用户名 -p用户密码
Ø 新增用户
GRANT SELECT on 数据库.* to 用户名@登录主机 identified by “密码”
Ø 修改用户密码
UPDATE mysql.user SET authentication_string = PASSWORD('123456'), password_expired = 'N' WHERE User = 'shopdb' AND Host = 'localhost';
Ø查看数据库
SHOW databases;
Ø 创建数据库
CREATE DATABASE databaseName;
Ø 使用数据库
USE databaseName;
Ø 删除数据库
DROP DATABASE databaseName;
Ø创建表
CREATE TABLE user(
id int(10) unsigned not null auto_increment,
name varchar(25),
sex varchar(5),
age int(10),
password varchar(25),
primary key(id))engine=Innodb;
Ø 查看表结构
DESC tableName
Ø复制表
第一种方式:复制表结构、数据、主键、索引
#复制表结构、主键、索引,执行命令:
CREATE TABLE new_table like old_table;
#插入数据,执行命令:
INSERT into new_table SELECT * FROM old_table;
第二种方式:复制表结构、数据,不能复制主键、索引
#复制表结构、数据,执行命令:
CREATE TABLE new_table SELECT * FROM old_table;
#复制表结构,不复制数据,执行命令:
CREATE TABLE new_table SELECT * FROM old_table WHERE 0;
Ø 临时表和内存表
#创建临时表,命令执行:(temporary 临时的)
CREATE temporary TABLE tmp1(id int not null);
#创建内存表,命令执行:
CREATE TABLE tmp2(id int not null) ENGINE=MEMORY;
Ø 插入和查询
将一条数据插入到数据库里,可以使用命令:
INSERT INTO 表名(字段名,字段名) VALUES(值,值);
或者可以不指明表里的字段,但是值按字段的顺序插入,可以使用命令:
INSERT INTO 表名 VALUES(值,值);
查询数据,可以使用命令:
SELECT * FROM 表名;
或者查询指定字段,可以使用命令:
SELECT id FROM 表名;
使用WHERE条件语句来进行按条件查询,把某一列或者几列作为查询条件,可以使用命令:
SELECT * FROM 表名 WHERE id=10;
SELECT * FROM 表名 WHERE id=10 and name=’小明’;
Ø 修改记录
在MySQL里修改使用关键字UPDATE,执行命令。
UPDATE 表名 SET 字段=值,字段=值 WHERE 条件
UPDATE user SET name=’小明’,sex=’男’ WHERE id = 4;
Ø删除记录
在MySQL中删除数据可以使用DELETE关键字,执行命令:
DELETE FROM 表名 WHERE 条件
DELETE FROM user WHERE id=4;
Ø 对查询结果排序
在MySQL数据库中,使用ORDER BY进行排序,使用关键字ASC进行升序排序,使用关键字DESC进行降序排序,:
(1)ORDER BY column ASC:按某一字段进行升序排序,ASC可以省略不写;
SELECT * FROM user ORDER BY id ASC;
#或者
SELECT * FROM user ORDER BY id;
(2)ORDER BY column DESC:按某一字段进行降序排序,DESC不可以省略不写;
SELECT * FROM user ORDER BY id DESC;
(3)ORDER BY column1,column2 DESC:按多个字段进行降序排序;
SELECT * FROM user ORDER BY sex,age DESC;
Ø对查询结果分组
GROUP BY对查询结果分组是将查询结果按照1个或多个字段进行分组,字段值相同的为一组,GROUP BY可以用于单个字段和多个字段。
SELECT * FROM user GROUP BY sex;
group_concat(字段名)可以作为一个输出字段来使用,表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合。
SELECT sex,group_concat(name) FROM user GROUP BY sex;
Ø设置分组条件
HAVING 是用来设置分组条件的条件表达式,用来分组查询后指定一些条件来输出查询结果,WHERE语句在聚合前先筛选记录,也就是说作用在GROUP BY和HAVING字句前,而HAVING子句在聚合后对组记录进行筛选,HAVING只能用于GROUP BY。
SELECT sex,count(sex) FROM user WHERE age > 15 GROUP BY sex HAVING count(sex)>2;
Ø限制查询数量
LIMIT是用于限制查询的数量,常用于分页语句,LIMIT 子句可以被用于强制SELECT语句返回指定的记录数。LIMIT 接受一个或两个数字参数,参数必须是一个整数常量。
(1)如果只给定一个参数,它表示返回最大的记录行数目;
SELECT * FROM user LIMIT 6; #检索前6行记录
(2)如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目,初始记录行的偏移量是
0(而不是 1);
SELECT * FROM user LIMIT 2,5; #从第2条数据开始,检索出5条数据
Ø 设置主键
#创建表的时候,使用PRIMARY KEY添加主键:
CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name));
CREATE TABLE student(
id int not null,
name varchar(255) not null,
no int not null,
primary key(id))
ENGINE=Innodb DEFAULT CHARSET=utf8;
Ø设置复合主键
复合主键就是由多个字段组成的组建,就像开启宝藏的钥匙,往往会分成两把或者更多,当同时插入两把钥匙,才能开启宝藏的大门,复合主键也是这样,通过多个字段作为复合主键来确定唯一标识。
CREATE TABLE person(
id int not null,
name varchar(255) not null,
job varchar(255) not null,
primary key(id,name)) #置复合主键
ENGINE=InnoDB DEFAULT CHARSET=utf8;
Ø 添加字段
#添加一个手机号码(phone)新的字段到user表里,数据类型为字符串类型。
ALTER TABLE user add phone varchar(25) not Null;
Ø改变字段类型
#可以修改表字段的数据类型,将手机号码(phone)字符串类型修改为整型(int);
ALTER TABLE user modify phone int(25) not Null;
Ø 字段重命名
对于已经存在的表结构,如果想对表里的字段重命名,需要使用alter table来修改表里的字段,格式如下所示。
ALTER TABLE <表名> change <字段名> <字段新名称> <字段的类型>
ALTER TABLE user change phone telephone int(25);
MySQL查询使用关键字SELECT来进行查询,SELECT语句基本语法格式:
SELECT 查询内容
FROM 表名
WHERE 表达式
GROUP BY 字段名
HAVING 表达式
ORDEY BY 字段名
LIMIT 记录数
Ø条件查询过滤
条件查询过滤关键字:**AND、OR、IN、NOT IN、IS NULL、IS NOT NULL、BETWEEN AND;**按关键字可以进行条件查询过滤。
(1)AND(与):用AND进行查询的时候,查询出来的数据要求条件都得满足;
SELECT * FROM user WHERE age = 20 and name=‘kevin’;
(2)OR(或):用OR进行查询的时候,查询出来的数据只要求满足任意一个条件就可以查询出来;
SELECT * FROM user WHERE age = 20 or name=‘kevin’;
(3)IN(在范围内):用IN进行查询的时候,查询出来的数据在这个范围内;
SELECT * FROM user WHERE id in (3,5,7);
(4)NOT IN(不在范围内):用NOT IN进行查询的时候,查询出来的数据不在这个范围内;
SELECT * FROM user WHERE id not in(3,5,7);
(5)IS(为空):用IS
NULL进行查询的时候,是用来查询某字段为空时用is null,而不能使用"=null",因为mysql中的null不等于任何其他值,也不等于另外一个null,优化器会把"=null"的查询过滤掉而不返回任何数据;查询某字段为非空时使用is not null。
SELECT * FROM user WHERE name is null;
(6)BETWEEN AND(在…区间):用BETWEEN AND进行查询的时候,查询出来的数据是在这个区间;
SELECT * FROM user WHERE age between 10 and 20;
Ø模糊查询过滤
模糊查询过滤使用关键字LIKE进行查询;
(1)LIKE ’张%’:使用LIKE查询该字段以张开头的数据;
SELECT * FROM user WHERE name like ‘张%’;
(2)LIKE ’ %明’:使用LIKE查询该字段以明结尾的数据;
SELECT * FROM user WHERE name like ‘%明’
(3)LIKE ’ %明%’:使用LIKE查询该字段包含明的数据;
SELECT * FROM user WHERE name like ‘%明%’;
Ø字段控制查询过滤
字段控制查询过滤可以使用DISTINCT去除重复过滤、AS设置别名。
(1)DISTINCT:去除重复的列值;
SELECT distinct age FROM user;
(2)AS:可以设置列的别名、也可以省略AS来设置关键字;
SELECT name as 姓名 FROM user;
#或者
SELECT name 姓名 FROM user;
Ø AVG()函数
MySQL数据库的AVG函数是用来计算某一列的平均值,比如可以用在平均分数、平均薪资、平均年龄等等场景的使用。
SELECT avg(age) FROM user;
ØCOUNT()函数
# MySQL数据库的COUNT()聚合函数是用来计算表中记录的个数或者列中值的个数,计算内容由SELECT语句指定,例如要获取user表中age > 20 的个数。
SELECT count(*) FROM user WHERE age >20;
Ø MAX()/MIN()函数
MySQL数据库的MAX()聚合函数选取的数据中最大值,MIN()聚合函数选取的数据中最小值,比如可以获取年龄的最大值或者最小值。
SELECT max(age) FROM user ;
SELECT min(age) FROM user;
ØSUM()函数
MySQL数据库的SUM()聚合函数用来计算满足条件的某一列的总和,比如可以计算年龄的总和,或者可以计算男生年龄的总和,聚合函数都是可以进行设置别名的。
SELECT sum(age) FROM user ;