浅识MySQL
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的更多相关文章
- 浅识mysql主键
primary key:主键,又叫主键约束. primary key在表中是唯一代表一条记录的.primary key可以是1列,或者多列组合而成的. 如何查看一个表的主键是什么,举个例子: desc ...
- 浅谈mysql主从复制的高可用解决方案
1.熟悉几个组件(部分摘自网络)1.1.drbd —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID" ...
- 浅谈mysql innodb缓存策略
浅谈mysql innodb缓存策略: The InnoDB Buffer Pool Innodb 持有一个存储区域叫做buffer pool是为了在内存中缓存数据和索引,知道innodb buffe ...
- 浅谈mysql配置优化和sql语句优化【转】
做优化,我在这里引用淘宝系统分析师蒋江伟的一句话:只有勇于承担,才能让人有勇气,有承担自己的错误的勇气.有承担错误的勇气,就有去做事得勇气.无论做什么事,只要是对的,就要去做,勇敢去做.出了错误,承担 ...
- 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载
浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...
- 浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景
浅谈Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁 ...
- 浅谈MySQL存储引擎-InnoDB&MyISAM
存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的.每一种存储引擎都有它的优势和劣势,本文只讨论最常见 ...
- 重新学习MySQL数据库6:浅谈MySQL的中事务与锁
『浅入深出』MySQL 中事务的实现 在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇 ...
- 浅谈MySQL数据库基本操作
数据库配置 通过配置文件统一配置的目的:统一管理 服务端(mysqld) .客户端(client) 配置了 mysqld(服务端) 的编码为utf8,那么再创建的数据库,默认编码都采用utf8 配置流 ...
随机推荐
- ECMAScript6之箭头函数
2015年6月17日,ECMAScript 6发布正式版本,即ECMAScript 2015. 函数作为js语言中的一等公民.自然Es6中推出的箭头函数(=>)也是备受瞩目的.那我们接下来看下传 ...
- php中字符与字节的区别
字符: 字符是可使用多种不同字符方案或代码页来表示的抽象实体.例如,Unicode UTF-16 编码将字符表示为 16 位整数序列,而 Unicode UTF-8 编码则将相同的字符表示为 8 位字 ...
- Java快速读取大文件
Java快速读取大文件 最近公司服务器监控系统需要做一个东西来分析Java应用程序的日志. 第一步探索: 首先我想到的是使用RandomAccessFile,因为他可以很方便的去获取和设置文件指针,下 ...
- informix数据库的日志
看到一句sql,没见过: CREATE TABLE aaad ( chianm ), course ), score INTEGER ) IN adbs EXTENT SIZE LOCK MODE R ...
- cksum - 一个文件的检查和以及字节数
SYNOPSIS(总览) ../src/cksum [OPTION]... [FILE]... DESCRIPTION(描述) 输出CRC(循环冗余校验码)检查和以及每个FILE的字节数. --hel ...
- java_tcp_简单示例
package netProgram; import java.io.DataOutputStream; import java.io.IOException; import java.net.Ser ...
- spark版本不支持(降版本打包)
在做项目的时候代码已经更新为hadoop 2.7 spark 2.1 scala 2.11.8版本,但是服务器版本使用的是hadoop2.6 spark1.6 以及scala2.10.6版本,,主程 ...
- ActiveX控件获取不到对象属性或者方法的原因分析
1.找不到调用的DLL或程序: 2.调用控件方法名称,与定义的函数名称不符合: 3.如果是网站网页调用ActiveX,检查控件是否添加安全对象: 4.如果是网站网页调用ActiveX,检查网页是否加入 ...
- Oracle存储过程和程序包
一.为什么要用存储过程? 如果在应用程序中经常需要执行特定的操作,可以基于这些操作简历一个特定的过程.通过使用过程可以简化客户端程序的开发和维护,而且还能提高客户端程序的运行性能. 二.过程的优点? ...
- 小程序input自动聚焦拉起键盘
微信官方提供了两种自动聚焦的方法 1,auto-focus 接受boolean值:默认为false:只需设置为true即可 自动聚焦,拉起键盘:不过官方的提示即将废弃,所以能不用还是不要用 2,foc ...