MySQL必知必会之1
来源:互联网 发布:删除的sql语句怎么写 编辑:程序博客网 时间:2024/05/19 19:59
数据库
数据库:保存有组织的数据的容器(通常是一个文件或一组文件)。
表:某种特定类型数据的结构化清单。
模式(schema):关于数据库和表的布局以及特性的信息。
列:字段
数据类型:每个表列都有相应的数据类型,限制该列存储的数据。
行:表中记录
主键(primary key):某一列,唯一区分表中的每一行。
SQL:结构化查询语言
使用MySQL
基于客户机-服务器
连接MySQL:主机名、端口、用户名、密码
使用数据库
USE crashcourse;
显示所有数据库
SHOW DATABASES;
显示数据库中的表
SHOW TABLES;
显示表列
SHOW COLUMNS FROM customers;等同于DESC customers;DESCRIBE customers;
显示广泛的服务器状态信息
SHOW STATUS;
显示创建数据库或表的MySQL语句
SHOW CREATE DATABASE crashcourse;SHOW CREATE TABLE customers;
显示授权用户(所有用户或特定用户)的安全权限。
SHOW GRANTS;
显示服务器错误或警告消息
SHOW ERRORS;SHOW WARNINGS;
检索数据–SELECT
检索单个列
SELECT prod_name FROM products;
检索多个列
SELECT prod_id, prod_name, prod_price FROM products;
检索所有列
SELECT * FROM products;
检索不同的行—DISTINCT
SELECT DISTINCT vend_id FROM products;
限制结果
前5行SELECT prod_name FROM products LIMIT 5;指定开始行和行数SELECT prod_name FROM products LIMIT 5,5;注:检索出的第1行是行0LIMIT 3,4 从行3开始,取4行
使用完全限定的列名、表名
SELECT products.prod_name FROM crashcourse.products;
排序检索数据(ORDER BY)
排序检索数据(字母顺序)
SELECT prod_name FROM products ORDER BY prod_name;
按多个列排序
首先按价格排序,再按名称排序SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;
指定排序方向
降序SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC;以prod_price降序,以prod_name升序(ASC)SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;
找出最昂贵的物品值
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1;
过滤数据
使用WHERE子句
SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;
注:同时使用ORDER BY 和 WHERE 子句时,应该让ORDER BY 位于WHERE 之后。
WHERE子句操作符:
=、<>、!= 等于/不等于<、<=、>、>=BETWEEN
检查单个值
SELECT prod_name, prod_price FROM products WHERE prod_price <= 10;
范围值检查
SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
空值检查
SELECT prod_name FROM products WHERE prod_price IS NULL;
数据过滤
AND操作符
SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;
OR操作符
SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 OR prod_price = 10;
注:AND计算优先级高于OR.
同时使用AND和OR操作符的WHERE子句,应该使用圆括号分组。
IN 操作符—指定条件范围
找出供应商1002、1003制造的所有产品SELECT prod_name, prod_price FROM products WHERE vend_id IN (1002, 1003) ORDER BY prod_name;等同于WHERE vend_id = 1002 OR vend_id 1003IN 与 ALLIN 比OR执行更快最大优点,可以包含其他SELECT语句
NOT操作符
SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN (1002, 1003) ORDER BY prod_name;
使用通配符进行过滤
LIKE操作符
百分号%:任何字符出现任意次数,但是不能匹配NULL
区分大小写
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE 'jet%';'%anvil%''s%e'
下划线(_)通配符
只匹配单个字符
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '_ ton anvil';
使用正在表达式进行搜索
基本字符匹配
找到prod_name包含文本1000的所有行SELECT prod_nameFROM productsWHERE prod_name REGEXP '1000'ORDER BY prod_name;SELECT prod_nameFROM productsWHERE prod_name REGEXP '.000'ORDER BY prod_name;. 表示匹配任意一个字符
LIKE和REGEXP之间的重要差别:LIKE匹配列值整个串(只匹配部分不返回结果),而REGEXP匹配列值的子串。
匹配不区分大小写。
进行OR匹配
搜索多个串之一
SELECT prod_nameFROM productsWHERE prod_name REGEXP '1000 | 2000 | 3000'ORDER BY prod_name;
匹配几个字符之一
SELECT prod_nameFROM productsWHERE prod_name REGEXP '[123] Ton'ORDER BY prod_name;
可以得到结果
1 ton anvil
2 ton anvil
[^123]: 除了123外的字符
匹配范围
- 定义范围
[1-5]
[a-z]
SELECT prod_nameFROM productsWHERE prod_name REGEXP '[1-5] Ton'ORDER BY prod_name;
匹配特殊字符
匹配特殊字符,需要用\\
为前导
SELECT vend_nameFROM vendorsWHERE vend_name REGEXP '\\.'ORDER BY vend_name;
匹配字符类—表示集合
匹配多个实例
例
SELECT prod_nameFROM productsWHERE prod_name REGEXP '\\([0-9] sticks?\\)'ORDER BY prod_name;
结果可能是
TNT (1 stick)
例
匹配连在一起的4位数字
SELECT prod_nameFROM productsWHERE prod_name REGEXP '[[:digit:]]{4}'ORDER BY prod_name;也可使用WHERE prod_name REGEXP '[0-9][0-9][0-9][0-9]'
定位符
找到以一个数(包括小数点开始的数)开始的所有产品
SELECT prod_nameFROM productsWHERE prod_name REGEXP '^[0-9\\.]'ORDER BY prod_name;
^ 用在[]中表示反转集合,否则定位串的开始位置。
0 0
- MySQL必知必会之1
- MySQL必知必会之1-4
- MYSQL必知必会 之触发器
- MySQL必知必会之2
- MySQL必知必会之3
- MySQL必知必会之4
- MySQL必知必会之5
- mysql学习之--1、mysql的简介
- MySQL之介绍-1 MySQL简介
- MySQL必知必会之5-9
- MySQL必知必会之10-14
- MySQL必知必会之15-20
- MySQL学习之1安装
- mysql之架构介绍1
- MySQL之初步MySQL
- 【MySql】MySql之安装
- 【MySql】MySql之管理
- 【MySql】MySql之语句
- swap分区脚本
- tomcat配置
- 记录一次奇葩的websocket和tomcat7.0.75的bug
- Doxygen注释模板
- Boolan第一周---C++面向对象高级编程(上)
- MySQL必知必会之1
- 浅谈SVN钩子在研发流程管理中的应用
- 4.27
- CCF NOI1064 计算斐波那契第n项
- 1016. 部分A+B (15)
- c# 设置禁止改变窗体大小
- C++抽象编程——接口(5)——随机数算法
- matplotlib的基本用法(一)——figure的使用
- 使用Scala模拟简单的RPC通信,Socket编程