MySQL学习之路1

最近开始系统的学习MySQL了,每个阶段都把自己觉得重要的东西记录下来。

目前使用的版本是8.0.13

下载链接:https://dev.mysql.com/downloads/windows/installer/8.0.html

使用的图形化工具是Navicat,数据库管理工具推荐使用mysql administrator

有兴趣的可以看看mysql源码:https://github.com/mysql/mysql-server

下面进入主题

一.数据库操作

1.链接数据库

mysql -h 主机名 -u 用户名 -p

通过控制台进入后如下图:

2.创建新数据库test

create database test; (注意每个执行语句都已;结尾)

3.使用数据库test

use test;

4.查看所有数据库名

show databases;

5.显示操作错误或警告

show errors;

show warnings;

6.显示操作关键字的用法

如:help show 显示所有show语句用法;

help create 显示所有create语句用法。

二.创建表

1.创建新表person(后面都已此表作为实例)

create table `person` (
  `id` int(10) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `age` int(10) DEFAULT NULL,
  `birth` date DEFAULT NULL,
  `sex` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`int`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

其中:

id为主键,表示人物id;

name为人物名称;

age为人物年龄;

birth为人物出生日期;

sex为人物性别;0-男 1-女

存储引擎为InnoDB,默认编码为utf8

2.查看所有表名称

show tables;

show也可以用来显示表列

show columns from person;

原理同desc person一致!

执行后结果如下图:

3.显示创建表的MySQL语句

show create table person;

三.插入数据

1.单条插入

INSERT INTO `person` VALUES (1, 'aa', 10, '2010-01-01', 0);
INSERT INTO `person` VALUES (2, 'bb', 20, '2015-05-05', 1);
INSERT INTO `person` VALUES (3, 'cc', 30, '2013-03-03', 0);
INSERT INTO `person` VALUES (4, 'dd', 40, '2018-08-08', 1);

2.多条插入

INSERT INTO `person` VALUES (1, 'aa', 10, '2010-01-01', 0),(2, 'bb', 20, '2015-05-05', 1),(3, 'cc', 30, '2013-03-03', 0),(4, 'dd', 40, '2018-08-08', 1);

3.插入某个字段

insert INTO `person`(`id`) VALUES (5);

其它字段已默认值插入

四.检索数据

1.单条检索

select name from person;

2.多条检索

select id,name,birth from person;

3.全部检索

select * from person;

4.去重检索

select distinct sex from person;

5.限制查询

1) select * from person limit 2;

查询前2行数据

2) select * from person limit 1,2;

查询重第2行开始后2行的数据,limit 后的1是索引,即0代表第1行

3) select * from person limit 2 offset 1;

原理同2)一致

6.使用完全限定名检索

当同时检索两个表并且有相同字段时,需要将字段名加上限定

select person.name from test.person;

结果同1)一致,这里表名也可以加限定

7.排序检索

select * from person order by age;

注:

1)如果需要按多个列排序,则以,分开对应字段即可;

2)默认排序是asc,可以省略,如果想要降序,则在后面添加desc

3)如果多个列都要降序的话,则每个字段后都必须添加desc

4)order by和limit可同时使用

select * from person order by age desc limit 2;

8.过滤检索

1.where

select * from person where id > 1;

注:查询条件较多时,最好添加()

2.between

select * from person where age between 10 and 20;

3.判断NULL

select * from person where name is not null;

4.in

select * from person where name in(2, 1);

注:

1)in功能与or相当,且比or执行快一些,更直观

2)in可以与not同时使用

5.like

select * from person where name like 'a%';

注:

1)%---表示任意字符出现任意次数

2)_---表示任意字符出现1次

6.正则表达式

6.1 基本使用

select * from person where birth regexp '2015';

注:

1)'.'---表示匹配任意字符

2)regexp后面的字符串表示若该字段包含它就满足条件

6.2'|' 表示or的意思

select * from person where birth regexp '2015|2010';

6.3 []的使用

select * from person where birth regexp '201[05]-0[15]-0[15]';

select * from person where birth regexp '201[3-5]-0[3-5]-0[3-5]';

3-5表示匹配范围是3-5

6.4特殊字符

如果要查询包含字符'.',则需要在'.'前加上'\\';

'\\'也用来引用元字符(具有特殊含义的字符),如下:

 6.5匹配字符类

预定义字符集,即字符类,如下所示:

6.6多实例匹配

有时候需要对匹配的数目进行更强的控制,则需要重复元字符完成,如下:

select * from person where name regexp '[:alpha:]{2}';

6.7定位符

1)'^'表示必须从开头匹配

2)'$'表示必须从结尾匹配

6.8其它

正则表达式还可以实现其它功能,如想判断莫字符串是否包含数字,如下:

select 'asd' regexp '[0-9];

返回0则表示不包含,返回1则表示包含

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值