本位与2025-01-06在CSDN上发布 现将其转移至自己的博客
引擎相关 查看存储引擎:
查看显示支持的存储引擎信息: 1 show variables like 'have%'
查看默认的存储引擎: 1 show variables like 'storage_engine'
数据库相关操作(增 删 改) 创建数据库: 1 2 3 create datbase [if not exists] db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFALUT] COLLATE collation_name]
PS
“[ ]”中的是可选项 可写可不写 将db_name替换成你想给数据库取的名字
查看所有数据库
查看数据库的详细信息 1 show create database db_name;
使用某个数据库
修改数据库编码 1 2 alter database [db_name] [DEFAULT CHARACTER SET charset_name]| [[DEFAULT]COLLATE collation_name]
PS
例1:将schoolDB的编码方式有GBK修改为UTF8。
法1:ALTER DATABASE schoolDB CHARACTER SET UTF8;
法2:ALTER DATABASE schoolDB collate utf8_general_ci;
删除数据库 1 drop database [if exists] db_name;
表的相关操作(增删改查) 创建表 1 2 3 4 5 create table [if exists] t_name( name_1 int [primary key], name_2 varchar(10)[...], name_3 float (5, 3)[...] )[engine = INNODB charset = UTF-8];
PS
这里t_name是表名
name_1 name_2 name_3 是字段名
字段名后面[ ]中的是完整性约束(可选填)
完整性约束条件: PRIMARY KEY主键(唯一来标识的,每一个表都一个,自动非空) AUTO_INCREMENT自增长 FOREIGN KEY外键 NOT NULL非空 UNIQUE KEY唯一 DEFAULT默认值 最下面的[ ] 中的是引擎和编码方式的选择
修改表 [在name_3的(前面|后面)] 增加新列name_4 1 2 alter table t_name add name_4 [first|after name_3];
修改列的数据类型 将name_2的数据类型修改成float(4,3)
1 2 alter table t_name modify name_2 float (4,3)
修改列名 将表t_name中的name_1列的名字修改成new_name_1
1 2 alter table t_name change name_1 new_name_1;
修改表名 将表t_name的名字修改成new_t_name
1 2 alter table t_name rename [to] new_t_name;
删除列 将表t_name中的name_1列删除
1 2 alter table t_name drop column name_1;
删除行 1 2 delete from t_name where 条件表达式;
修改存储引擎 将表t_name的存储引擎修改成INNODB
1 2 alter table t_name engine = INNODB;
查看表 查看表名
查看表的结构
1 2 3 4 5 6 7 8 show create table t_name; describe t_name; desc t_name;
复制表 1 2 3 4 5 6 create table [if not existe] t_name [like t_name_2] [as 表信息]
删除表 将表t_name删除
数据相关操作 插入数据 1 2 3 insert [into] t_name(name_1, name_2, name_3) values(12,'hello' , '2025-01-04' );
查看插入信息
修改数据 1 2 3 4 5 update t_name set name_1 = x, name_2 = y, name_3 = z [where 条件表达式];
删除数据 1 2 delate from t_name [where 条件表达式];
完全清除某个表 完全清除表t_name:
1 truncate [table] t_name;
单表查询(重点) 先给出语法:
1 2 3 4 5 6 7 select [distinct] name_1 [as new_name], [distinct] name_2 [as new_name], from t_name [where 条件表达式,] [group by name [ASC|DESC],] [order by name [ASC|DESC],] [limit 条数];
PS
SELECT子句: 指定要查询的列名称,列与列之间用逗号隔开。 还可以为列指定新的别名,显示在输出的结果中。 ALL关键字表示显示所有的行,包括重复行,是系统默认的 DISTINCT表示显示的结果要消除重复的行。 FROM子句:指定要查询的表,可以指定两个以上的表,表与表之间用逗号隔开。 WHERE子句:指定要查询的条件。 如果有WHERE子句,就按照“条件表达式”指定的条件进行查询; 如果没有WHERE子句,就查询所有记录。
GROUP BY : 子句用于对查询结构进行分组。 按照“列名1”指定的字段进行分组; 如果GROUP BY子句后带着HAVING关键字,那么只有满足“条件表达式2”中指定的条件的才能够输出。 GROUP BY子句通常和COUNT()、SUM()等聚合函数一起使用。
HAVING子句: 指定分组的条件,通常放Group by字句之后
ORDER BY子句:用于对查询结果的进行排序。 排序方式由ASC和DESC两个参数指出; ASC参数表示按升序进行排序。默认情况下是ASC。 DESC参数表示按降序的顺序进行排序。升序表示值按从小到大的顺序排列。
LIMIT 子句:限制查询的输出结果的行数。
多表查询 连接 等值连接
1 2 3 4 5 select x_name_1, y_name_2 from t_x inner join t_y on t_x.id = t_y.id where ...;
左连接、右连接和联合查询不过多赘述
子查询 带in关键词的子查询
1 2 3 4 5 select *from t_name_1 where name_1 in ( select name_2 from t_name_2 );
带比较运算符的子查询
1 2 3 4 5 6 7 select *from t_name_1 where name = ( select id from t_name_2 where id = 2 )
索引 引: 面试题:select id,name,age from sd where name=’张飞’ 怎么优化?最佳方案是什么? 答:在name上创建索引: create index in name on sd(name);
语法(已存在的表): 1 2 create index in_id on t_name(id );
PS
in_id:索引名 (自己取) t_name:表名 id:列名
在创建表的时候创建索引 1 2 3 4 create table t_name( ... [unique|fulltext|spatial] index|key [in_id](name[长度])[ASC|DESC] );
视图 创建视图 1 2 3 4 create view view_name as select ...[with [cascaded|local ] check option];
删除视图
用户 创建用户 1 create user '用户名' @'localhost' identifiednby '密码' ;
查询用户 1 select * from mysql.user;
分配权限 1 grant 权限 on 库.表 to '用户名' @'localhost' ;
触发器 触发器设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE TRIGGER before_position_update BEFORE UPDATE ON staff FOR EACH ROW BEGIN IF OLD.position != NEW.position THEN CASE NEW.position WHEN '董事长' THEN SET NEW.role = 9; WHEN '经理' THEN SET NEW.role = 6; ELSE SET NEW.role = 2; END CASE; END IF; END;
PS
这里是当position设置为经理或董事长时 自动更改权限等级
显示设置的触发器
备份与恢复 备份 备份数据库到文件。
1 mysqldump -u username -p db_name > backup.sql
恢复 从文件恢复数据库。
1 mysql -u username -p db_name < backup.sql
Loading comments…