MySQL 基础 常用 语句(增删改查)

MySQL 基础

MySQL 基础原理及常用语句


常见的关系型数据库

  1. IBM的DB2;
  2. 甲骨文的Oracle、MySQL;
  3. 微软的SQL和Access;
  4. Sybase的Sybase;

MySQL 常用存储引擎

常用存储引擎

  1. InnoDB存储引擎
  2. MyISAM存储引擎
  3. MEMORY存储引擎

引擎对比

数值类型

下面是数据类型的详解表;
在这里插入图片描述
字符串类型
时间

复合类型

在这里插入图片描述

数据库用户管理

Ø 连接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=10SELECT * 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 ;
  • 7
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Restart629

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值