Linux || MySQL数据库基础语句

linux】之MySQL语句详解 阅读详情

数据库

底层是TCP协议
Linux文件编译时,要连接mysql数据库

gcc -o test test_conn.c -lmysqlclient
  • 进入mysql 010517
    在这里插入图片描述

MySQL服务启动

​ 1.手动

​ 2.cmd ->services.msc

​ 3.管理员身份打开cmd

​ net stop MySQL57:启动mysql服务

​ net start MySQL57:关闭mysql服务

登录和退出

  • 登录
    ​ mysql -u root -p
    ​ mysql -hip -u root -p
    ​ mysql --host=ip --user root --password

  • 退出:
    exit
    quit
    ctrl + d

  • 目录结构
    ​ 安装目录
    ​ 数据目录


  • root

    root % 远程登录
    root localhost 从本地登录数据库

  • 修改密码

管理员用户状态下: 
alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY  '111111';
select version(); //显示当前版本
select database(); //查看当前使用的是那个数据库
select user(); //查看当前登录用户

SQL

Structured Query Language 结构化查询语言

语法

  • 可以单行或多行书写,以分号结尾
  • 空格和缩进 增强语句可读性
  • MySQL中的SQL语句不区分大小写,关键字建议使用大写
  • 注释: ​ 单行注释:-- 或 # ​ 多行注释:/* */

分类

DDL(Data Definition Language)数据定义语言DML(Data Manipulation Language)数据操作语言DCL(Data Control Language)数据控制语言DQL(Data Query Language)数据查询语言
定义数据库对象:数据库 表 列等,对数据库中表的数据进行增删改数据库的访问权限和安全级别,创建用户​ 查询数据库中表的记录数据
关键字:create,drop,alter关键字:insert,delete,update关键字:GRANT, REVOKE关键字:select,where

DDL

操作数据库:CRUD

Create:创建

   create database db1;//创建数据库

   create database db1 character set utf8;//创建数据库时默认utf8

   create database if not exists db1;//db1不存在时创建数据库,存在则不创建
   
   create database if not exists db1 character set utf8;//创建数据库,判断是否存在,并指定字符集为utf8

Retrieve:查询

   show databases;//查询所有数据库名称

   show create database db1;//查询某个数据库的字符集

Update:修改

alter database 数据库名称 character set 字符集名称;//修改数据库字符集

Delete:删除

 drop database 数据库名称; //删除数据库

 drop database if exists 数据库名称;//判断数据库存在,存在则删除

使用数据库

 use 数据名称; //使用数据库

 select database(); //查询当前正在使用的数据库名称

操作表

Create:创建

   create table 表名(
     列名1 数据类型1 约束,
     列名2 数据类型2...
     列名n 数据类型n        //最后一列不需要逗号
      );
create table student(
  id int,
  name varchar(32),
  age int,
  score double(4,1),
  birthday date,
  insert_time timestamp
);
create table #Temp(字段1 类型,字段2 类型...);//临时表表名前面加“#”
数据类型
1.int:整数类型
  TINYINT:字节大小:1
2.double:小数类型     
3.date:日期,年月日
4.datetime:日期,年月日时分秒
5.timpstamp:时间错类型,年月日时分秒,如果不赋值,或赋值为null,则默认使用当前系统时间来自动赋值
6.char : 0~255  长度大小等于输入字符个数加一
varchar:字符串,name varchar(20):姓名最大20个字符  // 输入字符个数等于长度大小
约束

概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性

分类:

主键约束:primary key
  • 非空且唯一
  • 一张表只能有一个字段为主键
  • 主键就是表中记录的唯一标识
  • 创建表时添加主键约束
CREATE TABLE stu( id INT PRIMARY KEY, NAME VARCHAR(20)  );       
  • 删除主键
ALTER TABLE stu DROP PRIMARY KEY;     
  • 创建表完后添加主键
 ALTER TABLE stu MODIFY id INT PRIMARY KEY;       
  • 自动增长
    如果某一列是数值类型的,使用auto_increment可以来完成值自动增长
CREATE TABLE stu(
id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) 
); //创建表时添加主键约束,并完成主键自动增长

ALTER TABLE stu MODIFY id INT;    //删除自动增长 
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;  //添加自动增长               
非空约束:not null 某一列的值不能为null
  • 创建表时添加约束
 CREATE TABLE stu( id INT, nam VARCHAR(10) NOT NULL -- name非空 );            
  • 创建表完后添加非空约束
     ALTER TABLE stu MODIFY NAME VARCHAR(10) NOT NULL;          
  • 删除非空约束
 ALTER TABLE stu MODIFY NAME VARCHAR(10);              
唯一约束:unique 某一列的值不能重复
  • 唯一约束可以有null值,但是只有一条记录为null
  • 删除唯一约束
      ALTER TABLE stu DROP INDEX phone_number;        
  • 创建表时添加唯一约束
 CREATE TABLE stu( id INT, phone_number VARCHAR(20) UNIQUE );              
  • 表创建后添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(10) UNIQUE;              
外键约束:foreign key

复制表

create table stu like student;//创建stu表和 student表一样
select * into B from A where 1=0;//只复制结构
select * into B from A;//复制数据

Retrieve:查询

show tables; //查询所有表
desc 表名; //查询表结构
show create table t_user;

Update:修改

alter table 表名 rename to新的表名; //修改表名
show create table 表名;//查看表的字符集
alter table 表名 character set 字符集名称; //修改表的字符集
alter table 表名 add 列名 数据类型;  //添加一列
alter table stu change 列名 新列名 新数据类型; //修改列名称类型
alter table stu modify 列名 新数据类型;  //修改列类型
alter table stu drop 列名; //删除列

Drop:删除

drop table 
drop table if exists 表名;

DML

添加数据

   语法:insert into 表名(列名1,列名2,,列名n) values(值1,值2,,值n);

注:

1.列名和值要一一对应

2.如果表名后,不定义列名,则默认给所有列添加值

3.除了数字类型,其他类型需要用引号(" ") 引起来 、单双都可以

删除数据

   //语法:
   delete from 表名 [where 条件];

注:

​ 1.如果不加条件,则删除表中所有记录

​ 2.要删除所有记录

​ 1.delete from 表名; --不推荐使用,有多少条记录就会执行多少次删除操作

​ 2. TRUNCATE TABLE 表名; 推荐使用、先删除表,并且创建一张一样的表

修改数据

语法:update 表名 set 列名1 =1,列名2 =2.。。 where 条件

注: 不加任何条件 会将所有数据全部修改

DQL

查询表中的记录

1.语法

select
​      字段列表
   from
​      表名列表
   where
​      条件列表
   group by
​     分组字段
   having
​      分组之后的条件
   order by
​      排序
   limit
​      分页限定

基础查询

多个字段的查询

 select 字段名1,字段名2.。。。from 表名;

注意:查询所有字符段可以使用*来代替字段列表

SELECT NAME,age FROM student; 
SELECT * FROM student;          //查询所有的信息 
SELECT address FROM student;    //查询地址      

去除重复 DISTINCT

 SELECT DISTINCT address FROM student;        //消除相同的地址 
 SELECT DISTINCT NAME,address FROM student;   //当姓名和地址都相同时才会消除

计算列

可以使用四则运算计算一些列的值(数值型)

IFNULL(表达式1,表达式2):null 参与的运算,计算结果都为null

​ 表达式1:那个字段需要判断是否为空

​ 表达式2:如果该字段为null 后的替换值

SELECT NAME,math,english,math+english FROM student; //如果有null参与的运算计算结果都为null 

SELECT NAME,math,english,math+IFNULL(english,0) FROM student;   

起别名

AS 或者 空格

 SELECT NAME,math,english,math+IFNULL(english,0) AS 总分 FROM student; 

SELECT  NAME,math,english,math+IFNULL(english,0) 总分 FROM student;         

条件查询

where字句后跟条件

运算符: >、 <、 >=、 <=、 =、 <>或 !=

SELECT * FROM student WHERE age!=35;

BETWEEN AND

SELECT * FROM student WHERE age BETWEEN 30 AND 40;

IN(集合)

SELECT * FROM student WHERE age IN(22,35,45);

LIKE:模糊查询

​ 占位符:

​ _ :单个任意字符

​ %:多个任意字符

     SELECT * FROM student WHERE NAME LIKE '马%';  //姓马的人
_马%	//第二个字是马的人                                                                                   %马%    //姓名中含有马的人                                                                ___     //姓名是三个字的人

IS NULL

SELECT * FROM student WHERE english IS NULL;

AND &&

SELECT * FROM student WHERE age>=20 AND age<=30;

OR ||

SELECT * FROM student WHERE age = 20 OR age = 35;

NOT !

SELECT * FROM student WHERE english IS NOT NULL;

查询语句

排序查询

  • order by 子句
    排序方式
    ASC:升序 默认的
    ​ DESC:降序

    如果有多个排序条件,则前边的条件值一样时,才会判断第二条件
  order by 排序字段1 排序方式1,排序字段2 排序方式2.。。

  SELECT * FROM student ORDER BY math DESC, english DESC;        
  • 聚合函数:将一列数据作为一个整体,进行纵向的计算
  1. count:计算个数
    ​ 会默认排除null值
SELECT COUNT(english) FROM student; 
SELECT COUNT(IFNULL(english,0)) FROM student;
  1. max:计算最大值
  2. min:计算最小值
SELECT MAX(math) FROM student;
SELECT MIN(math) FROM student;         
  1. sum:计算和
  2. avg:计算平均值
 SELECT SUM(math) FROM student; SELECT AVG(math) FROM student;             

分组查询:

  • group by 子句
    注意:
  1. 分组之后查询的字段:分组字段,聚合函数
  2. where 和having区别
    where在分组之前进行限定,如果不满足条件,则不参与分组,having在分组之后进行限定,如果不满足条件,则不会被查询
    ​ where后不可以跟聚合函数,having可以进行聚合函数的判断
  SELECT sex,AVG(math),COUNT(id) FROM student GROUP BY sex; 
  
  SELECT sex,AVG(math),COUNT(id) FROM student WHERE math>70 GROUP BY sex HAVING COUNT(id)>2;          

分页查询

语法:limit 开始的索引,每页查询的条数

公式:开始的索引 = (当前的页码-1)*每页显示的条数

limit是MySQL的“方言”

 SELECT * FROM student LIMIT 0,3; -- 第一页
 SELECT * FROM student LIMIT 3,3; -- 第二页         

Linux访问mysql

#include <stdio.h>
#include <stdlib.h> 
#include <mysql/mysql.h> //引用头文件
int main() { 
MYSQL mysql; //初始化连接
if ( mysql_init(&mysql) == NULL ) { printf("mysql init err\n"); 
return 0; }
if ( mysql_real_connect(&mysql,"localhost","root","123456","testdb",3306,NULL,0) == NULL)
//连接数据库
{
printf("connect mysql failed\n"); 
return 0; 
}
printf("connect mysql success\n"); 
//char* sql = "insert into student2 values(6,'小王')"; 
char* sql = "select * from student2"; 
int query_res = mysql_query(&mysql,sql); 
if ( query_res != 0 ) {
printf("queryerr:%s\n",mysql_error(&mysql)); 
return 0; }
//MYSQL_RES * mysql_res =mysql_use_result(&mysql);
MYSQL_RES * mysql_res =mysql_store_result(&mysql); 
if ( mysql_res == NULL ) { 
printf("result err:%s\n",mysql_error(&mysql)); 
return 0; }
//判断返回的行数 
int num = mysql_num_rows(mysql_res); 
if ( num == 0 ) { 
printf("没有记录\n"); 
return 0; }
printf("得到:%d 条记录\n",num); 
MYSQL_ROW sqlrow; 
for( int i = 0; i < num; i++) { 
sqlrow = mysql_fetch_row(mysql_res); 
if (sqlrow == NULL) { printf("数据处理完,或者出错\n"); 
break; }
//判断列数 
int fields = mysql_field_count(&mysql); for( int j = 0; j < fields; j++) { printf("fieds[%d]=%s\n",j,sqlrow[j]); } }
//MYSQL_ROW sqlrow = NULL;
//while( ( sqlrow = mysql_fetch_row(mysql_res)))
//{ //printf("sqlrow[0]=%s,sqlrow[1]=%s\n",sqlrow[0],sqlrow[1]); // 
}

Linux运维常用MySQL数据库语法 Linux运维常用MySQL数据库语法,数据库的增删改查 阅读详情

相关推荐

Linuxmysql的SQL语句基本操作

一、登录mysql 1、先启动mysql服务 service mysql start 2、再登陆 第一种方法: mysql -u root -p 第二种方法: 找到mysql路径: ① cd /home/mysql-5.7.32/bin ② ./mysql -u root –p root@kylin-virtual-machine:~# cd /home/mysql-5.7.32/bin/ root@kylin-virtual-machine:/home/mysql-5.7.32/bin#./my

wkl_venus的博客 4071

Linux中用的到的MySql语句

连接mysql数据库语句 mysql -u 用户名 -p密码 退出mysql exit(回车) 创建数据库 create database 数据库名; 删除数据库 drop database 数据库名; 额外补充,当你不确定该库是否存在时可以用 if exists drop database if exists mp; Query OK, 0 rows affected, 1 warning (0.00 sec) //产生一个警告说明此数据库不存在 如果存在 Query O...

m0_56907673的博客 1143

Linux中使用MySQL基础SQL语句及校验规则

Linux中使用MySQL基础SQL语句及校验规则

2301_77479435的博客 1232

Linux学习--MySQL学习之查询语句

【代码】Linux学习--MySQL学习之查询语句

丢爸 1244

Linux访问MySQL数据库(包含实验案例)

访问MySQL数据库、使用MySQL数据库、创建及删除库和表、管理表中的数据记录、数据用户授权、实验案例

hey1616的博客 5011

linux之database(数据库基础)二

linux之database(数据库基础) 01: 数据库服务概述 、 构建MySQL服务 、 数据库基本管理 、 MySQL数据类型 02: 表结构 、 MySQL键值 03: 数据导入导出 、 管理表记录 、 匹配条件 、 MySQL管理工具 04: 用户授权 、 完全备份 、 增量备份 05: percona软件介绍 、 innobackupex备份与恢复 文章目录linux之database(数据库基础)表结构 、 MySQL键值案例1:约束条件案例2:修改表结构案例3:index 普通索引案例4

weixin_43051805的博客 1064

linux之database(数据库基础)四

linux之database(数据库基础) 01: 数据库服务概述 、 构建MySQL服务 、 数据库基本管理 、 MySQL数据类型 02: 表结构 、 MySQL键值 03: 数据导入导出 、 管理表记录 、 匹配条件 、 MySQL管理工具 04: 用户授权 、 完全备份 、 增量备份 05: percona软件介绍 、 innobackupex备份与恢复 文章目录linux之database(数据库基础)用户授权 、 完全备份 、 增量备份用户授权问题步骤一:用户授权root密码问题步骤一:恢复管

weixin_43051805的博客 913

MySQL基础MySQL基础MySQL基本操作与架构

MySQL学习】关于mysql基础知识,重点在于对mysql架构的了解!!

2301_80220607的博客 4420

数据库||基础用运

以下命令都是在Linux中使用MySQL指令实现的 连接服务器 mysql -uroot -p mysql -u root -p 完整的连接方式 mysql -h 127.0.0.1 -P 3306 -u root -p 注意 如果没有写 -h 127.0.0.1 默认是连接本地 如果没有写 -P 3306 默认是连接3306端口号 创建数据库(用户) create database [数据库...

Template Code 472

mysql基础语句linux_MySQL数据库基本语句

MySQL数据库系统是一个典型的C/S(客户端/服务器)架构的应用,要访问MySQL数据库需要使用专门的客户端软件。在Linux系统中,最简单、易用的MySQL客户端软件是其自带的mysql命令工具。通过CentOS 7 编译安装MySQL数据库系统可以了解并掌握MySQL数据库的安装方式,作为一名合格的运维工程师,MySQL数据库的基本操作也是必须要掌握的。MySQL是一套数据库管理系统,在每台...

weixin_29516495的博客 183

Linux实战之MySQL数据库——MySQL管理命令与基础操作

mysql管理命令 mysql命令行管理 (1)数据库链接 链接本地数据库mysql -uroot -pCloudbu@123 链接远程数据库mysql -h192.168.213.129 -uroot -pCloudbu@123 选项 含义 -h 指定主机名 -P MySQL服务器端口 -u 指定用户名 -p 指定登录密码 -e 接SQL语句 (2)数据库...

遇见你我看到光 5208

linux mysql基本查询语句、表连接、where子句(第三天)

左外连接的结果集 = 内连接的结果集 + 左表中匹配不上的记录。右外连接的结果集 = 内连接的结果集 + 右表中匹配不上的记录。使用where子句实现三表之间的连接 使用and进行连接。作用: 根据条件表达式从数据源中筛选出符合条件的记录。需求:列出学生的信息,包括学号、姓名和班级名称。语法:逻辑表达式1 and 逻辑表达式2。语法:逻辑表达式1 or 逻辑表达式2。判断一个表达式的值是否出现在列表中。判断表达式的值是否在给定的闭区间。判断表达式的值是否符合给定的模式。:匹配任意长度的任意字符,

weixin_45205160的博客 462

linuxMysql查询语句

一.查询 库和表信息 mysql> show databases; 查看数据 mysql> use mysql;进入数据库 mysql> show tables; 看当前库中有哪些表 二.查询表内容 mysql> select * from mysql.user; 查看表内容 mysql> desc mysql.user; 查看表结构,可以看到字段类型,以及主...

千寻的博客 7242

Linux系统——Mysql数据库操作

查看数据库/表和表结构、创建数据库/表和删除数据库/表、数据表的增删改查等操作、数据库表的清空表/临时表和克隆表等操作、数据库的用户授权相关操作(数据库用户管理、数据库授权)

一坨小橙子的博客 6900

4种使用Linux命令查询MySQL的高效方法

介绍在bash脚本或Linux命令行界面中运行MySQL查询的四种方法。

u013643074的博客 3515

MySQL常用命令(Linux环境)

MySQL常用命令(Linux环境)

白白白鲤鱼的博客 901

Linux系统中的SQL语句

本节主要学习,SQL语句语句类型,数据库操作,数据表操作,和数据操作等。

lsqaa的博客 2694

linuxMySQL的常用操作命令

一、启动与退出 1、启动 MySQL 服务 net start mysql 或 service mysql start 2、关闭 MySQL 服务 net stop mysql 或 service mysql stop 3、登录 MySQL 语法:./mysql -u 用户名-p 输入命令./mysql -u root -p,回车后提示输入密码,输入123456,然后回车即可进入到mysql中了,mysql的提示符是:mysql>。 注意:若连接到另外的服务器...

weixin_43268590的博客 4万+
上一篇: c++ || 构造函数 析构函数
下一篇: Linux || 数据库事务 视图 索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值