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. Java核心技术梳理-异常处理

    一.引言 异常总是不可避免的,就算我们自身的代码足够优秀,但却不能保证用户都按照我们想法进行输入,就算用户按照我们的想法进行输入,我们也不能保证操作系统稳定,另外还有网络环境等,不可控因素太多,异常也 ...

  2. eclipse debug java 源码

    当我们需要研究java SE的时候,debug 源码是个不错的选择,可以帮助我们清楚了解java 封装jar包的具体实现. 因为oracle 提供的源码jar包为了节省空间,所以没有将调试信息一起打包 ...

  3. linux 安装 mongo 3.4

    要求:linux 安装 mongo 3.4 大体上,按照官网提供的方法来做. 系统是ubuntu 16.04 安装的是mongo3.4.8 社区版 1.         导入导入包管理系统使用的公钥 ...

  4. Vue+Bootstrap实现购物车程序(1)

    先看下案例效果:(简单的数量控制及价格运算) 代码: <!DOCTYPE html> <html> <head lang="en"> <m ...

  5. scikit-learn - 分类模型的评估 (classification_report)

    使用说明 参数 sklearn.metrics.classification_report(y_true, y_pred, labels=None, target_names=None, sample ...

  6. LeetCode136,137寻找只出现一次的数

    1.题目意思:在数组中,只有一个数字只出现了一次 其他的都出现了两次.找出那个只出现一次的数字. //利用位运算 异或 两个相同的数字异或为0 public int singleNumber(int[ ...

  7. EZOJ 宝石迷阵 建图+网络流匹配

    题面: 封印恶魔的地方可以看作是一个 n*m 的矩形,包含了 n*m 个祭坛,并且其 中有一些祭坛已经损坏了. 如果 i+j 为偶数,那么第 i 行第 j 列的祭坛只要没有损坏,就一定会封印有一个恶魔 ...

  8. 笔试算法题(14):整数二进制表示中的1 & 判定栈的push和pop序列是否对应

    出题:输入一个整数,要求计算此整数的二进制表示中1的个数 分析: 如果整数表示为k,当其是负数的时候,使用1<<i分别检测k的每一位:当其位整数的时候,则k/2表示将其二进制表示右移一位, ...

  9. centos6 rpm安装mysql(5.5版本)包括 error : Failed dependencies:libaio的解决办法.

    1.先在/opt目录下放了两个rpm包 2.先看系统中是否有其他版本的mysql的rpm包 rpm -qa | grep -i mysql 命令结果如下图: 如果没有此步跳过,否则执行一下命令将其删除 ...

  10. mysql jdbc驱动与java 版本对应关系

    当使用某些密码套件时,Connector/J5.1需要JRE 1.8.x才能使用SSL/TLS连接到MySQL 5.6,5.7和8.0.