ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL数据库基础

2021-07-09 10:05:22  阅读:203  来源: 互联网

标签:匹配 name runoob 数据库 基础 数据表 MySQL where select


一、数据库

1.创建数据库

create database 数据库名;

2.删除数据库

drop database 数据库名;

3.选择数据库

use 数据库名;

二、数据表

1.数据类型

1)数值型

类型用途
tinyint小整数值
smallint大整数值
mediumint大整数值
int或integer大整数值
bigint极大整数值
float单精度浮点型
double双精度浮点型
decimal小数值

2)日期和时间类型

类型用途
date日期值
time时间值或持续时间
year年份值
datetime混合日期和时间值
timestamp混合日期和时间值,时间戳

3)字符串类型

类型用途
char定长字符串
varchar变长字符串
tinyblob不超过255个字符的二进制字符串
tinytext短文本字符串
blob二进制形式的长文本数据
text长文本数据
mediumblob二进制形式的中等长度文本数据
mediumtext中等长度文本数据
longblob二进制形式的极大文本数据
longtext极大文本数据

2.创建数据表

create table 数据表名 (列名 列类型 auto_increment primary_key,列名 列类型);

3.删除数据表

drop table 数据表名;

4.数据表操作

1)插入数据

insert into 数据表名 (列1名,列2名,列3名)
values (列1数据,列2数据,列3数据,),(列1数据,列2数据,列3数据),(列1数据,列2数据,列3数据);

2)删除数据

delete from 数据表名 [where 条件]

3)更新数据

update 数据表名 set 列1=新数据,列2=新数据
[where 条件]

4)查询数据

select 查询列1,查询列2
from 表名
[where 查询条件]
[limit 查询条数]
[offset 数据偏移量]
[order 排序方式]

5.单表查询

1)where子句

在where中写入查询的条件,可以使用and或者or来连接多个查询条件。

操作符描述
=两边值相等
<>,!=两边值不相等
>左边值大于右边值
<左边值小于右边值
>=左边值大于等于右边值
<=左边值小于等于右边值

操作实例:查询用户表中名称为“张三”的用户

select * from user where username='张三'

2)like子句

在like子句中使用%来表示任意字符,如果没有%,like子句与符号=的效果是一样的。

操作实例:查询用户表中姓“”的用户数据

select * from user where username='张%'

3)union 操作符

union操作符用于连接两个select语句的结果,将结果放到一个结果集合中。多个select语句会删除重复的数据。

数据表Websites

idnameurlalexacountry
1Googlehttps://www.gogole.cm/1USA
2淘宝https://www.taobao.com/13CN
3菜鸟教程http://www.runoob.com/4689CN
4微博http://weibo.com20CN
5Facebookhttps://www.facebook.com/3USA
7stackoverflowhttp://stackoverflow.com/0IND

数据表apps

idapp_nameurlcountry
1QQ_APPhttp://im.qq.com/CN
2微博APPhttp://weibo.com/CN
3淘宝APPhttps://www.taobao.com/CN

union实例:去除重复查询结果

select country from Websites
union
select country from apps
order by country;

查询结果

country
CN
IND
USA

union all 实例:保留重复查询结果

select country from Websites
union all
select country from apps
order by country;

带有where的union all 实例:选出两张表中为“CN”的数据

select country,name from Websites
where country='CN'
union all
select country,app_name from apps
where country='CN'
order by country;

查询结果

countryname
CN淘宝
CNQQ APP
CN菜鸟教程
CN微博 APP
CN微博
CN淘宝 APP

4)order by排序

排序方式有两种ascdesc默认排序方式asc

select 列1,列2,列3 from 表1,表2
order by 列1[asc [desc]],[列2,[asc [desc]]]

5)group by分组

select column_name,function(column_name)
from table_name
where coulmn_name operator value
group by column_name;

function:可选count计数、sum求和、avg平均值

数据表employee_tbl

idnamedatesingin
1小明2021-04-221
2小王2021-04-203
3小丽2021-04-192
4小王2021-04-074
5小明2021-04-114
6小明2021-04-042

执行查询

select name,count(*) from emplpyee_tbl
group by name;

查询结果

namecount(*)
小丽1
小明3
小王2

执行查询

select name,count(singin) as singin_count
from employee_tbl
group by name with rollup;

查询结果

namesingin_count
小丽2
小明7
小王7
NULL16

6.多表查询

1)join连接的使用

  • inner join(内连接,或等值连接):获取里那个表中字段匹配关系的记录。
  • left join(左连接):获取左表所有记录,即使右表没有相对应匹配的记录。
  • right join(右连接):与left join相反,用于获取右表所有记录,即使左表没有对应匹配的记录

数据表tcount_tb1

runoob_authorrunoob_count
菜鸟教程10
RUNOOB.COM20
Google22

数据表runoob_tbl

runoob_idrunoob_titlerunoob_authorsubmission_date
1学习 PHP菜鸟教程2017-04-12
2学习 MySQL菜鸟教程2017-04-12
3学习 JavaRUNOOB.COM2015-05-01
4学习 PythonRUNOOB.COM2016-03-06
5学习 CFK2017-04-04

执行操作

select a.runoob_id,a.runoob_author,b.runoob_count from runoob_tbl a inner join tcount_tbl b
on a.runoob_author = b.runoob_author;

查询结果

a.runoob_ida.runoob_authorb.runoob_count
1菜鸟教程10
2菜鸟教程10
3RUNOOB.COM20
4RUNOOB.COM20

以上SQL等价于

select a.runoob_id,a.runoob_author,b.runoob_count
from runoob_tbl a,tcount_tbl b
where a.runoob_author = b.runoob_author;

7.NULL值处理

当比较当前字段是否为NULL时,=!=操作符是无效的,所以我们采用以下方式比较字段是否为NULL。

  • is null:当前列的值是否是NULL,运算符返回true
  • is not null:当列的值不为NULL,运算符返回true
  • <=>:比较操作符(不同于=运算符),当比较的两个值相等或者都为NULL时返回true。

8.正则表达式

MySQL中使用regexp操作符来进行正则表达式匹配

模式描述
^匹配输入字符串的开始位置。
如果设置了RegExp对象的Multline属性,^也匹配’\n’或‘\r’之后的位置。
$匹配输入字符串的结束位置。
如果设置了RegExp对象的Multline属性,$也匹配’\n’或‘\r’之前的位置。
.匹配除’\n’之外的任何单个字符。要匹配包括’\n’在内的任何字符,请使用像’[\n]'的模式
[…]字符集合。匹配所包含的任意一个字符。例如’[abc]‘可以匹配’plain‘中的’a’。
[^…]负值字符集合。匹配未包含的任意字符。例如,’[^abc]‘可以匹配‘plain’中的‘p’。
p1|p2|p3匹配p1或p2或p3。例如,‘z|food’能匹配’z’或‘food’。’(z|f)ood’则匹配’zood’或‘food’。
*匹配前面的子表达式零次或多次。例如,zo*能匹配’z’以及’zoo’。*等价于{0,}。
+匹配前面的子表达式一次或多次。例如,‘zo+‘能匹配‘zo’以及’zoo’,但不能匹配’z’。+等价于{1,}。
{n}n是一个非负整数。匹配确定的n次。例如,'o{2}‘不能匹配’Bob’中的‘o’,但是能匹配’food’中的两个o。
{n,m}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。

实例操作

匹配st开头的所有数据

select name from person_tbl where name regexp '^st'

匹配ok结尾的所有数据

select name from person_tbl where name regexp 'ok$'

查找name字段中以元音字符开头或以’ok’字符串结尾的所有数据:

SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

标签:匹配,name,runoob,数据库,基础,数据表,MySQL,where,select
来源: https://blog.csdn.net/qq_44408913/article/details/118598543

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有