欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql学习

程序员文章站 2022-06-01 08:49:33
...

mysql安装

按照如下地址一步一步操作:https://zhuanlan.zhihu.com/p/37152572

mysql客户端navicat for mysql安装

按照如下地址一步一步操作:https://zhuanlan.zhihu.com/p/37155150

数据库(DB)

将大量的数据保存起来通过计算机加工而成的可以进行高效访问的数据集合;

关系型数据库(RDB)

采用由行和列组成的二维表来管理数据;

即垂直方向在关系数据库中称为字段代表保存在表中的数据项目;

即水平方向在关系数据库中称为记录,相当于一条数据;

主键

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组能唯一标识一条记录,该属性组就可以成为一个主键 ;

外键

用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如A表中的一个字段时B表的主键,那么他就可以是A表的外键主键

sql

是为数据库而开发的语言

mysql

即为关系数据库管理系统(RDBMS)

select from:查询语句

mysql> select *
    -> from product;

±-----------±-------------±-------------±-----------±---------------±------------+
| product_id | product_name | product_type | sale_price | purchase_price | regist_date |
±-----------±-------------±-------------±-----------±---------------±------------+
| 0001 | T恤衫 | 衣服 | 1000 | 500 | 2009-09-20 |
| 0002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 |
| 0003 | 运动T恤 | 衣服 | 4000 | 2800 | NULL |
| 0004 | 菜刀 | 厨房用具 | 3000 | 2800 | 2009-09-20 |
| 0005 | 高压锅 | 厨房用具 | 6800 | 5000 | 2009-01-15 |
| 0006 | 叉子 | 厨房用具 | 500 | NULL | 2009-01-15 |
| 0007 | 擦菜板 | 厨房用具 | 880 | 790 | 2008-04-28 |
| 0008 | 圆珠笔 | 办公用品 | 100 | NULL | 2009-11-11 |
±-----------±-------------±-------------±-----------±---------------±------------+
8 rows in set

去重语句

distinct:删除选中字段的重复数据

mysql> select distinct product_type
    -> from product;

±-------------+
| product_type |
±-------------+
| 衣服 |
| 办公用品 |
| 厨房用具 |
±-------------+
3 rows in set

前N个语句

mysql> select *
    -> from product
    -> limit 2,3;

±-----------±-------------±-------------±-----------±---------------±------------+
| product_id | product_name | product_type | sale_price | purchase_price | regist_date |
±-----------±-------------±-------------±-----------±---------------±------------+
| 0003 | 运动T恤 | 衣服 | 4000 | 2800 | NULL |
| 0004 | 菜刀 | 厨房用具 | 3000 | 2800 | 2009-09-20 |
| 0005 | 高压锅 | 厨房用具 | 6800 | 5000 | 2009-01-15 |
±-----------±-------------±-------------±-----------±---------------±------------+
3 rows in set
从第3条开始后面3条记录

case…end判断语句

select sum(case when product_type='衣服'
								then sale_price else 0 end) as sum_price_clothes
from product;

可计算商品种类为衣服的销售单价

筛选语句where

筛选制动条件的记录

select *
from product
where product_type='衣服';

分组语句 group by

顾名思义就是将表进行分组

select product_type,count(*)
from product
group by product_type;

排序语句order by

将表按照指定顺序排序
降序

select *
from product
order by sale_price desc;

升序

select *
    from product
    order by sale_price asc;

函数

时间函数
当前日期

select current_date;

当前时间

select current_time;

当前日期和时间

select current_timestamp;

数值函数

+,-,*,/,abs(绝对值),mod(求余),round(四舍五入)

字符串函数

||(拼接),length(字符串长度),lower(小写转换),replace(字符串替换),upper(大写转换),substring(字符串截取)

sql注释

书写在"--"之后,只能写在同一行
书写在“/*”和“*/”之间,可以跨行

sql代码规范

以分号结尾
sql语句不区分大小写
常数的书写方式是固定的
单词需要用半角空格或者换行来分隔

项目一:查找重复的电子邮箱

创建 email表,并插入如下三行数据 ±—±--------+ | Id | Email | ±—±--------+ | 1 | [email protected] | | 2 | [email protected] | | 3 | [email protected] | ±—±--------+
编写一个 SQL 查询,查找 Email 表中所有重复的电子邮箱
创建表

create table email
(id integer not null,
Email varchar(225) not null,
primary key (id));

插入数据

start transaction;
insert into email values ('1','[email protected]');
insert into email values ('2','[email protected]');
insert into email values ('3','[email protected]');

查询

select Email
from email
group by Email
having count(Email)>1;

项目二:查找大国

创建如下 World 表 ±----------------±-----------±-----------±-------------±--------------+ | name | continent | area | population | gdp | ±----------------±-----------±-----------±-------------±--------------+ | Afghanistan | Asia | 652230 | 25500100 | 20343000 | | Albania | Europe | 28748 | 2831741 | 12960000 | | Algeria | Africa | 2381741 | 37100000 | 188681000 | | Andorra | Europe | 468 | 78115 | 3712000 | | Angola | Africa | 1246700 | 20609294 | 100990000 | ±----------------±-----------±-----------±-------------±--------------+ 如果一个国家的面积超过300万平方公里,或者(人口超过2500万并且gdp超过2000万),那么这个国家就是大国家。 编写一个SQL查询,输出表中所有大国家的名称、人口和面积。
创建表

 CREATE TABLE World 
 ( name VARCHAR(50) NOT NULL,
  continent VARCHAR(50) NOT NULL,
   area INT NOT NULL, 
   population INT NOT NULL, 
   gdp INT NOT NULL );

插入数据

INSERT INTO World VALUES('Afghanistan','Asia',652230,25500100,20343000);
INSERT INTO World VALUES('Albania','Europe',28748,2831741,12960000);
INSERT INTO World VALUES('Algeria','Africa',2381741,37100000,188681000);
INSERT INTO World VALUES('Andorra','Europe',468,78115,3712000); 
INSERT INTO World VALUES('Angola','Africa',1246700,20609294,100990000);

查询

select name,population,area
from World
where area>3000000 or (population>25000000 and gdp>20000000);
相关标签: mysql学习