ICode9

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

MySQL

2022-07-14 10:04:44  阅读:161  来源: 互联网

标签:-- 数据库 MySQL 查询 字段名 表名 select


SQL

作用:

通过 SQL 语句我们可以方便的操作数据库中的数据、表、数据库。 SQL 是数据库管理系统都需要
遵循的规范。不同的数据库生产厂商都支持 SQL 语句,但都有特有内容。

语句分类:

1) DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等

DDL操作数据库:

创建数据库:
创建数据库
create database 数据库名;

判断数据库是否已经存在,不存在再创建数据库
create database if not exists 数据库名;

创建数据库并指定字符集
create database 数据库名 character set 字符集;

 

查看数据库

查看所有数据库
show databases;

查看某个数据库的定义信息
show create database 数据库名;

 

修改数据库

修改数据库字符集格式
alter database 数据库名 default character set 字符集;

 

删除数据库

删除数据库
drop database 数据库名;
判断数据库是否存在并删除存在的数据库
drop database if exists 数据库名;

 

使用数据库

查看正在使用的数据库
select database(); -- database()是 mysql 函数
​
使用/切换数据库
use 数据库名;

 

DDL操作表:

创建表

创建表的格式
CREATE TABLE 表名 (
字段名 1 字段类型 1,
字段名 2 字段类型 2
);
​
关键字说明:
​CREATE -- 表示创建
​TABLE -- 表示创建一张表

快速创建一个表结构相同的表
CREATE TABLE 新表名 LIKE 旧表名;

 

(MySQL数据类型:

)

查看表

查看某个数据库中所有的表
SHOW TABLES;
查看表结构
DESC  表名;
查看创建表的SQL语句(以SQL语句返回表结构)
SHOW CREATE TABLE 表名;

 

删除表

直接删除表
drop table 表名;
判断表是否存在并删除表
drop table if exists 表名;

 

修改表结构

添加表列
alter table 表名 add 列名 类型;
修改列类型
alter table 表名 modify 列名 新类型;
修改列名
alter table 表名 change 旧列名 新列名 类型;
删除列
alter table 表名 drop 列名;
修改字符集
alter table 表名 character set 字符集;
修改表名
rename table 表名 to 新表名;

 


2) DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等

添加表数据

插入全部字段
  所有的字段名都写出来
INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3);
​
  不写字段名
INSERT INTO 表名 VALUES (值 1, 值 2, 值 3…);
​
  插入部分数据
INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...);
没有添加数据的字段会使用 NULL
​
  关键字说明
INSERT INTO 表名 – 表示往哪张表中添加数据
(字段名 1, 字段名 2, …) -- 要给哪些字段设置值
VALUES (值 1, 值 2, …); -- 设置具体的值

-- 注意
1.值与字段必须对应,个数相同,类型相同
2.值的数据大小必须在字段的长度范围内
3.除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
4.如果要插入空值,可以不写字段,或者插入 null

 

删除表数据

不带条件删除数据(删除表中所有数据)
DELETE FROM 表名;
​
带条件删除数据(删除指定条件的数据)
DELETE FROM 表名 WHERE 字段名=值;
​
删除表中所有记录
TRUNCATE TABLE 表名;
​
-- truncate 和 delete 的区别:
1.delete 是将表中的数据一条一条删除
2.truncate 是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样

 


3) DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select, where 等

DQL基础查询

查询所有列
使用*来表示所有列
select * from 表名;
写出所有字段名来查询
select 字段名1,字段名2,字段名3...from 表名;

查询指定列
列出想要查询的字段名来查询
select 字段名1,字段名2,字段名3...from 表名;

拓展:
别名查询
-- 使用关键字 -- 查询时给列、表指定别名需要使用 AS 关键字
使用别名的好处:是方便观看和处理查询到的数据
select 字段名 1 as别名, 字段名 2 as别名... from表名; 
select 字段名 1 as别名, 字段名 2 as别名... from 表名 as表别名;

清除重复值
查询指定列并且结果不出现重复数据
select distinct 字段名 from 表名;

 

DQL条件查询

语法格式:SELECT 字段名 FROM 表名 WHERE 条件;
比较运算符
--  >大于 <小于 <=小于等于 >=大于等于 =等于 <>、!=不等于
语法:
select * from 表名 where 字段名  比较运算符  比较条件;
逻辑运算符
-- and(&&) 多个条件同时满足 or(||) 多个条件其中一个满足 not(!) 不满足
语法:
select * from 表名 where 满足条件1  逻辑运算符  满足条件2;
in关键字
语法格式:select 字段名 from 表名 where 字段 in (数据 1, 数据 2...);
in 里面的每个数据都会作为一次条件,只要满足条件的就会显示
范围查询

select * from 表名 between 值1 and 值2 
表示从值 1 到值 2 范围,包头又包尾
like关键字
-- LIKE 表示模糊查询 
select * from 表名 where 字段名 like '通配符字符串'; 
​
满足通配符字符串规则的数据就会显示出来 
所谓的通配符字符串就是含有通配符的字符串 MySQL 通配符有两个: 
-- %:表示 0 个或多个字符(任意个字符) 
-- _: 表示一个字符 

DQL排序查询

通过 order by 子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)
​
select 字段名 from 表名 where 字段=值 order by 字段名 [ASC|DESC]; 
ASC: 升序, 默认是升序
DESC: 降序
-- ORDER BY 必须放在最后面

单列排序:
使用一个字段排序
select * from 表名 order by 字段名 [asc/desc]

组合排序
先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序

select * from 表名 order by 字段名1 [asc/desc],字段名2 [asc/desc]

 

DQL聚合函数

count:统计指定列记录数,记录为null的不统计
sun:计算指定列的数值和,如果不是数值类型,那么计算结果为0
max:计算指定列的最大值
min:计算指定列的最小值
avg:计算指定列的平均值,如果不是数据类型,那么计算结果为0
使用:
写在 SQL 语句 select后
select  聚合函数  from 表名; 

DQL分组查询

语法:
select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];
注:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

where 和 having 区别:
1.执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
2.可判断的条件不一样:where不能对聚合函数进行判断,having可以。
(执行顺序:where > 聚合函数 > having)

 

DQL分页查询

语法:
select 字段列表 from 表名 limit 起始索引  ,  查询条目数;
起始索引:从0开始
计算公式:起始索引 = (当前页码 - 1)* 每页显示的条数

 

4) DCL(Data Control Language)数据控制语言(了解)
用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

 

约束

概念:

1.约束是作用于表列上的规则,用于限制加入表的数据

2.约束的存在保证了数据库中数据的正确性,有效性和完整性

分类:

 

 

 非空约束

概念:非空约束用于保证列中所有数据不能有NULL值
语法:
1.添加约束:
-- 创建表时添加非空约束
CREATE TABLE 表名(
     列名  数据类型  NOT NULL,
     ....
);
-- 建完表后添加非空约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;

2.删除约束:
ALTER TABLE 表名 MODIFY 字段名 数据类型;

 

唯一约束

概念:唯一约束用于保证列中所有数据各不相同
语法:
1.添加约束
-- 创建表时添加唯一约束
CREATE TABLE 表名(
    列名 数据类型 UNIQUE [AUTO_INCREMENT],
    -- AUTO_INCREMENT:当不指定值时自动增长
    ...
);
CREATE TABLE 表名(
    列名 数据类型 ,
    ...
    [CONSTRAINT][约束名称] UNIQUE(列名)
);
-- 建完表后添加唯一约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;

2.删除约束
ALTER TABLE 表名 DROP INDEX 字段名;

 

主键约束

概念:
1.主键是一行数据的唯一标识,要求非空且唯一
2.一张表只能有一个主键
语法:
1.添加约束
-- 创建表时添加主键约束
CREATE TABLE 表名(
    列名 数据类型 PRIMARY KEY [AUTO_INCREMENT],
    ...
);

CREATE TABLE 表名(
    列名 数据类型,
    [CONSTRAINT] [约束名称] PRIMARY KEY(列名)
);

-- 建完表后添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
2.删除约束
ALTER TABLE 表名 DROP PRIMARY KEY;

 

检查约束

默认约束

概念:保存数据时,未指定值采用默认值
语法:
1.添加约束
--创建表时添加默认约束
CREATE TABLE 表名(
    列名 数据类型 DEFAULT 默认值,
    ...
);
--建完表后添加默认约束
ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;
2.删除约束
ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

 

外键约束

概念:外键用来让两个表的数据之间建立连接,保证数据的一致性和完整性
语法:
1.添加约束
-- 创建表时添加外键约束
CREATE TABLE 表名(
    列名 数据类型
    ...
[CONSTRAINT][外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名) );
--建完表后添加默认约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERNCES 主表名称(主表列名称);
2.删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

数据库设计 

参考CSDN网页:
https://blog.csdn.net/qq_42192693/article/details/109720940?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165768185416782388018189%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165768185416782388018189&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-109720940-null-null.142^v32^pc_rank_34,185^v2^control&utm_term=%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1&spm=1018.2226.3001.4187

 多表查询

笛卡尔积:取A,B集合所有组合情况

多表查询:从多张表查询数据

       连接查询

               内连接:相当于查询A B交集数据

-- 隐式内连接
select 字段列表 from 表1,表2...where 条件;

-- 显示内连接
select 字段列表 from 表1 [inner] join 表2 on 条件;

 

               外连接:

                      左外连接:相当于查询A表所有数据和交集部分数据

                      右外连接:相当于查询B表所有数据和交集部分数据

-- 左外链接
select 字段列表 from 表1 left [outer] join 表2 on 条件;
-- 右外连接
select 字段列表 from 表1 right [outer] join 表2 on 条件;

 

        子查询

               概念:查询中嵌套查询,称嵌套查询为子查询

               分类:

1.单行单列:作为条件值,使用= != > < 等进行判断
select 字段列表 from 表 where 字段名 = (子查询); 2.多行单列:作为条件值,使用in等关键字进行条件判断
select 字段列表 from 表 where 字段名 in (子查询); 3.多行多列:作为虚拟表
select 字段列表 from (子查询) where 条件;

事务

简介:
1.数据库的事务(Transaction)是一种机制、一个操作序列、包含了一组数据库操作命令

2.事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败

3.事务是一个不可分割的工作逻辑单元.

-- 开启事务
start transaction; 或者 begin;

-- 提交事务
commit;

-- 回滚事务
rollback;

 

事务四大特征

1.原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败

2.一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态

3.隔离性(lsolation):多个事务之间,操作的可见性

4.持久性(Durability):事务一旦回滚,它对数据库中的数据的改变就是永久的 

 

标签:--,数据库,MySQL,查询,字段名,表名,select
来源: https://www.cnblogs.com/y2220237317/p/16470503.html

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

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

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

ICode9版权所有