Mysql知识点个人整理
1.概念
数据库:保存有组织的数据的容器。
表: 某种特定类型数据的结构化清单
模式:关于数据库和表的布局和特性的信息?(有时指数据库)
主键: primary key 一个列或一组列,其值能唯一区分表中的每个行(满足:唯一性和不为NULL)
SQL: 结构化查询语言,与数据库通信的语言
MySQL: DBMS 数据库系统管理软件
注意点:
- MySQL不区分大小写,但将关键字大写易于阅读,对表名,数据库名,列名最好使用时保持大小写一致。
- 是否区分大小写,由数据库管理员在建立数据库时设置,Mysql通常默认不区分大小写。
2.基本语句练习
使用《MySQL必知必会》的样例表
show
use test; show tables; show create database test; show create table products; show status; show errors; show warnings;
- 选区products表的指定列,剔除重复行,保留从第三行起的接下来6行。
select distinct prod_Name, prod_id, prod_name from products limit 3,6;
- 在上一个操作之上加入排序,按价格降序排列,再按产品名称升序排列,同样取结果的第三行到第九行。
select distinct prod_name, prod_id, prod_price from products order by prod_price desc, prod_name limit 3,6;
- 查找顾客表,返回指定除email地址以外的用户:
select * from customers where cust_email is not 'rabbit@wascally.com';
注意:获得的结果不包括email值为NULL的用户,NULL在MySQL通常指未知,故在本次查询中不返回带NULL的结果项。‘数据库不知道他们是否匹配,因此在匹配过滤或匹配不过滤时不返回他们’。所以,在进行条件查询时,需要额外考虑是否返回NULL项:
- 查找顾客表,返回指定email地址以外以及未填写email地址的用户:
select * from customers where cust_email != 'rabbit@wascally.com' or cust_email is null;
- 【通配符】,查找所有email地址以‘rabb’开头的顾客的信息:
select * from customers where cust_email like 'rabb%';
%匹配任意个字符,‘_’匹配一个字符。
通配符一般不要处于搜索模式的开始处,会比较慢。
LIKE关键字必须对整个列值进行匹配,只需要部分值匹配可以使用正则表达式。
- 【正则表达式】查询产品名以JetPack开始,000结尾的产品信息,区分大小写。分别以LIKE关键字和正则表达式处理:
select * from products where prod_name like binary 'JetPack%000'; select * from products where prod_name regexp binary '^JetPack.*000$';