文章目录
SQL--数据库的操作DDL---操作数据库DDL---操作表DML-增删改查DQL-对表数据基础查询Navicat的安装使用(MySQL图形化界面)数据类型使用命令查看当前数据库的存储位置SQL–数据库的操作
DDL—操作数据库
查询SHOW DATABASES;
创建
创建数据库:
CREATE DATABASE 数据库名称;
创建数据库(判断,如果不存在就创建)
CREATE DATABASE IF NOT EXISTS 数据库名称;
删除
删除数据库
DROP DATABASE 数据库名称
删除数据库(判断,如果存在就删除)
DROP DATABASE IF EXISTS 数据库名称;
使用数据库
查看当前使用的数据库:
SELECT DATABASE();
使用数据库:
USE 数据库名称;
DDL—操作表
创建(Create)创建表的语法:
CREATE TABLE 表名(字段名1 数据类型1,字段名2 数据类型2,...字段名n 数据类型n);
注意:在创建数据的时候最后一个是不能够在末尾添加逗号的!!!
查询(Retrieve)
查询表
查询当前数据库下所有的表名称
SHOW TABLES;
查询表结构信息(并非是表的数据):
DESC 表名称;
修改(Upd ate)
1.修改表名:
ALTER TABLE 表名 RENAME TO 新的表名;
2.添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
3.修改数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型
4.修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
5.删除列
ALTER TABLE 表名 DROP 列名;
删除(Delete)
1.删除表
DROP TABLE 表名;
2.删除表时判断表是否存在,再进行删除
DROP TABLE IF EXISTS 表名;
DML-增删改查
添加(insert)1.给指定的列添加数据
INSERT INTO 表名1(列名1,列名2,...) VALUES(值1,值2,...);
2.给全部列添加数据
INSERT INTO 表名 VALUES(值1,值2,...);
3.批量添加数据
INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...) ...; INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;#批量添加列是需要全部数据都添加,否则会出现值不匹配
4.查询表中的所有数据:
SELECT * FROM 表名;
修改(update)
修改表数据
UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件];#如果不添加条件,所有的数据都会被修改
删除(delete)
删除表数据
DELETE FROM 表名 [where 条件];#如果不添加条件,则会将所有的特定的数据删除
DQL-对表数据基础查询
基础查询1.查询多个字段
SELECT 字段列表 FROM 表名;SELECT * FROM 表名;#查询所有数据
查询表中相关列的数据
2.去除重复记录
在表中可能出现一些重复的记录,所以我们需要将重复的去掉,比如查询同班同学的所在省份,相同的就可以去除
SELECT DISTINCT 字段列表 FROM 表名;
示例:
3.起别名
AS: AS 也可以省略
条件查询以及别名的设置:
如下图所示,假如图中有不知道的字段名,可以更改名字:
改名前:
改名后:
写法1:
写法2:
条件查询(WHERE)
1.条件查询语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件
示例:在student表中查询相关的数据,如下图所示:
总:
分组查询(GROUP BY)
分组查询语法:
select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];
注:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义!
举例:
正如上图所示,女同学的平均分不一定都是深圳女孩,男同学也不一定都是北京男孩。
where和having的区别:
1.执行时机不一样:where是分组之前进行限定,不满足where条件,不能参与到分组,而having是分组之后对结果进行过滤。
2.可判断的条件不一样:where不能对聚合函数进行判断,而having可以。
执行顺序:where>聚合函数>having
聚合函数
1.聚合函数:将一列数据作为一个整体,进行纵向计算。
2.聚合函数分类:
3.聚合函数语法:
select 聚合函数名(列名) from 表;
注意:null值不参与所有聚合函数计算!!!
排序查询(ORDER BY)
排序查询语法:
select 字段列表 from 表名 order by 排序字段名1 [排序方式1],排序字段名2 [排序方式2]...;
排序方式:
1.ASC:升序排序(默认值)----从小到大排序
2.DESC:降序排列-----从大到小排序
在排序不指定时,默认就是ASC!!!
注意:如果有多个排序条件,当前方的条件值一样时,才会根据第二条进行排序,否则第二条语句不会被执行!
分页查询(LIMIT)
1.分页查询语法
select 字段列表 from 表名 limit 起始检索 , 查询条目数;
起始索引:从0开始
计算公式:起始索引=(当前页码-1)*每页显示的条数
tips(各个数据库中的分页不太一样,MySQL用的是limit,其他的如下所示):
1.分页查询limit是MySQL数据库的方言;
2.Oracle分页查询使用rownumber;
3.SQL server分页查询使用top。
Navicat的安装使用(MySQL图形化界面)
下载可在百度中搜索Navicat官网进行下载!!!
官网下载地址:Navicat官网
Navicat的使用:
点击查看
数据类型
MySQL支持多种类型,可以分为三类:1.数值
2.日期
3.字符串
常用数据类型解析:
int举例:
age int;
char举例:
name char(10) 如果名字超过10位就会报错,比如说存入"李梅",这里存储了两个字符,后面的就会用空格来补齐。
varchar举例:
name varchar(10) 如果名字超过10位就会报错。 如果名字超过10位就会报错,比如说存入"李梅",这里会计算原始数据的长度,根据长度来进行存储。
所以char存储的性能会要高一些,varchar存储的性能较低。char存储的长度是固定的,如果字符长度不够,就会用空格来补齐,如果超出,就会报错;varchar的长度在存储前会对原始数据进行计算,根据长度来进行存储。
总结:
char性能较高于varchar;
char会造成空间的浪费,varchar节约空间。
double举例:
score double(总长度,小数点后保留2位小数),比如成绩位:0-100,后面小数不会变的是2,可以写为:score double(5,2);
date举例(年月日):
birthday date;
使用命令查看当前数据库的存储位置
一、当前使用的数据库位置查询
1.打开dos窗口(cmd);
2.登录MySQL,使用自己设置的密码登录后输入命令:
show variables like '%datadir%';
二、数据库的版本查询
mysql --version
或者
mysql -V
以上两种方式都可以进行查询!!!