MySQL从基础到进阶

零基础入门MySQL

一、安装MySQL后的配置

1、通过cmd操作MySQL

找到windows里的环境变量配置窗口,在PATH处添加mysql的安装路径,要一直到bin,如:D:\mysql-8.0.15-winx64\bin;

2、通过可视化界面操作MySQL

可以安装MySQLworkbench

二、MySQL基础使用方法

1、启用命令行

打开cmd输入:

mysql -uroot -p

按照提示输入密码进入mysql

2、创建数据库

create database datawhale;
show databases;

3、创建表

基本知识

创建mysql数据表需要以下信息:

  • 表名
  • 表字段名
  • 定义每个表字段
    • 数据类型
    • 数据约束
      • 非空约束: NOT NULL
      • 主外键约束:主键PRIMARY KEY 外键 REFERENCES + 另一个表的主键
      • 检查约束:CHECK (column_name>m)

常用数据类型

字符串数据类型 说明
CHAR(n) 0-255字节 定长字符串
VARCHAR(n) 0-255字节 变长字符串
TEXT 0-65 535字节 长文本数据
BLOB 0-65 535字节 二进制形式的长文本数据

注:

  • CHAR 和 VARCHGAR 不同之处在于 MySQL 数据库处理这个指示器的方式: CHAR 把这个大小视为值的大小,长度不足的情况下就用空格补足。VARCHAR 类型把它视为最大值并且只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值。所以短于指示器长度的 VARCHAR 类型不会被空格填补,但长于指示器的值仍然会被截短。
  • 因为 VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用 VARCHAR 类型可以大大地节约磁盘空间、提高存储效率。
数值型数据类型 说明
INT 4 字节大整数值
FLOAT(M,D) 4 字节 单精度
DOUBLE(M,D) 8 字节 双精度
DECIMAL (M,D) 自定义精度

注:

  • (M,D) 宽度指示器M和小数点指示器D
  • DECIMAL 数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数方法作为选择参数。精度在这里指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的位数。比如语句 DECIMAL(7,3) 规定了存储的值不会超过 7 位数字,并且小数点后不超过 3 位。
日期型数据类型 格式 示例 用途
DATE YYYY-MM-DD 2018-12-31 日期值
TIME HH:MM:SS 10:59:59 时间值或持续时间
YEAR YYYY 2018 年份值
DATETIME YYYY-MM-DD HH:MM:SS 2018-12-31 10:59:59 混合日期和时间值
TIMESTAMP YYYYMMDD HHMMSS 2018-12-31 10:59:59 混合日期和时间值,时间戳

总结一下,建表命令为:

CREATE TABLE table_name (
column_name1 column_type NOT NULL PRIMARY KEY,
column_name2 column_type NOT NULL REFERENCES TABLE2.KEY,
column_name3 column_type NOT NULL,CHECK(column_name3>0)
column_name4 column_type NOT NULL,
column_name5 column_type);

4、插入数据

插入单行数据

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );

插入多行数据

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUE
                       ( value1, value2,...valueN ),
                       ( value1, value2,...valueN ),
                       ;

其实value和values都可以插入多行,只是前者效率更高

5、项目实战

1、查找重复的电子邮箱
创建和插入表

CREATE TABLE email (
ID INT NOT NULL PRIMARY KEY,
Email VARCHAR(255) NOT NULL
);

INSERT INTO email
                       VALUE
                       ( '1','[email protected]'),
                       ( '2','[email protected]' ),
                       ( '3','[email protected]' )
                       ;

编写一个 SQL 查询,查找 email 表中所有重复的电子邮箱。

select distinct(a.email) 
from email a , email b  
where a.Email=b.Email and a.id<>b.id;

或者:

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

2、查找大国
创建和插入表

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);

如果一个国家的面积超过 300 万平方公里,或者(人口超过 2500 万并且 gdp 超过 2000 万),那么这个国家就是大国家。
编写一个 SQL 查询,输出表中所有大国家的名称、人口和面积。

select name,population,area from world
where area>3000000 or population >25000000 and gdp>20000000;

在MySQL中,比较运算符优先级:
NOT>AND>OR
不过加上括号总没错:)

你可能感兴趣的:(MySQL)