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. ECMAScript6之箭头函数

    2015年6月17日,ECMAScript 6发布正式版本,即ECMAScript 2015. 函数作为js语言中的一等公民.自然Es6中推出的箭头函数(=>)也是备受瞩目的.那我们接下来看下传 ...

  2. php中字符与字节的区别

    字符: 字符是可使用多种不同字符方案或代码页来表示的抽象实体.例如,Unicode UTF-16 编码将字符表示为 16 位整数序列,而 Unicode UTF-8 编码则将相同的字符表示为 8 位字 ...

  3. Java快速读取大文件

    Java快速读取大文件 最近公司服务器监控系统需要做一个东西来分析Java应用程序的日志. 第一步探索: 首先我想到的是使用RandomAccessFile,因为他可以很方便的去获取和设置文件指针,下 ...

  4. informix数据库的日志

    看到一句sql,没见过: CREATE TABLE aaad ( chianm ), course ), score INTEGER ) IN adbs EXTENT SIZE LOCK MODE R ...

  5. cksum - 一个文件的检查和以及字节数

    SYNOPSIS(总览) ../src/cksum [OPTION]... [FILE]... DESCRIPTION(描述) 输出CRC(循环冗余校验码)检查和以及每个FILE的字节数. --hel ...

  6. java_tcp_简单示例

    package netProgram; import java.io.DataOutputStream; import java.io.IOException; import java.net.Ser ...

  7. spark版本不支持(降版本打包)

    在做项目的时候代码已经更新为hadoop 2.7  spark 2.1 scala 2.11.8版本,但是服务器版本使用的是hadoop2.6 spark1.6 以及scala2.10.6版本,,主程 ...

  8. ActiveX控件获取不到对象属性或者方法的原因分析

    1.找不到调用的DLL或程序: 2.调用控件方法名称,与定义的函数名称不符合: 3.如果是网站网页调用ActiveX,检查控件是否添加安全对象: 4.如果是网站网页调用ActiveX,检查网页是否加入 ...

  9. Oracle存储过程和程序包

    一.为什么要用存储过程? 如果在应用程序中经常需要执行特定的操作,可以基于这些操作简历一个特定的过程.通过使用过程可以简化客户端程序的开发和维护,而且还能提高客户端程序的运行性能. 二.过程的优点? ...

  10. 小程序input自动聚焦拉起键盘

    微信官方提供了两种自动聚焦的方法 1,auto-focus 接受boolean值:默认为false:只需设置为true即可 自动聚焦,拉起键盘:不过官方的提示即将废弃,所以能不用还是不要用 2,foc ...