Ubuntu中MySQL数据库操作详解 2022-08-16 16:03:09 浏览数 (1) 1.Ubuntu安装MySQL客户端流程: - 登录navicat官网下载 - 将压缩包拷贝ubuntu中进行解压,解压命令:tar zxvf navicat.tar.gz - 进入解压目录,运行命令./start_navicatt - 如果试用是灰色的则进行下一步 - 删除 .navicat64/ 隐藏文件,再次运行即可 - 如果试用界面是乱码的则修改配置文件,改成如下形式(vim常用操作请查看我的另一篇随记): - 再次执行第三步操作即可,试用到期可再次删除那个隐藏文件2.ubuntu下安装mysql服务端 - sudo apt-get install mysql-server3.验证安装结果 - 命令:ps aux|grep mysql,跟下图一样则说明安装成功4.mysql数据库运行状态 - 4.1 sudo service mysql status 查看数据库运行状态 - 绿点 正在运行 - 白点 停止运行 - 4.2 sudo service mysql start 启动数据库服务 - 4.3 sudo service mysql stop 停止数据库服务 - 4.4 sudo service mysql restart 重启数据库服务 5. 登录数据库 - 5.1 通过客户端软件登录,详见步骤1 - 5.2 通过命令登录 - 登录远程主机:mysql [-h 192.168.205.129 –P 3306] –uroot -p - h 连接服务端数据库的IP地址 - P(大写) 连接的端口号,一般为3306 - u 用户权限 - p(小写) 输入密码,一般为mysql 登陆成功: 6. 退出数据库客户端 - exit、quit、ctrl d7. 配置msyql服务允许远程登录访问 - 7.1 数据文件夹: - 7.2 数据库配置文件: - 7.3 关闭防火墙 - sudo apt-get install ufw 安装防火墙 - sudo ufw enable 打开防火墙 - sudo ufw status 查看防火墙状态 - sudo ufw disable 关闭防火墙 - 7.4 更改配置文件的bind-address - 进入配置文件 - 修改mysqld.cnf中的bind-addres,首先给用户可执行权限 - 再次使用vim修改bind-address - 修改成功 - 再把文件权限改回去 -7.5 修改权限 - 权限 update `user` set host=”%” where user=”root” - 允许指定用户访问: GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.11.12' IDENTIFIED BY 'FEFJay' WITH GRANT OPTION; flush privileges;(IP这里,可以使用%来表示所有IP) - 重启服务即可8. 创建数据库 - 8.1 使用客户端软件创建数据库 - 8.2 使用命令创建数据库 - create database 数据库名 - create database 数据库名 character set utf8 - show create database 数据库名 - 8.3 修改数据库编码 - alter database 数据库名 character set utf8 - 8.4 删除数据库 - drop database 数据库名 - 8.5 切换、使用数据库 - use 数据库名 - 8.6 显示当前数据库 - select database() - 8.7 展示所有数据库 - show databases9. 创建数据表 - 9.1 使用命令创建数据表 - create table 表名 ( 字段1 字段类型, 字段2 字段类型, 字段3 字段类型…… ) - 9.2 常用数据字段类型 - 整数 - 小数 - 字符串 - 日期时间类型 - 枚举10.查询 - 10.1 查询数据表中全部的行和列 - select col1,col2,col3….from table - select * from table - 10.2 查询表的部分列 - select col1,col2,col3…from table - 10.3 给查询出来的数据列设置别名 - select col1 as “别名1”,col2 as ‘别名2’…from table - select col1 ‘别名1’,col2 ‘别名2’….from table - 注意多表查询重名问题 - 10.4 DISTINCT关键字的使用 - 作用:消除结果集中的重复数据 - 语法:select distinct col from table - 注意:要求所有的字段都相同才会去重 - 10.5 LIMIT关键字的使用 - 作用:指定结果的显示范围 - 语法: - select * from table limit m,n m:起始的位置 n:显示的数量 - select * from table limit m m:从第一条开始共显示m条数据 11. 插入数据 - 11.1 所有列都插入值 - 语法:insert into table values(v1,v2,v3….) - 特点:列值同数,列值同序 - 11.2 为指定列插入值 - 语法:insert into table(col1,col2,col3) values(v1,v2,v3) - 特点:指定顺序,列值对应 - 11.3 一次性插入多条记录 - 语法:insert into table(co1,col2,col3…)values (v1,v2,v3), (v1,v2,v3), (v1,v3,v3)…..12.修改数据 - 12.1 修改指定数据 - 语法:update table set {col1=value1}[…n]where expressioin - 12.2 修改全部数据 - 语法:update table set {col1=value1}[…n]13. 删除数据 - 13.1 使用delete命令删除数据 - 语法:delete from table where expression - 13.2 逻辑删除 - 13.3 使用truncate命令删除数据 - truncate table - 13.4 区别 - Delete语句删除数据,自动编号没有恢复到默认值。但是truncate重新设置了自动编号 - 通过truncate语句删除数据表数据,不能根据条件删除,而是一次性删除,delete语句可以根据条件进行删除 - truncate在清空表中数据的时候,速度要比delete语句快的多14. 对列进行增删改查 - 14.1 增加一列 - alter table tablename add 列名 数据类型 - 14.2 删除一列 - alter table tablename drop column 列名 - 14.3 修改列的数据类型 - alter table tablename modify 列名 数据类型 -14.4 修改列的数据类型并且改名 - alter table tablename change old_colname new_colname 数据类型15. 约束 - 问题1:数据冗余 - 问题2:失去了完整性 - 问题3:数据缺少唯一标识 - 问题4:失去了实体完整性 - 问题5:失去了引用完整性 - 问题6:失去了域完整性 - 15.1 约束概念:限定数据库中数据的一套规则 - 15.2 约束作用:保证数据的准确性、完整性、可靠性、联动性 - 15.3 数据库常用约束: - 主键约束 - 作用:让数据具有唯一标识 - 语法: create table table_primarykey ( id int primary key ) - 特点:自动设置非空约束 - 自动增长 - 作用:使数据自动增长,一般给主键设置 - 语法: create table table_autoincrement ( id int primary key auto_increment ) - 唯一约束 - 作用:保证数据的准确性 - 语法: create table table_unique ( qqnumber int unique ) - 特点:可以为多列设置唯一约束 - 非空约束 - 作用:保证数据不为空 - 语法: create table table_notnull ( name varchar(30) not null ) - 默认约束 - 作用:给字段设置默认值 - 语法: create table table_default ( sex char(2) default ‘男’ ) - 检查约束 - 作用:检查数据的完整性 - 语法: create table table_check ( sex char(2) check(‘男’ or ‘女’) ) create table table_enum ( sex enum(‘男’,’女’) ) - 外键约束 - 作用:让两表之间产生联动关系 - 语法: create table class ( id int primary key auto_increment, classname varchar(30) not null ) create table score ( id int primary key auto_increment, chinese_score int not null, foreign key(id) references class(id) ) - 要想删除class表和score表,首先要删除score表16. 为数据增补约束 - 16.1 添加/删除主键约束 - 添加主键约束 - 语法:alter table table_name add constrain con_name primary key(col_name) - 删除主键约束 - 16.2 外键约束 - 添加外键约束 - 语法:alter table table_name add constrain con_name foreign key(col_name) references table(col_name) - 删除外键约束 - 16.3 检查约束 - 添加检查约束 - 语法:alter table table_name add constraint con_name check(expression) - 删除检查约束 - 16.4 默认约束 - 添加默认约束 - 语法:alter table table_name alter col_name default value - 删除默认约束 - 16.5 自动增长 - 添加自动增长 - 语法:alter table table_name modify column col_name type auto_increment - 删除自动增长17. 条件查询 - 17.1 普通条件查询 - 语法:select * from table where expression - where:将查询到的数据,通过where后的expression一条一条的进行筛选,符合要求则显示,不符合要求则去除。 - 17.2 模糊查询 - 语法: - between….and…. - 范围查询 in 、or - like 通配符 %和_ - 17.3 查询空值的运算符 - is null18. 数据排序 - 作用:对查询出的数据进行升序或降序排列 - 语法:select col11,col2,col3…from table order by order_by_collist[asc/desc] - 18.1 多列排序: - 关注点:升序、降序、优先级 19. 数据分组 - 语法:select col1..col2.. from table Group by col分组配合排序 - 注意:如果使用了group by分组,那么select不允许出现其他列,除非这些列包含在分组中20. 聚合函数 - 作用:对多条数据做统计功能 - 注意:在使用聚合函数后,select后不允许出现其他列,除非这些列包含在分组中或者聚合函数中 - 20.1 常用聚合函数 - 20.2 聚合函数与Group by语句配合使用21. Having by语句 - 作用:having by为group by之后得到数据进行进一步的筛选 - 类似于select 和 where的关系。Where为select后的数据进行进一步的筛选。 - Having by 为group by后的数据进行筛选22. Limit关键字的使用 - 语法: select * from table limit m select * from table limit m,n23. sql语句执行顺序 — from 表名 — where — group by — select distinct * — having — order by — limit24. 连接查询 - 当查询结果的数据来自多张表的时候,需要将多张表连接成一个大的数据集,再选择合适的列进行返回。 - 24.1 内连接:选择两种表中交叉的数据进行返回 - 24.2 左连接:选择左表全部数据以及右边中和左表相同的数据 - 24.3 右连接:选择右表全部数据以及左表中和右表相同的数据 - 24.4 笛卡尔积:两张表数据行的乘积25. 自关联 - 概念:让某张表自己和自己进行连接。26. 子查询 - 概念:将一个查询结果在另一个查询中使用,称之为子查询。 - 语法:select * from (select col1,col2,col3 from table) as t - 26.1 子查询分类 - 独立子查询: - 子查询可以独立运行 - 相关子查询: - 子查询中引用了父查询的结果或者父查询中引用了子查询的结果,子查询和父查询都不可以独立运行 -26.2 子查询注意点: - 如果主查询使用到子查询的数据,则必须给子查询起一个表名。 - 在子查询使用关系运算符的时候要注意,因为子查询有可能返回多个值。 云数据库SQLServer bash bash指令 apt-get 数据库 0 人点赞 上一篇:分享雷军22年前编写的代码