MySQL基础

MySQL是一种关系型数据库 (RDBMS:Relational Database Management System)

RDBMS 术语

数据库:数据库是一些关联表集合
数据表:表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列: 一列(数据元素) 包含了相同类型的数据(eg.邮政编码的数据)
行:一行(=元组,一条记录)是一组相关的数据(eg.一条用户订阅的数据)
冗余:存储两倍数据(冗余降低了性能,但提高了数据的安全性)
主键:主键是唯一的。一个数据表中只能包含一个主键。用户使用主键查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

命令语句

登录MySQL
$ mysql -u root -p密码

退出MySQL服务器
exit;

显示所有数据库
show databases;

创建数据库
create database 数据库名称;

切换数据库
use 所要切换的数据库的名称;

显示数据库中的所有表
show tables;

创建数据表
create table 数据表名称 (
列名称 数据类型,
列名称 数据类型,
列名称 数据类型,

列名称 数据类型
);

查看数据表结构
describe 数据表名称;
desc 数据表名称;

查询表
select * from 数据表名称;
select * from 数据表名称 where < condition1 > (and/or) < condition2 >…; //按条件查询
select * from 数据表名称 where binary < condition1 > (and/or) < condition2 >…; //binary区分大小写

like语句
select * from 数据表名称 where 字段名 like 对应值(子串)

A: <%> 包含零个或多个字符的任意字符串:
1、like ‘Mc %’ 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
2、like ’ % inger’ 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
3、like’ %en% ’ 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。

B:_(下划线) 任何单个字符:
like ’ ** _ ** heryl ’ 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。

C:[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符:
1、like ’ [CK]ars[eo]n ’ 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
2、like’[M-Z]inger’ 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。

D:[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符:
like ’ M[^c]% ’ 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。

E: 它同于DOS命令中的通配符,代表多个字符:*
c*c代表cc,cBc,cbc,cabdfec等多个字符。

F:?同于DOS命令中的?通配符,代表单个字符 :
b?b代表brb,bFb等

G:# 大致同上,不同的是代只能代表单个数字。k#k代表k1k,k8k,k0k 。

eg1,查询name字段中包含有“明”字的。

select * from table1 where name like ‘%明%’

eg2,查询name字段中以“李”字开头。

select * from table1 where name like ‘李*’

eg3,查询name字段中含有数字的。

select * from table1 where name like ‘%[0-9]%’

eg4,查询name字段中含有小写字母的。

select * from table1 where name like ‘%[a-z]%’

eg5,查询name字段中不含有数字的。

select * from table1 where name like ‘%[!0-9]%’

select * from table1 where name like ’ *明 * ’ //列出来的是所有的记录

select * from table1 where name like ‘%明%’ //列出来的是name字段中含有“明”的记录

union语句
union :用于将不同表中相同列中查询的数据展示出来(不包括重复数据)
select 列名称 from 表名称
union
select 列名称 from 表名称
order by 列名称; // order by 根据指定的列对结果集进行排

union all :用于将不同表中相同列中查询的数据展示出来(包括重复数据)
select 列名称 from 表名称
union all
select 列名称 from 表名称
order by 列名称;// order by 根据指定的列对结果集进行排

带有where的union语句
select 列名称 from 表名称
where 列名称 = ‘对应值’
union all
select 列名称 from 表名称
where 列名称 = ‘对应值’
order by 列名称;

排序
select 列名称 from 表名称
(where 列名称 = ‘对应值’
union all
select 列名称 from 表名称
where 列名称 = ‘对应值’)
order by 列名称 (asc升序/desc降序)<默认升序>;

分组
eg. from菜鸟教程

mysql> SELECT * FROM employee_tbl;
±—±-------±--------------------±-------+
| id | name | date | singin |
±—±-------±--------------------±-------+
| 1 | 小明 | 2016-04-22 15:25:33 | 1 |
| 2 | 小王 | 2016-04-20 15:25:47 | 3 |
| 3 | 小丽 | 2016-04-19 15:26:02 | 2 |
| 4 | 小王 | 2016-04-07 15:26:14 | 4 |
| 5 | 小明 | 2016-04-11 15:26:40 | 4 |
| 6 | 小明 | 2016-04-04 15:26:54 | 2 |
±—±-------±--------------------±-------+
6 rows in set (0.00 sec)

mysql> SELECT name, COUNT(* ) <count 函数>FROM employee_tbl GROUP BY name;
±-------±---------+
| name | COUNT(*) |
±-------±---------+
| 小丽 | 1 |
| 小明 | 3 |
| 小王 | 2 |
±-------±---------+
3 rows in set (0.01 sec)

with rollup 实现在分组统计数据基础上再进行相同的统计
mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
±-------±-------------+
| name | singin_count |
±-------±-------------+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| NULL | 16 |
±-------±-------------+
4 rows in set (0.00 sec)

函数 : select coalesce(a,b,c);
说明:如果anull,则选择b;如果bnull,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。

增加数据
insert into 数据表名称 values ('value1 ', 'value2 ', ‘value3’ , … , NULL);

修改数据
update 数据表名称 set 要改的列名称 = ‘新数据’
update 数据表名称 set 要改的列名称 = ‘新数据’ where 索引关键词 = ‘索引关键词的数据’ ;
//可以同时更新一个或多个

删除数据
delete from 数据表名称 where 要删除的列名称(索引关键词) = ‘索引关键词的数据’;
//如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除

删除表
drop table 表名称;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值