MySQL常用语句

#操作数据库

  ##创建数据库

CREATE DATABASE `dbName`;

  ##切换数据库

USE `dbName`;

  ##查看所有数据库

SHOW DATABASES;

  ##删除数据库(删除数据库、表、字段的时候用drop )

DROP DATABASE `dbName`;

#操作数据库表

  ##创建表

CREATE TABLE `TabName`(
      cid INT PRIMARY KEY AUTO_INCREMENT,
      cname VARCHAR(10)
    );

  ##查看表结构

desc 表名;

  ##添加表数据

    1. 语法一: into 表名 (列名1,列2...) values(值1,值2...),(值1,值2...)...;

INSERT INTO `tab1` (cid,cname) VALUES
(1,'name1'),
(2,'name2'),
(3,'name3');

    2. 语法二:insert into 表名(列2,列3) values(值2,值3..)...;  当主键有自动增长时,可以省略主键不写

INSERT INTO tab1(cname) VALUES ('name4');

    3. 语法三:insert into 表名 values(null,值2,值3....),(null,值2,值3..);  当主键有自动增长时,可以省略列名不写,但是要写出所有的值,主键写null

INSERT INTO tab1 VALUES (NULL,'name5');

      

  ##查看表数据

    1. 查看所有

SELECT * FROM tab1;

    2. 查看指定列

SELECT `cname` from tab1;

  ##删除表元素(删除表元素用delete或者truncate)

    语法一: delete from 表名 [where 条件]  删除表中元素,但是不重置主键的自动增长

DELETE FROM tab1 WHERE cname = 'name5';

    语法二: truncate table 表名;  删除表中元素并重置主键的自动增长

TRUNCATE TABLE `tabName`;

#操作表字段

  ##添加表字段

语法: alter table 表名 add 字段名 数据类型;
ALTER TABLE `tabName` ADD `field` VARCHAR(20);

  ##修改表字段

ALTER TABLE `tabName` CHANGE `oldField` `newField` INT;

  ##删除表字段

ALTER TABLE `tabName`DROP `fieldName`;

  


#操作字段约束 (总结规律:当涉及到修改表结构的时候,需要用到alter关键字)

  ##删除主键约束

    语法: TABLE 表名 DROP PRIMARY KEY;

ALTER TABLE `tab2 ` DROP PRIMARY KEY;

  ##设置主键约束

    语法: ALTER TABLE 表名 ADD PRIMARY KEY(列名);

ALTER TABLE `tab2 ` ADD PRIMARY KEY(`cid`);

  ##修改字段约束

    语法: ALTER TABLE 表名 MODIFY 字段 + 数据类型 + 约束名;

ALTER TABLE tab2 MODIFY `cname` VARCHAR(10) NOT NULL;

  ##设置唯一约束

    语法: ALTER TABLE 表名 ADD UNIQUE(字段);

ALTER TABLE `product` ADD UNIQUE(pname);

#查询表数据

  ##注意##

    当你想要查询表中的部分字段,并且将该表起了个别名,那么在调用表中字段的时候,格式必须写为:别名.字段名

  千万不要写成:原表名.字段名  --> mysql数据库会报错

#正确的写法:
SELECT a.pid,a.pname,a.price FROM product AS a;

#错误的写法:
SELECT product.pid,product.pname,product.price FROM product AS a;


  ##过滤表数据 --> distinct

select distinct 要过滤的字段 from 表名;

  ##给表、字段起别名 --> As(可省略)

select * from `tabName` (as) `newTabName`;

  ##在查询语句中可以执行运算操作

  例: 查询商品表中所有商品,并将价格提高1000元
    select pname, price + 1000 (as) price from `product`;

  ##模糊查询 --> like + 条件(%或者 _)  _ : 一个下划线表示一个字符;   %: 表示多个字符 

  例: 查询商品表中名称带有'男装'的商品信息
    select * from `product where pname like '%男装%';
    select * from `product` where pname like '__男装';  //例如: 劲霸安装,一个下划线_ 表示一个字符

  ##排序查询 --> order by

select * from product order by price desc;  //按照降序顺序排序
select * from product order by price (asc)  //按照升序顺序排序 asc可以省略

  ##聚合函数查询 --> 对某列的数据按照特定的函数进行查询,返回一个单一的值, 忽略值为null的数据

#在test表中插入三条数据,其中最后一条的price值为null
INSERT INTO test VALUES(NULL,20),
(NULL,300),
(NULL,NULL);
#使用聚合函数count进行查询
SELECT COUNT(price),COUNT(id) FROM test;
#查询结果如下:

    ###常用的聚合函数有以下几种:

      count: 查询非空值的字段数量

      sum: 求和

      max,min: 最大值、最小值

      avg: 平均值

  ##分组查询 --> group by

SELECT * FROM `tabName` GROUP BY `field`;  //select * from  表名 group by 字段名;

  

  ##where和having的区别

    where 用于分组前的条件过滤

    having 用于分组后的条件过滤

  ##分页查询 --> limit

#首先查询所有数据
SELECT * FROM gjp_ledger;
结果如下:   

#分页查询-查询前5条数据
SELECT * FROM gjp_ledger LIMIT 5;

 #查询第二页数据,每页5条数据
 SELECT * FROM gjp_ledger LIMIT 5,5;

 #查询第三页的数据,每页5条数据
 SELECT * FROM gjp_ledger LIMIT 10,5;

规律总结:

  查询前n条数据(包含第n条)

    select * from 表名 limit n;

  查询第m页,每页n条数据(不包含第(m-1)*n 条数据)

    select * from 表名 m,n;

  ##多表联查

    一对多关系:

    ###添加外键约束

#添加外键约束
#语法:alter table 从表名 add (constraint 给外键起个别名)foreign key(从表中要做外键的字段) references 主表(主键);
ALTER TABLE product ADD CONSTRAINT products_fk FOREIGN KEY (category_id) REFERENCES products(psid);

    ###删除外键约束

#删除外键约束
#语法:alter table 从表名 drop foreign key 外键别名;  
ALTER TABLE product DROP FOREIGN KEY products_fk;  // 删除的外键名要使用别名,写外键的字段名删除不掉

     多对多关系:

    创建一个中间表,使用两个表的主键作为中间表的外键

CREATE TABLE middle(
products_id INT,
orders_id INT,
FOREIGN KEY(products_id) REFERENCES products(pid),
FOREIGN KEY(orders_id) REFERENCES orders(oid)
);

 

  ##多表查询---内连接、外链接查询

  1. select * from 表1,表2;  会产生笛卡尔积

    笛卡尔积:表1数据数量 * 表2数据数量

  2. 内连接查询  //只能查看到有关联的数据

    select * from 表1 inner join 表2 on 表1.主键 = 表2.外键;  //显式内连接

    select * from 表1,表2 where 表1.主键 = 表2.外键;  //隐式内连接

  3. 外连接查询 -->左外连接、右外连接

    select * from 左表 left  outer join 右表 on  ...;  /左做连接,查询结果会列出所有匹配的数据,以及没有匹配项的会用null来显示

  

#外连接 --> 左外连接  以左表作为匹配项展示数据
SELECT * FROM products ps LEFT OUTER JOIN product p ON ps.psid=p.category_id;

  

#外连接 --> 右外连接  以右表作为匹配项展示数据
SELECT * FROM products ps RIGHT OUTER JOIN product p ON p.category_id = ps.psid;

  

浅识MySQL的更多相关文章

  1. 浅识mysql主键

    primary key:主键,又叫主键约束. primary key在表中是唯一代表一条记录的.primary key可以是1列,或者多列组合而成的. 如何查看一个表的主键是什么,举个例子: desc ...

  2. 浅谈mysql主从复制的高可用解决方案

    1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID" ...

  3. 浅谈mysql innodb缓存策略

    浅谈mysql innodb缓存策略: The InnoDB Buffer Pool Innodb 持有一个存储区域叫做buffer pool是为了在内存中缓存数据和索引,知道innodb buffe ...

  4. 浅谈mysql配置优化和sql语句优化【转】

    做优化,我在这里引用淘宝系统分析师蒋江伟的一句话:只有勇于承担,才能让人有勇气,有承担自己的错误的勇气.有承担错误的勇气,就有去做事得勇气.无论做什么事,只要是对的,就要去做,勇敢去做.出了错误,承担 ...

  5. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

  6. 浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

    浅谈Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景   Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁 ...

  7. 浅谈MySQL存储引擎-InnoDB&MyISAM

    存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的.每一种存储引擎都有它的优势和劣势,本文只讨论最常见 ...

  8. 重新学习MySQL数据库6:浅谈MySQL的中事务与锁

    『浅入深出』MySQL 中事务的实现 在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇 ...

  9. 浅谈MySQL数据库基本操作

    数据库配置 通过配置文件统一配置的目的:统一管理 服务端(mysqld) .客户端(client) 配置了 mysqld(服务端) 的编码为utf8,那么再创建的数据库,默认编码都采用utf8 配置流 ...

随机推荐

  1. Android学习笔记(十四) Handler理论补充

    一.如何下载Android源码 在SDK Manager中选中Sources for Android SDK. 二.ThreadLocal初步介绍 1)执行ThreadLocal对象(static f ...

  2. 迅为IMX6开发板支持4G全网通模块GPS模块

    IMX6开发板特点 处理器:IMX6开发板支持4G全网通模块GPS模块. 核心板配置:2GB DDR3内存  16GB EMMC 存储,扩展引脚多达320个:运行温度-20 ℃到+80 ℃之间. 核心 ...

  3. (转)淘淘商城系列——VMware添加已配置好的虚拟机

    http://blog.csdn.net/yerenyuan_pku/article/details/72802323 我们有时候会碰到虚拟机环境搭建特别麻烦,很容易出错的问题,而这时我们又刚好有别人 ...

  4. Jmeter重要组件介绍(一)

    一.常用的取样器 二.常用的逻辑控制器 三.前置处理器 四.后置处理器 五.断言 六.定时器 七.配置元件 八.监听器

  5. apropos - 在 whatis 数据库中查找字符串

    总览 (SYNOPSIS) apropos keyword ... 描述 (DESCRIPTION) apropos 命令在一些特定的包含系统命令的简短描述的数据库文件里查找关键字, 然后把结果送到标 ...

  6. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (一) -- 安装 AMQP 扩展和 Direct Exchange 模式

    Windows 安装 amqp 扩展 RabbitMQ 是基于 amqp(高级消息队列协议) 协议的.使用 RabbitMQ 前必须为 PHP 安装相应的 amqp 扩展. 下载相应版本的 amqp ...

  7. vlmcsd-1111-2017-06-17

    Source and binaries: http://rgho.st/6c6R7RwMZ   全部编译好了 https://www.upload.ee/files/7131474/vlmcsd-11 ...

  8. Redux的中间件Middleware不难,我信了^_^

    Redux的action和reducer已经足够复杂了,现在还需要理解Redux的中间件.为什么Redux的存在有何意义?为什么Redux的中间件有这么多层的函数返回?Redux的中间件究竟是如何工作 ...

  9. linux通用makefile文件

    OUTPUT_DLL := libmy.so LIBS :=-L../public/lib/x64/linux -lzookeeper_mt -lcurl \ -lfreetype -lopencv_ ...

  10. 怎样提高DB2存储过程性能

    高性能的SQL过程是数据库开发人员所追求的,我将不断把学到的,或在实际开发中用到的一些提高SQL过程性能的技巧整理出来,温故而知新. 1,在只使用一条语句即可做到时避免使用多条语句 让我们从一个简单的 ...