1、掌握 mysql、oracle、sqlserver三种产品的区别(各自使用场景)?
-
MySQL
-
特点:开源、轻量级、性能高、社区活跃。
-
场景:中小型 Web 应用(如博客、电商)、读写分离架构、云服务(如 LAMP 栈)。
-
限制:复杂事务处理能力较弱(但 InnoDB 已优化)。
-
-
Oracle
-
特点:商业数据库、功能全面、支持高并发、ACID 强一致性、分布式架构(如 RAC)。
-
场景:金融、电信等大型企业核心系统、高可用性要求的场景。
-
缺点:成本高、学习曲线陡峭。
-
-
SQL Server
-
特点:微软生态集成(如 .NET、Azure)、图形化管理工具完善。
-
场景:企业内部系统(ERP、CRM)、Windows 服务器环境。
-
限制:跨平台支持较弱(Linux 版本已推出但生态有限)。
-
2、sql语言的四大类 ddl dml dql dcl
-
DDL(数据定义语言)
数据定义语言 所有sql都与结构相关
创建 create、修改 alter、删除 drop结构
库 database、表 table、视图 view、存储过程 procedure、函数 function、触发器 trigger、索引 index等
-
DML(数据操作语言)
数据操作语言 所有sql都与数据相关
新增数据 insert、修改数据 update、删除数据 delete
-
DQL(数据查询语言) 查询数据:
SELECT
。 只负责查询数据 -
DCL(数据控制语言) 权限管理:
GRANT
,REVOKE
,DENY
。数据控制语言
用户、权限 grant revoke、事务 start transaction ; commit; rollback;
3、如何通过命令行模式连接到mysql数据库,查询所有库,指定操作的数据库,查询库中所有的表,如何实现远程连接?
-
连接数据库
连接本机数据库: mysql -uroot -p密码 连接远程数据库: mysql -h 10.10.15.74 -uroot -proot mysql -h ip -u用户名 -p 查看用户权限: SELECT user, host FROM mysql.user;
-
常用命令
SHOW DATABASES; -- 查看所有库 USE [库名]; -- 切换数据库 SHOW TABLES; -- 查看当前库所有表
4、如何判断一个mysql服务的状态?如何启动、停止mysql服务?
services.msc
cmd窗口:
sc query mysql -- 查看状态(安装sc服务)
net start mysql80 -- 启动
net stop mysql80 -- 停止
5、创建数据库、表的语法结构?
-- 创建数据库
create database yan9;
create database yanfa9 DEFAULT CHARACTER SET utf8mb4; //在中文字符乱码时使用
-- 创建表
CREATE TABLE `表名`(
列名1 数据类型1 [约束],
列名2 数据类型2 [约束],
....
列名n 数据类型n [约束]
);
-- 注意:最后一列,不需要加逗号
6、如何删除数据库、删除表?
drop database 库名;
drop table 表名;
7、修改数据表,新增列、修改列、删除列、修改列名、修改表名 对应的sql语法结构?
操作 | 语法示例 |
---|---|
新增列 | ALTER TABLE 表 ADD 列名 数据类型; |
修改列类型 | ALTER TABLE 表 MODIFY 列名 新数据类型; |
删除列 | ALTER TABLE 表 DROP COLUMN 列名; |
修改列名 | ALTER TABLE 表 CHANGE 旧列名 新列名 数据类型; |
修改表名 | RENAME TABLE 旧表名 TO 新表名; |
1、修改表名
rename
2、新增列
add
3、修改列
1)更改约束和数据类型 modify
2)更改列名 change
4、删除列 drop
-- 新增列
alter table student add address varchar(255) ;
-- 修改列
alter table student modify address char(255) ;
alter table student change name username char(16) not null
-- 删除列
alter table student drop address;
-- 查看表结构
desc student;
-- 更新student 为stu
alter table student rename to stu;
alter table stu rename student;
8、mysql中常见的数据类型有哪些?
整数型 int
tinyint , smallint , mediumint , int , bigint
浮点型 double
float ,double ,decimal(m,n)
日期时间 datetime
date , time ,datetime ,timestamp(时间戳、精细到毫秒)
字符串
char(定长字符串 ) , varchar(变长字符串), text (), longtext
char(5) 永远占5个字符存储空间
varchar(5) 根据存入的字符串计算占用的存储空间
9、创建表时,常见的约束有哪些?
primary key 主键 唯一且非空
foreign key 外键
auto_increment 配合主键 自动增长
comment '注释'
not null 非空
null 默认 允许为空
default 默认值
unique key 唯一键 唯一约束,要求值不能重复
cid int(6) zerofill 零填空 不足6位,前面用0补齐
反引号 `` 当表名或者列名为mysql中关键字时,需要使用反引号,转义为普通字符
10、char和varchar的区别?
CHAR | VARCHAR |
---|---|
定长,存储时填充空格 | 变长,按实际长度存储 |
适合长度固定的字段(如 MD5) | 适合长度变化的字段(如评论) |
最大 255 字符 | 最大 65535 字符(受行限制约) |
读取速度更快 | 节省存储空间 |
11、sql语句中 insert 、update、delete 操作数据的语法结构
insert into 表名(列名1) values (值1);
insert into 表名(列名1,列名2) values (值1,null);
insert into 表名 values (值1,值2,值3); --依次向表中所有的列赋值
insert into 表名(列名1) values (值1),(值2),(值3); --依次向表中新增多行数据 mysql支持 oracle不支持
update 表名 set 列名=值 where 。。。;
delete from 表名 where 。。。。;
12、事务的四个特性
事务的目的是保障一个业务,要么都成功,要么都失败。转账业务。
原子性: 最小单位,要么都成功,要么都失败
一致性:从一个一致性状态到另外一个一致性状态。 转账前后 账户总额保持一致。
隔离性:事务提交之前对外部不可见。
持久性:一经提交,永久生效。
13、事务操作的基本步骤
1、设置自动提交模式关闭 set autocommit=false;
2、开启事务 start transaction;
执行多个dml语句或者dql语句;
不允许执行ddl语句(ddl语句会自动提交事务)
3、手动提交或者回滚事务
commit;|rollback;
4、设置自动提交模式到默认状态 set autocommit=true;
14、如何创建用户、赋权、回收权限
create user zhangsan identified by '123456';
alter user zhangsan identified by '0506'; -- 修改密码
-- 授权 赋予权限
grant all privileges on *.* to zhangsan; -- 给用户赋予所有权限
grant insert,update,delete on 库名.account to zhangsan; -- 给用户赋予部分权限
-- 回收权限
revoke all privileges on *.* from zhangsan;