2021-05-18

MySQL基础语法

目录

MySQL基础语法

一.Navicat与MySQL简单介绍

1.MySQl环境变量的配置

2.了解navicat

二.sql基础语法之运算符

1.比较运算符

2.算数运算符

3.逻辑运算符

三.sql基础语法之语句

1.select语句

2.select distinct语句 

3.where子句 

4.ordered by语句

5.insert into语句

6.update语句

7.delete语句 

8.join on语句(联结表)

9.as语句(别名)

10.group by语句(数据分组处理)

11.having子句(数据过滤) 

12.create database语句(创建表)

三.sql基础语法之函数

1.聚集函数

2.文本处理函数(字符串处理函数)

3.时间处理函数


一.Navicat与MySQL简单介绍

1.MySQl环境变量的配置

这里https://blog.csdn.net/weixin_39874809/article/details/113195934有详细的环境变量配置过程,这里就不再赘述

2.了解navicat

Navicat是一套快速的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。

二.sql基础语法之运算符

1.比较运算符

sql运算符之比较运算符
=等于
>大于
<小于
>=大于等于
<=小于等于
<>(!=)不等于

2.算数运算符

sql运算符之算术运算符
+
-
*
/
%取模

3.逻辑运算符

sql运算符之逻辑运算符
andand左右两边布尔表达式都为ture时返回true
oror左右两边布尔表达式都为false时返回false
not取反布尔表达式

 

三.sql基础语法之语句

写在前面:sql中的命令语句对于大小写字母并不敏感

(蓝色字体为sql中的关键字)

首先笔者要导入excel表格以便于代码演示:

导入表格 hero.csv(该表格有4列50行,这里只展示了前10行

数据简要介绍:id栏为编号,hero为电影正面角色名字,actor为演员名字,film为电影名

导入表格movie.csv (该表格有6列280行,这里只展示前10行

数据简要介绍:rank栏为编号,title为电影名,distributor为电影导演,year为电影出品年份,gross为上映当年的电影票房,adjusted为至今电影总票房

导入表格villain.csv(该表格有4列50行,这里只展示了前10行)

数据简要介绍:id栏为编号,villain为电影反派角色名字,actor为演员名字,film为电影名

 

1.select语句

结构:

select column_name,column_name
from table_name;

如果要选取一个表单中所有列可以使用*来代替:select * from table_name;

作用:

提取文档中的某几列

代码演示1(挑取hero表格中 hero和actor两列):
 

代码演示2(挑取hero表中全部列)

 

2.select distinct语句 

结构:
select distinct column_name,column_name
from table_name;

作用:

提取文档某几列中不相同的属性

代码演示(挑取hero表actor和filml两列中的不相同属性值): 

 

3.where子句 

结构:

select column_name,column_name
from table_name
where column_name operator value;

作用:

提取满足指定条件的文档属性

 代码演示(挑取movie表格中出品电影年份大于1950年且小于1990年的元素,展示其电影名,年份和导演)

 

4.ordered by语句

 结构:

select column_name,column_name
from table_name
ordered by column_name,column_name ASC|DESC;

作用:

用于对结果集按照一个列或者多个列进行排序。

默认按照升序对记录进行排序,如果需要按照降序对记录进行排序,您可以使用 DESC 关键字

 代码演示(挑取movie表格中出品电影title,distributor和year大于1950且小于1990元素,并按照年份的降序对结果进行排序)

 

5.insert into语句

结构:

(1)第一种结构:无需指定要插入数据的列名,只需提供被插入的值

insert into table_name
values (value1,value2,value3,...);

(2) 第二种结构:指定列名及被插入的值

insert into table_name (column1,column2,column3,...)
values (value1,value2,value3,...);

作用:

用于向表中插入新记录

  代码演示

不指定数据列名时(在表hero中插入电影“kill bill”):

注意:这里的 “51”不可省略,否则回报 Column count doesn't match value count:

指定数据列名时(在表movie中同样插入电影“kill bill”):

 

6.update语句

结构:

update table_name
set column1=value1,column2=value2,...
where some_column=some_value;

作用:

更新表中已存在的记录

   代码演示(表movie电影名为“kill bill”的元素更新为“The Shawshank Redemption”)

 

7.delete语句 

结构:

delete from table_name
where some_column=some_value;
作用:

删除表中的行

    代码演示(清除之前更新的电影名为“The Shawshank Redemption”表单元素)

 

8.join on语句(联结表)

结构:

(1)内联结inner join):挑取所选表中所有符合条件的行,并联结成一张新表

(2)外联结outer join):【1】左联结:left joinleft outer join)挑取所选表中所有符合条件的行,同时与左侧表所有行联结成一张新表

                                              【2】右联结“right joinright outer join)挑取所选表中所有符合条件的行,同时与右侧表所有行联结成一张新表

(3)全联接full join(相当于left join 与 right join的结合)):将所选表中所有符合条件的行连同所选表所有行一同组成一张新表

注意:一些版本sql不支持全联结,这里理解就好

(4)交叉联结cross join(相当于所选表之间进行矩阵乘法)):将所选表的所有行与余下每一张表的所有行进行联结,成为一张新表

文氏图演示:

作用:

join语句一般关联于on子句;根据where子句中列出的条件,联结两张或多张表。

联结表详情请参考链接:https://blog.csdn.net/weixin_42423817/article/details/113320670

代码演示: 

挑取既扮演过正面角色同时也扮演过反派角色的电影演员组成一张新表

(1)内联结:

(2)外联结:

【1】左联结:


【2】右联结:

(3)交叉联结:

 

9.as语句(别名)

结构:

(1)列别名:

select column_name as alias_name
from table_name;

(2)表别名:

select column_name(s)
from table_name as alias_name;

作用:

为表名称或列名称指定别名 

代码演示: 

(1)给列起别名

(2)给表起别名:

 

10.group by语句(数据分组处理)

结构:

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

作用:

结合聚合函数,根据一个或多个列对结果集进行分组

代码演示(跟据电影当年票房收入(gross)分组计算每个导演(distributor)带来的平均票房收益): 

根据电影出品至今总票房收入(adjusted)分组计算每个导演(distributor)带来的平均票房收益:

 

11.having子句(数据过滤) 

结构:

select column_name, aggregate_function(column_name)

from table_name WHERE column_name operator value

group by column_name

having aggregate_function(column_name) operator value;

作用:

同where子句作用,专门用于数据处理

代码演示(在原有数据分组处理的基础上添加having子句,挑取除当年电影票房大于20,小于80的数据): 

在原有数据分组处理的基础上添加having子句,挑取除从电影出品至今总电影票房大于200,小于800的数据

 

12.create database语句(创建表)

结构:

create DATABASE dbname;

作用:

用于创建数据库

三.sql基础语法之函数

1.聚集函数

 

sql聚集函数
avg()返回数值列的平均值
count()返回匹配指定条件的行数
first()返回指定的列中第一个记录的值
last()返回指定的列中最后一个记录的值
max()和min()返回指定列的最大值(最小值)
sum()返回数值列的总数

2.文本处理函数(字符串处理函数)

sql字符转换函数
ascii()返回字符串最左端字符的ASCII
char()ASCII值转换为字符
lower()和upper()字符串全部转换为小写字母(大写字母)
str()数值型数据转换为字符型数据
sql去空格函数
ltrim()去掉字符串左侧空格
rtrim()去掉字符串右侧空格

 

sql取子串函数
left(string,number)返回字符串stirng左数number个字符组成的字符串
right(string,number)返回字符串string右数number个字符组成的字符串
substring(string,position,number)返回字符串string左数第position位置开始number个字符组成的字符串

 

sql字符处理函数
replace(string1,string2,string3)string3替换string1中的子串string2
replicate(string,number)返回重复string字符串number次的字符串
reverse(string)颠倒字符串string的在字符排列顺序
space(number)返回number长度的空字符串,若number为负值,则返回null
stuff(string1,position,number,string2)string2替换string1中从position开始的number个字符的字符串

 

对于字符串的处理,笔者在这里用代码简单演示:
首先挑取既扮演过正面角色同时也扮演过反派角色的电影演员:

比对数据笔者选择电影名为“The Terminator” villain表中actor元素使用right()函数left()函数输出演员的firstnamefamilyname:
 

再使用upper()函数和lower()函数firstname转为小写familyname转为大写:

对于关与字符串处理的其他函数读者可以自行尝试

3.时间处理函数

sql日期处理函数
year()/month()/day()返回日期中的年份部分/月份部分/天数部分
dateadd(date,number)返回date加上额定日期number的结果
datediff(date1,date2)返回date1和date2之间的差值1
date(date)返回日期时间的日期部分
curtime()/curdate()/now()返回当前系统时间部分/日期部分/所有部分

代码演示(显示当前系统时间):

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个数据可以使用Python进行解析和处理。可以按照以下步骤进行: 1. 将数据分割成每个数据项。 ``` data_items = data.split(',') ``` 2. 对于每个数据项,将其按#分割成四个小项,并存储到一个列表中。 ``` data_list = [] for item in data_items: item_list = item.split('#') data_list.append(item_list) ``` 3. 对于每个小项,进行相应的类型转换。 ``` for item in data_list: item[0] = int(item[0]) # 题号转换为整数 item[1] = datetime.datetime.strptime(item[1], '%Y-%m-%d %H:%M:%S') # 时间转换为datetime类型 if item[2] != '': # 操作类型转换为整数 item[2] = int(item[2]) item[3] = str(item[3]) # 科目转换为字符串类型 ``` 4. 可以按照需要对数据进行进一步处理,如按照题号、时间等进行排序、筛选等操作。 完整的Python代码如下: ``` import datetime data = '''1#2021-05-18 14:31:55##初级会计实务,2#2021-05-18 14:31:57#12#初级会计实务,2#2021-05-18 14:32:08##初级会计实务,3#2021-05-18 14:32:09#12#初级会计实务,4#2021-05-18 14:32:34#12#初级会计实务,4#2021-05-18 14:32:45##初级会计实务,5#2021-05-18 14:32:46#12#初级会计实务,5#2021-05-18 14:32:57##初级会计实务,6#2021-05-18 14:33:00#12#初级会计实务,7#2021-05-18 14:33:44#12#初级会计实务,7#2021-05-18 14:34:42##初级会计实务,8#2021-05-18 14:34:43#12''' # 将数据分割成每个数据项 data_items = data.split(',') # 对于每个数据项,将其按#分割成四个小项,并存储到一个列表中 data_list = [] for item in data_items: item_list = item.split('#') data_list.append(item_list) # 对于每个小项,进行相应的类型转换 for item in data_list: item[0] = int(item[0]) # 题号转换为整数 item[1] = datetime.datetime.strptime(item[1], '%Y-%m-%d %H:%M:%S') # 时间转换为datetime类型 if item[2] != '': # 操作类型转换为整数 item[2] = int(item[2]) item[3] = str(item[3]) # 科目转换为字符串类型 print(data_list) ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值