云南网站制作价格,wordpress加载优化,兰州设计公司排名榜,免费企业建站模板MySQL数据库基础合集 目录 MySQL数据库基础合集SQL关键字DDL关键字DML关键字DQL关键字DCL关键字约束关键字 SQL基础数据类型整数类型字符类型浮点类型时间类型 数据定义语言DDL1.查看数据库2.创建库3.删除库4.切换库5.创建表6.删除表7.查看表8.查看表属性9.插入列10.修改列11.设…MySQL数据库基础合集 目录 MySQL数据库基础合集SQL关键字DDL关键字DML关键字DQL关键字DCL关键字约束关键字 SQL基础数据类型整数类型字符类型浮点类型时间类型 数据定义语言DDL1.查看数据库2.创建库3.删除库4.切换库5.创建表6.删除表7.查看表8.查看表属性9.插入列10.修改列11.设置主键12.设置外键并绑定主键13.设置自增14.删除列15.重命名16.设定默认值17.添加备注18.设置是否可为空 数据操纵语言DML1.查表2.插入数据3.更新数据4.删除数据 数据查询语言DQL1.子查询2.联表查询3.GROUP BY4.HAVING5.分页查询6.排序查询 数据控制语言DCL1.事务2.用户权限2.用户权限 SQL关键字
DDL关键字
DDL关键字含义CREATE TABLE创建一个新的数据库表ALTER TABLE修改现有数据库表的结构或属性DROP TABLE删除数据库中的表MODIFY COLUMN修改列ADD COLUMN新增列CREATE INDEX创建索引DROP INDEX删除索引CREATE VIEW创建视图DROP VIEW删除视图CREATE FUNCTION创建函数ALTER FUNCTION修改已存在的函数DROP FUNCTION删除函数ENUM()枚举(多选多)SET()集合(多选一)
DML关键字
DML关键字含义SELECT从数据库中检索数据INSERT INTO向数据库表中插入新的行或数据UPDATE更新数据库表中的现有行或数据DELETE FROM从数据库表中删除行或数据
DQL关键字
DQL关键字含义SELECTSELECT 字段列表查询检索的列或表达式它指定了最终结果包含的列FROMFROM 表名指定了要查询的列表或视图例FROM table_nameWHEREWHERE 条件列表筛选查询结果通常是列(字段)的条件表达式例WHERE id 10GROUP BYGROUP BY 分组字段列表根据一个或多个列对结果进行分组但是通常需要满足聚合条件HAVINGHAVING 分组后的条件列表用于在GROUP BY子句的结果上进行过滤筛选ORDER BYORDER BY 排序字段列表用于按照一个或多个列对结果进行排序它可以按升序ASC或降序DESC对查询结果进行排序LIMITLIMIT 分页参数一般在语句的最后用于限制查询结果的数量DQL执行顺序FROM - WHERE - GROUP BY - HAVING -SELECT - ORDER BY - LIMIT
DCL关键字
DCL关键字含义GRANT授予用户或角色特定的权限REVOKE撤销用户或角色的权限COMMIT提交当前事务ROLLBACK回滚当前事务SAVEPOINT在事务中设置保存点SET设置会话级别的参数
约束关键字
约束关键字含义DEFAULT默认约束为列设置默认值AUTO_INCREMENT自增约束自动递增生成唯一标识符UNIQUE唯一约束唯一约束确保列中的值是唯一的但允许为空值NOT NULL非空约束非空约束要求列中的值不能为空CHECK检查约束检查约束定义了对列值的条件限制PRIMARY KEY主键约束主键必须是唯一且非空的每个表只能有一个主键FOREIGN KEY外键约束用于建立表与表之间的关联关系确保引用的数据存在于其他表中的主键列中ZEROFILL填充约束以0填充int(4) ZEROFILL 赋值1结果 0001UNSIGNED非负约束只能存储非负整数类型
SQL基础数据类型
整数类型
类型含义TINYINT占用1个字节范围-128-127无符号范围0-255SMALLINT占用2个字节范围-32768-32767无符号范围0-65535MEDIUMINT占用3个字节范围-8388608-8388607无符号范围0-16777215INT占用4个字节范围-2147483648-2147483647无符号范围0-4294967295BIGINT占用8个字节范围-9223372036854775808-9223372036854775807无符号范围0-18446744073709551615
字符类型
类型含义CHAR默认长度为1可指定长度例如CHAR(10)为长度10VARCHAR默认长度为1可指定长度例如VARCHAR(32)为长度32TINYTEXT最多可容纳255个字符TEXT无固定长度限制可以容纳更大的字符数量最多可容纳65535个字符约64KBMEDIUMTEXT最多容纳16777215个字符约16MBLONGTEXT最多可容纳4294967295个字符约4GBENUM用于存储预定义的枚举值之一。需要定义可选的枚举值例如ENUM(A, B, C)SET用于存储从一个或多个预定义选项集合中选择的值。需要定义可选的集合例如SET(option1, option2, option3)
浮点类型
类型含义FLOAT单精度浮点数精度约为6-7位有效数字DOUBLE双精度浮点数精度约为15-16位有效数字DECIMAL用于存储高精度的十进制数精度由用户指定
时间类型
类型含义DATE格式为’YYYY-MM-DD’TIME格式为’HH:MM:SS’DATETIME格式为’YYYY-MM-DD HH:MM:SS’TIMESTAMP类似于DATETIME格式为’YYYY-MM-DD HH:MM:SS’用DEFAULT将默认值设置为CURRENT_TIMESTAMP可以默认当前时间YEAR用于存储年份值表示四位数的年份
数据定义语言DDL
主要分为
CREAT创建DROP删除ALTER修改
登录MySQL
mysql -uroot -p
Enter password: ****1.查看数据库
show databases;2.创建库
create database emp;3.删除库
drop database users;4.切换库
use emp;5.创建表
create table emp(id int,name varchar(32),age int);enum插入数据时只能是enum中包含的数据set插入数据时必须是set数据中的一个
create table emp(id int,name varchar(32),hobby enum(read,run,listen), gender set(male,female));6.删除表
注意要先use选择数据库
drop table emp;7.查看表
show tables;8.查看表属性
desc emp;9.插入列
alter table emp add(sex varchar(2));10.修改列
必须是当前表中存在的属性
alter table emp modify column name varchar(24);11.设置主键
修改
alter table emp modify column id int primary key;新建
create table emp1(id int primary key);12.设置外键并绑定主键
表1
create table dep (id int primary key auto_increment,name varchar(32) comment部门名);表2
create table emp (id int primary key auto_increment,name varchar(32) comment员工名,dep_id int, foreign key(dep_id) references dep(id));当外键表2试图添加表1主键中不存在的数据时便会报错 当表1企图删除表2所在的行时也会报错(修改同理) 13.设置自增
alter table emp modify column id int auto_increment;14.删除列
alter table emp drop column sex;15.重命名
RENAME
rename table emp to stu;16.设定默认值
DEFAULT
create table emp3(id int,name varchar(32),age varchar(3) default 男);17.添加备注
COMMENT
为表添加备注
create table emp4(id int,name varchar(32)) COMMENT 员工表;为字段添加备注
create table emp4(id int COMMENT 员工编号,name varchar(32) COMMENT 员工姓名);ALTER table emp4 modify column name varchar(32) COMMENT 员工名;18.设置是否可为空
默认情况都是可以为空
NULL可以为空
create table emp4(id int COMMENT 员工编号,name varchar(32) NULL COMMENT 员工姓名);NOT NULL不可为空
create table emp4(id int COMMENT 员工编号,name varchar(32) NOT NULL COMMENT 员工姓名);数据操纵语言DML
SELECT查表SELECT在官方文档中隶属于DML但是我们一般将其当做DQL操作INSERT插入数据UPDATE更新数据DELETE删除数据
1.查表
查表之前首先要选择库use database_name
查看emp表全部列
select * from emp5;查看name字段
select name from emp52.插入数据
insert into 表 (列名1,列名2,列名3...) values (值1,值2,值3...)
insert into emp5(name) value(李四);3.更新数据
update emp5 set name王五 where id1;4.删除数据
delete from emp5 where id4;删除表中所有数据
delete from emp5 ;或者
truncate emp5;数据查询语言DQL
1.子查询
将一个查询语句的结果当做另外一个查询语句的条件使用
----------------------------------------------
| id | name | time | age | wages |
----------------------------------------------
| 1 | 张三 | 2024-01-25 15:24:19 | 18 | 2000 |
| 2 | 倪哥 | 2024-01-25 15:34:11 | 20 | 1000 |
| 3 | 李四 | 2024-01-25 16:14:19 | 18 | 2000 |
| 4 | 陈五 | 2024-01-25 16:14:19 | 19 | 1000 |
| 5 | 王六 | 2024-01-25 16:14:19 | 19 | 2000 |
| 6 | 横七 | 2024-01-25 16:14:19 | 20 | 1000 |
| 7 | 竖八 | 2024-01-25 16:14:19 | 20 | 2200 |
----------------------------------------------
-- 查询最大工资
select max(wages) from emp5;
------------
| max(wages) |
------------
| 2200 |
------------
-- 将最大工资作为条件插入查询name字段的语句中
select name from emp5 where wages (select max(wages) from emp5);
--------
| name |
--------
| 竖八 |
--------
-- 多个字段同理
select name,age,wages from emp5 where wages (select max(wages) from emp5);
---------------------
| name | age | wages |
---------------------
| 竖八 | 20 | 2200 |
---------------------2.联表查询
-- 查询部门表
select * from dep
-------------------
| id | name |
-------------------
| 200 | 技术部 |
| 201 | 人力资源 |
| 202 | 销售部 |
| 203 | 运营部 |
| 204 | 售后部 |
--------------------- 查询员工表
select * from emp5;
------------------------------------------------------
| id | name | time | age | wages | dep_id |
------------------------------------------------------
| 1 | 张三 | 2024-01-25 15:24:19 | 18 | 2000 | 203 |
| 2 | 倪哥 | 2024-01-25 15:34:11 | 20 | 1000 | 201 |
| 3 | 李四 | 2024-01-25 16:14:19 | 18 | 2000 | 202 |
| 4 | 陈五 | 2024-01-25 16:14:19 | 19 | 1000 | 203 |
| 5 | 王六 | 2024-01-25 16:14:19 | 19 | 2000 | 201 |
| 6 | 横七 | 2024-01-25 16:14:19 | 20 | 1000 | 200 |
| 7 | 竖八 | 2024-01-25 16:14:19 | 20 | 2200 | 205 |
-------------------------------------------------------- 联表查询dep和emp5
select * from dep,emp5;
-------------------------------------------------------------------------
| id | name | id | name | time | age | wages | dep_id |
-------------------------------------------------------------------------
| 204 | 售后部 | 1 | 张三 | 2024-01-25 15:24:19 | 18 | 2000 | 203 |
| 203 | 运营部 | 1 | 张三 | 2024-01-25 15:24:19 | 18 | 2000 | 203 |
| 202 | 销售部 | 1 | 张三 | 2024-01-25 15:24:19 | 18 | 2000 | 203 |
| 201 | 人力资源 | 1 | 张三 | 2024-01-25 15:24:19 | 18 | 2000 | 203 |
| 200 | 技术部 | 1 | 张三 | 2024-01-25 15:24:19 | 18 | 2000 | 203 |
| 204 | 售后部 | 2 | 倪哥 | 2024-01-25 15:34:11 | 20 | 1000 | 201 |
| 203 | 运营部 | 2 | 倪哥 | 2024-01-25 15:34:11 | 20 | 1000 | 201 |
| 202 | 销售部 | 2 | 倪哥 | 2024-01-25 15:34:11 | 20 | 1000 | 201 |
| 201 | 人力资源 | 2 | 倪哥 | 2024-01-25 15:34:11 | 20 | 1000 | 201 |
| 200 | 技术部 | 2 | 倪哥 | 2024-01-25 15:34:11 | 20 | 1000 | 201 |
| 204 | 售后部 | 3 | 李四 | 2024-01-25 16:14:19 | 18 | 2000 | 202 |
| 203 | 运营部 | 3 | 李四 | 2024-01-25 16:14:19 | 18 | 2000 | 202 |
| 202 | 销售部 | 3 | 李四 | 2024-01-25 16:14:19 | 18 | 2000 | 202 |
| 201 | 人力资源 | 3 | 李四 | 2024-01-25 16:14:19 | 18 | 2000 | 202 |
| 200 | 技术部 | 3 | 李四 | 2024-01-25 16:14:19 | 18 | 2000 | 202 |
| 204 | 售后部 | 4 | 陈五 | 2024-01-25 16:14:19 | 19 | 1000 | 203 |
| 203 | 运营部 | 4 | 陈五 | 2024-01-25 16:14:19 | 19 | 1000 | 203 |
| 202 | 销售部 | 4 | 陈五 | 2024-01-25 16:14:19 | 19 | 1000 | 203 |
| 201 | 人力资源 | 4 | 陈五 | 2024-01-25 16:14:19 | 19 | 1000 | 203 |
| 200 | 技术部 | 4 | 陈五 | 2024-01-25 16:14:19 | 19 | 1000 | 203 |
| 204 | 售后部 | 5 | 王六 | 2024-01-25 16:14:19 | 19 | 2000 | 201 |
| 203 | 运营部 | 5 | 王六 | 2024-01-25 16:14:19 | 19 | 2000 | 201 |
| 202 | 销售部 | 5 | 王六 | 2024-01-25 16:14:19 | 19 | 2000 | 201 |
| 201 | 人力资源 | 5 | 王六 | 2024-01-25 16:14:19 | 19 | 2000 | 201 |
| 200 | 技术部 | 5 | 王六 | 2024-01-25 16:14:19 | 19 | 2000 | 201 |
| 204 | 售后部 | 6 | 横七 | 2024-01-25 16:14:19 | 20 | 1000 | 200 |
| 203 | 运营部 | 6 | 横七 | 2024-01-25 16:14:19 | 20 | 1000 | 200 |
| 202 | 销售部 | 6 | 横七 | 2024-01-25 16:14:19 | 20 | 1000 | 200 |
| 201 | 人力资源 | 6 | 横七 | 2024-01-25 16:14:19 | 20 | 1000 | 200 |
| 200 | 技术部 | 6 | 横七 | 2024-01-25 16:14:19 | 20 | 1000 | 200 |
| 204 | 售后部 | 7 | 竖八 | 2024-01-25 16:14:19 | 20 | 2200 | 205 |
| 203 | 运营部 | 7 | 竖八 | 2024-01-25 16:14:19 | 20 | 2200 | 205 |
| 202 | 销售部 | 7 | 竖八 | 2024-01-25 16:14:19 | 20 | 2200 | 205 |
| 201 | 人力资源 | 7 | 竖八 | 2024-01-25 16:14:19 | 20 | 2200 | 205 |
| 200 | 技术部 | 7 | 竖八 | 2024-01-25 16:14:19 | 20 | 2200 | 205 |
--------------------------------------------------------------------------- 添加条件限制,当员工表中的部门id 部门表中id时如果不存在对应的部门则不打印(比如id7的205部门)
select * from dep,emp5 where emp5.dep_iddep.id;
-------------------------------------------------------------------------
| id | name | id | name | time | age | wages | dep_id |
-------------------------------------------------------------------------
| 203 | 运营部 | 1 | 张三 | 2024-01-25 15:24:19 | 18 | 2000 | 203 |
| 201 | 人力资源 | 2 | 倪哥 | 2024-01-25 15:34:11 | 20 | 1000 | 201 |
| 202 | 销售部 | 3 | 李四 | 2024-01-25 16:14:19 | 18 | 2000 | 202 |
| 203 | 运营部 | 4 | 陈五 | 2024-01-25 16:14:19 | 19 | 1000 | 203 |
| 201 | 人力资源 | 5 | 王六 | 2024-01-25 16:14:19 | 19 | 2000 | 201 |
| 200 | 技术部 | 6 | 横七 | 2024-01-25 16:14:19 | 20 | 1000 | 200 |
-------------------------------------------------------------------------例打印各个部门中最高工资的员工信息
select * from emp5 where wages in (select max(wages) from emp5 group by dep_id);3.GROUP BY
group by 作用于where之后order by 之前不适用group by的场景查询后显示所有数据且没有分组需要例如当表中基本没有重复数据时就没必要分组
将表格emp5以wages(工资)分组(2000,1000,2200)
select wages from emp5 group by wages;例我想查询各个部门的最高工资
select dep_id,max(wages) from emp5 group by dep_id;配合函数作用列如sum、max、avg、count等
select dep_id,sum(wages) from emp5 group by dep_id;
select dep_id,max(wages) from emp5 group by dep_id;
select dep_id,avg(wages) from emp5 group by dep_id;
select dep_id,count(*) from emp5 group by dep_id;group_concat可以查看到组内所有人的属性 根据部门(dep_id)分组并且显示各个部门的人员
select group_concat(name), dep_id from emp5 group by dep_id;group_concat也可以查看进行字符的拼接 根据部门(dep_id)分组并且显示各个部门的人员以及其工资
select group_concat(name,:,wages), dep_id from emp5 group by dep_id;4.HAVING
HAVING一般紧随GROUP BY之后一般用于限定SELECT筛选的字段查询各个部门的最高工资并且排除薪资低于2000的
select dep_id,max(wages) from emp5 group by dep_id having max(wages)2000;查询各个部门的最高工资并且只要202和203部门的
select dep_id,max(wages) from emp5 group by dep_id having dep_id in (202,203);5.分页查询
limit 0,2从第0页开始往后每页2条数据limit 2,2每页两条数据从第二页开始查询
select * from emp5 limit 0,26.排序查询
升序ASC降序DESC按照员工的工资升序排序
select * from emp5 order by wages ASC;按照员工的部门排序当部门相同时按照工资升序排序
select * from emp5 order by dep_id ASC, wages ASC;数据控制语言DCL
1.事务
事务的四大特性原子性一致性隔离性持久性
START TRANSACTION开始事务
start transaction;ROLLBACK回滚
rollbackCOMMIT提交事务
提交事务后意味着改部分sql语句已运行结束不能再执行回滚操作
start transaction;
insert into emp(name) values(王五);
commit; # 提交事务后无法再进行回滚2.用户权限
CREATE USER创建新的用户并指定权限
username为用户名password为密码IDENTIFIED为指定用户密码的关键字
create user username IDENTIFIED by password;DROP USER删除用户
DROP USER username;ALTER USER更改用户权限或属性
ALTER USER username SET PASSWORD new_password;GRANT赋予用户权限
赋予user用户 SELECTINSERT等权限table_name为权限生效的表名(修改权限之前要use库)
GRANT SELECT, INSERT ON table_name TO user;REVOKE取消用户权限
用法与grant相同
REVOKE SELECT, INSERT ON table_name FROM user;6518652337)]
COMMIT提交事务
提交事务后意味着改部分sql语句已运行结束不能再执行回滚操作
start transaction;
insert into emp(name) values(王五);
commit; # 提交事务后无法再进行回滚2.用户权限
CREATE USER创建新的用户并指定权限
username为用户名password为密码IDENTIFIED为指定用户密码的关键字
create user username IDENTIFIED by password;DROP USER删除用户
DROP USER username;ALTER USER更改用户权限或属性
ALTER USER username SET PASSWORD new_password;GRANT赋予用户权限
赋予user用户 SELECTINSERT等权限table_name为权限生效的表名(修改权限之前要use库)
GRANT SELECT, INSERT ON table_name TO user;REVOKE取消用户权限
用法与grant相同
REVOKE SELECT, INSERT ON table_name FROM user;