首页 > 数据库 >MySQL的SQL语句

MySQL的SQL语句

时间:2024-09-09 19:51:26浏览次数:11  
标签:语句 INSERT SQL INTO 表名 values emp MySQL 数据库

一、SQL

1、概念


  SQL: Structure Query Language(结构化查询语言),SQL最早是被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准。后来被国际化标准组织(ISO)采纳为关系型数据库语言的国际标准。​

2、分类​


1)DDL(Data Definition Language):数据定义语言,用来定义数据库对象(数据库、表、列),创建一个数据库、创建表、添加字段等。​
2)DQL(Data Query Language):数据查询语言,用于查询记录(数据),专门针对数据的查询的。​
3)DML(Data Manipulation Language):数据操作语言,用于定义数据库记录(数据),数据的新增、修改、删除。​
4)DCL(Data Control Language):数据控制语言,用于定义访问权限和安全级别、控制事务、添加用户、赋予权限、修改密码等。

二、新建查询用来书写sql语句

三、DDL语句

3.1数据库的操作

3.1.1展示所有的数据库

show databases;

3.1.2、创建数据库

create database 数据库名;

 

3.1.3创建数据库,并采用指定的字符集

create database 数据库名 character set UTF8;

这里提醒utf8是utf8mb3的别名,以后可能会变成UTF8MB4的别名,保险起见换成UTF8MB4。注意,这不影响我们使用。

 

3.1.4查看创建数据库定义的信息

show create database 数据库名; 

3.1.5切换当前使用的数据库

框住的地方显示我们正处于哪个数据库下,现在不在任何数据库下,相当于处于一个默认的地方 

 use 数据库名; 

 这里表示已经切换到该数据库下了。

3.1.6删除数据库 (慎用!!!)

drop database 数据库名;

 

3.2表的操作

3.2.1展示所有表

show tables; 

 此时我的mydb5下还没有创表,所以一个都没有。

3.2.2创建表

create table 表名(

字段1 数据类型(数据长度),

字段2 数据类型(数据长度),

...

字段n 数据类型(数据长度)

); 

3.2.3查看表结构

# 运行效果一样

desc 表名;

describe  表名;

 3.2.4查看创建表的信息​

 show create table 表名;

 这里展现的就是创表语句以及一些默认的东西。

3.2.5修改表名

alter table 表名 rename to 新表名; 

 3.2.6给一张表添加字段

alter table 表名 add 字段名 数据类型(数据长度);

 此时字段从三个变成了四个。

3.2.7修改字段类型

alter table 表名 modify 字段名 数据类型(数据长度);

 3.2.8修改字段名

alter table 表名 change 原字段名 新字段名 数据类型(数据长度);

 

 3.2.9删除字段​

alter table 表名 drop 字段名;

 3.3数据类型 

数据类型

类型描述

示例

int

整型,整数类型

int(3) 可以有三个字符

double

浮点型

double(5,2): 表示最多有5位,其中必须有两位数小数,即最大值是999.99

char

固定长度的字符串

char(5): 固定5位字符,即'aa'也占用5位字符

varchar

可变长度的字符串

varchar(5): 可以根据内容动态分配空间,'aa'只占用两位。括号里的5表示最大的位数。

text

字符串类型

blob

字节类型

很少用的,一般存在 比如 音乐,图片

date

日期类型

yyyy-MM-dd

time

时间类型

hh:mm:ss

timestamp

时间戳类型

yyyy-MM-dd hh:mm:ss,会自动赋值

datetime

时间类型

yyyy-MM-dd hh:mm:ss

 这些数据类型在学习初期经常用的也就  ‘int’ ,‘varchar’。 

 四、DQL语句

4.1准备数据

这里要先讲一个DML语句里的操作,叫insert,意思是往表里添加数据。实例下面讲DML语句时再说,先知道这么个事,下面的代码直接复制就可以使用。

insert into 表名(列名1,列名2 ...)values(列值1,列值2...);​
注意:列名与列值的类型、个数、顺序要一一对应。

CREATE TABLE stu (
    sid    CHAR(6),
    sname        VARCHAR(50),
    age        INT,
    gender    VARCHAR(50)
);
INSERT INTO stu VALUES('S_1001', 'liuYi', 35, 'male');
INSERT INTO stu VALUES('S_1002', 'chenEr', 15, 'female');
INSERT INTO stu VALUES('S_1003', 'zhangSan', 95, 'male');
INSERT INTO stu VALUES('S_1004', 'liSi', 65, 'female');
INSERT INTO stu VALUES('S_1005', 'wangWu', 55, 'male');
INSERT INTO stu VALUES('S_1006', 'zhaoLiu', 75, 'female');
INSERT INTO stu VALUES('S_1007', 'sunQi', 25, 'male');
INSERT INTO stu VALUES('S_1008', 'zhouBa', 45, 'female');
INSERT INTO stu VALUES('S_1009', 'wuJiu', 85, 'male');
INSERT INTO stu VALUES('S_1010', 'zhengShi', 5, 'female');
INSERT INTO stu VALUES('S_1011', 'xxx', NULL, NULL);

 4.2基础查询

4.2.1查询所有列

select * from 表名;    #   ‘  *  ’代表查询所有

 

4.2.2查询指定列

select 列1,列2 from 表名; 

 

4.3条件查询 

4.3.1where子句

select 列1,列2 from 表名 where 条件; 

* 是代表关于 age=35 的所有我都要查出来。 

 

 4.3.2模糊查询

% : 代表0个或者多个字符

_ : 代表任意一个字符

select 列1,列2 from 表名 where 列名 like '条件';

这个查询语句的意思是只查询名字以  s  开头的数据 

 

4.3.3 and or in

and 并且;  or 或者 ; in 在这个里面 

查询年龄大于三十并且性别为男的记录

查询学号为S_1001,或者姓名为liSi的记录

 查询学号为S_1001,S_1002,S_1003的记录,只要是他们三个之中的一个就会被检索出来。

4.4字段控制 

4.4.1准备数据

CREATE TABLE emp(
    empno    INT,
    ename    VARCHAR(50),
    job        VARCHAR(50),
    mgr        INT,
    hiredate    DATE,
    sal        DECIMAL(7,2),
    comm    decimal(7,2),
    deptno    INT
);
INSERT INTO emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp values(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp values(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp values(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp values(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp values(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp values(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp values(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp values(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10); 

 CREATE TABLE dept(
    deptno        INT,
    dname        varchar(14),
    loc            varchar(13)
);
INSERT INTO dept values(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept values(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept values(30, 'SALES', 'CHICAGO');
INSERT INTO dept values(40, 'OPERATIONS', 'BOSTON');

4.4.2去重

去重:相同的就展示一次

select distinct 列1,列2 from 表名; 

 

4.4.3列与列相加

 前提是相加的两列符合加法运算的条件。​
select 列1,列2+列3 from 表名; 

 

因为他们中有人的奖金是null不是0,所以会有空值,只需要使用一个函数就可以解决了。 

 ifnull(值1,值2) 如果值1是null,那就用值2替换他

 

4.4.4给列添加别名

使用 as 关键字,可以省略

select 列1,列2 as 别名 from 表名 where 条件; 

 、

4.4.5 聚合函数

多条数据变一条数据​
包含有: max、min、sum、count、avg等常见的函数。​
- max(): 计算指定列数据的最大值​
- min(): 计算指定列数据的最小值​
- count(): 计算指定列不为NULL的数据的数量​
- sum(): 计算指定列的数值的和,如果计算的列的类型不是数值类型,计算结果为0​
- avg(): 计算指定列的数值的平均值,如果计算的列的类型不是数值类型,计算的结果为0

 示范一个,太多了一个个放图影响阅读。

 

4.4.6分组查询

根据某一字段的值去分组,再使用分组之后,在 select 和 from 之间只能加分组字段或者聚合函数,分组使用group by

select 分组字段,聚合函数 from 表名 group by 分组字段; 

stu 按照性别分组,并且告知每个性别的人数 

 

having 的用法:​
必须和group by 一起使用,作用是对分组完之后的数据进行条件过滤!!!

having之后可以使用聚合函数,where不可以使用聚合函数。 

 4.4.7排序

根据某一字段进行排序

select 列1,列2 from 表名 order by 排序字段;

asc:升序(可省略) desc:降序 (不可省略)

 

4.4.8 分页

使用limit

select 列1,列2 from 表名 limit 数字1,数字2;

数字1:起点 数字2:条数 意思是从哪里开始要多少条数据

求 工资 最高的前5个人

 4.5书写顺序

select [distinct] ... from ... where ...group by ... having ...order by ... [limit ...]​

 4.6执行顺序

1. 先执行from子句: 基于表进行查询操作​
2. 再执行where子句: 进行条件筛选或者条件过滤​
3. 再执行group by子句: 对剩下的数据进行分组查询。​
4. 再执行having子句: 分组后,再次条件筛选或过滤​
5. 然后执行select子句: 目的是选择业务需求的字段进行显示​
6. 再执行order by子句: 对选择后的字段进行排序​
7. 最后执行limit子句: 进行分页查询,或者是查询前n条记录

五、DML语句

5.1新增

insert into 表名(列名1,列名2 ...) values(列值1,列值2...);

注意:列名与列值的类型、个数、顺序要一一对应。

 当你要添加的值包含表里所有的字段的时候,前面的(列名1,列名2 ...) 可以不要,但是值的顺序还是不能乱。

 

 5.2删除

# 删除数据​
delete from 表名 where 条件;​
# 删除掉表中所有的数据​
truncate table 表名;

DELETE 和 TRUNCATE​
1. delete删除表中的数据,表结构还在;删除的数据可以恢复。​
2. truncate是直接将表DROP掉,然后再按照原来的结构重新创建一张表。数据不可恢复。​
3. truncate删除效率比delete高。

 

5.3修改

 updata 表名 set 列1=新值,列2=新值...列n=新值 where 条件

工资 800 变5000。希望大家以后一万变两万。

 六、DCL语句

 6.1授予特定用户的权限​

grant 权限 on 对象 to 用户;

6.2授予所有用户的权限

grant 权限 on 对象 to public; 

6.3 授予多个权限

grant 权限1,权限2 on 对象 to 用户;

6.4移除特定用户的权限

revoke 权限 on 对象 from 用户; 

6.5移除所有用户的权限

revoke 权限 on 对象 from public; 

6.6移除多个权限

revoke 权限1,权限 on 对象 from 用户; 

标签:语句,INSERT,SQL,INTO,表名,values,emp,MySQL,数据库
From: https://blog.csdn.net/xieyichun_/article/details/141968551

相关文章

  • JSP课程设计|基于Jsp和MySql实现的农场信息管理系统
    3.1基本开发环境配置根据上述要求,结合项目开发实际需要,我们将项目所需基本开发环境清单列出如下所示。操作系统:MicrosoftWindow10编程语言:Java编程IDE:JetBrains-IntellijIdeaUltimate服务器:Apache-Tomcat-9.0.6数据库:MySQL5.7.21CommunityServer由于这些环......
  • MySQL数据库insert,delete,update,select语句
    MySQL数据库insert,delete,update,select语句是在做数据处理是的重要部分首先我们要先拥有一个表格,这里我建立了一个student表然后在这个表格中添加一些数据这里要使用insert的语句INSERTINTOstudent(NO,NAME,age)VALUES(1001,'张三',20);这里我创建到的表有三个属性......
  • Linux上rpm安装MySQL8
    1.下载安装包下载链接https://downloads.mysql.com/archives/community/或者在MySQL官网根据提示一步一步点进去选择合适的版本2.上传至服务器,解压tar-xvfmysql-8.0.33-1.el7.x86_64.rpm-bundle.tar3.安装参考官方文档https://dev.mysql.com/doc/refman/8.0/en......
  • mybaties-plus使用@SelectProvider实现动态SQL
    mybaties-plus使用@SelectProvider实现动态SQL新建DynamicSqlProvider.java类packagecom.muphy.mapper;importorg.apache.ibatis.jdbc.SQL;importjava.util.*;publicclassDynamicSqlProvider{publicStringbuildSelectSql(Map<String,Object>params){......
  • SQL SERVER -- JSON处理
    --JSON 字符串转 行记录Declare@JsonStrNvarchar(Max)='[{"State":0,"Name":"语文","ReMark":"了解国学信息","RepDtl":[{"ID":1,"Age":11},{"ID":2,"Age":12},{"ID&quo......
  • CentOS卸载MySQL
    查看MySQL状态systemctlstatusmysqld2.如果MySQL处于启动状态,则停止MySQLsystemctlstopmysqld3.取消开机自启动systemctldisablemysqld4.查找已安装的MySQL包rpm-qa|grep-imysql#或yumlistinstalled|grep-imysqlmysql-community-client.x86_64......
  • MySQL 触发器
    本篇文章介绍了触发器的概念以及为什么使用触发器,触发器的类型和何时执行它们;列举了INSERT、DELETE和UPDATE操作的触发器示例。目录MySQL触发器应用场景创建触发器创建规则创建语法创建示例注意事项删除触发器使用触发器INSERT触发器确定新生成值测试触发器DE......
  • mysql 如何开启 binlog
    mysql如何开启binlog在MySQL中开启二进制日志(binlog)通常涉及修改MySQL的配置文件(通常是my.cnf或my.ini),并重启MySQL服务。以下是开启binlog的步骤:修改配置文件:打开MySQL的主配置文件my.cnf(Linux系统通常位于/etc/mysql/目录下,Windows系统可能位于MySQL安装目录下)。在[mysqld......
  • java连接MySQL
    一.下载驱动包java通过JDBC(JavaDatabaseConnectivity)包连接数据库<dependency>  <groupId>com.mysql</groupId>  <artifactId>mysql-connector-j</artifactId>  <version>9.0.0</version></dependency>二.配置数据源(数据库的信息) ......
  • 从管控角度谈慢SQL治理
    一、什么是慢SQL慢SQL是指那些执行效率低下、响应时间长,导致用户等待时间变长和服务器资源利用率下降的SQL查询。那么,如何定义一个SQL查询是"慢"的呢?这不是一个绝对时间的问题,而是需要从多维度考量。时间维度最常见的定义慢SQL的方法是时间阈值。这个阈值可以根据不同的系统和......