浅识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 配置流 ...
随机推荐
- VS2010 好用的javascript扩展工具
工具1) JScript Editor Extensions 折叠代码 下载地址: JScript Editor Extensions 工具2) Javascript parser 以树形方式查的代码 ...
- greenplum4.3.8.2安装
GREENPLUM总体结构: 数据库由Master Severs和Segment Severs通过Interconnect互联组成. Master主机负责:建立与客户端的连接和管理:SQL的解析并 ...
- vb 案例学习
' ================================================================================================== ...
- servlet 生命周期 与 初始化
一. 生命周期 Servlet 通过调用 init () 方法进行初始化. Servlet 调用 service() 方法来处理客户端的请求. Servlet 通过调用 destroy() 方法终止( ...
- leetcode_650. 2 Keys Keyboard_dp
https://leetcode.com/problems/2-keys-keyboard/ 初始一个A,两种操作,复制当前所有A,粘贴,问得到n个A最少需要多少步操作. class Solution ...
- 如何用SQL语句在指定字段前面插入新的字段?
如何用SQL语句在指定字段前面插入新的字段? 2007-10-17 09:28:00| 分类: 笔记|举报|字号 订阅 create proc addcolumn @tablename va ...
- 【Pytorch】关于torch.matmul和torch.bmm的输出tensor数值不一致问题
发现 对于torch.matmul和torch.bmm,都能实现对于batch的矩阵乘法: a = torch.rand((2,3,10))b = torch.rand((2,2,10))### ma ...
- [C#] 对List进行分组排序后输出
Student 类: public class Student { public int ID { get; set; } public string Name { get; set; } publi ...
- Bullet:MySQL增强半同步参数rpl_semi_sync_master_wait_point值AFTER_SYNC和AFTER_COMMIT的对比实验
MySQL 5.7.22启用增强半同步复制 MySQL对该参数值的描述 Semisync can wait for slave ACKs at one of two points, AFTER_SYN ...
- 邮箱地址自动提示jQuery插件
// mailAutoComplete.js v1.0 邮箱输入自动提示// 2010-06-18 v2.0 使用CSS class类代替CSS对象,同时增强代码可读性// 2010-06-18 v2 ...