mysql 常用操作

数据库用户管理

Ø 连接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数据库中,使用ORDEY BY进行排序,使用关键字ASC进行升序排序,使用关键字DESC进行降序排序,:

(1)ORDEY BY column ASC:按某一字段进行升序排序,ASC可以省略不写;

    SELECT * FROM user ORDEY BY id ASC;
     #或者
    SELECT * FROM user ORDEY BY id;

(2)ORDEY BY column DESC:按某一字段进行降序排序,DESC不可以省略不写;

    SELECT * FROM user ORDEY BY id DESC;

(3)ORDEY BY column1,column2 DESC:按多个字段进行降序排序;

        SELECT * FROM user ORDEY 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 ;
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容

  • 此篇是为数据库小白入门而写的,介绍使用数据库的最基本也是最常用的一些操作。我也是在日常工作中东一点西一点学到的,难...
    松鼠的读书笔记阅读 2,208评论 0 4
  • 登录数据库 查看当前数据库的连接 导出数据库 还可以进一步导出表 导入数据库 shell 中执行sql语句 DDL...
    wayyyy阅读 275评论 0 0
  • 一:简介 主要想写一下常见的一些操作的原理,比如order by、group by、join、union等等; 二...
    joshuaXin阅读 458评论 0 0
  • 1.创建root用户的密码 mysqladmin -u root password "new_password";...
    华尔街的主导曲阅读 432评论 0 0
  • 1. 表复制 2. 函数 数学 聚合(常用于GROUP BY从句的SELECT查询中) 字符串函数 日期和时间函数...
    云三木阅读 158评论 0 0