SQL语句

一、DDL

(1)DDL-------数据库操作

1、查询所有数据库

show databases;

2、查询当前数据库

select database();

3、使用/切换数据库

use 数据库名;

4、创建数据库 

[]中的可以省略

create database [if not exists] 数据库名 [default charset utf8mb4];

5、删除数据库

drop database [if exists] 数据库名;

6、创建表

[]中的可以省略

crate table 表名(

   字段1  字段类型  约束  【comment 字段1注释】,

   字段2  字段类型   约束  【comment 字段2注释】

)[comment 表注释];

create table user(
    id int primary key auto_increment comment '用户ID 唯一标识',
    username varchar(50) not null unique comment '用户名',
    name varchar(50) not null comment '用户姓名',
    age int comment '用户年龄',
    gender char(1) default '男' comment '用户性别'
)comment '用户信息表'

约束:约束是作用于表中字段上的规则,用于限制存储在表中的数据

目的:保证数据库中数据的正确性、有效性和完整性

约束关键字描述
非空约束not null限制该字段值不能为null
唯一约束unique保证该字段所有数据都是唯一的,不重复的
主键约束primary key主键是一行数据的唯一标识,要求非空且唯一
默认约束default保存数据时,如果未制定该字段值,则采用默认值
外键约束foreign key让两张表的数据建立连接,保证数据的一致性和完整性

auto_increment   让主键的值自增,如果是1,2,3,10,那么下一位自增就是从11开始

7、常用数据类型

数值类型

类型有符号(signed)范围

无符号(unsigned)范围

tinyint(-128,127)(0,255)

int

-2,147,483,648 到 2,147,483,6470 到 4,294,967,295
bigint-2^63 到 2^63 - 10 到 2^64 - 1

字符串类型

类型大小描述
char0-255 bytes定长字符串
varchar0-65535 bytes变长字符串

char的性能略高于varchar,因为char是固定的长度

日期格式

类型格式描述
dataYYYY-MM-DD日期值
datatimeYYYY-MM-DD HH:MM:SS混合日期和时间值

注意点:

char于varchar的区别

        char是定长字符串,varchar是变长字符串

        如果一个字段是固定的,比如手机号,身份证号,建议使用char

        如果一个字段不是固定的,比如用户名,姓名,建议使用varchar

(2)DDL-----表结构操作-查询、修改、删除

1、查询当前数据库的所有表

show tables;

2、查询表结构

desc 表名;

3、查询建表语句

show create table 表名;

4、添加字段  []中的可以省略

alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];

5、修改字段类型

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

6、修改字段名与字段类型

alter table 表名 change 旧字段名 新字段名 类型(长度)【comment 注释】【约束】;

7、删除字段

alter table 表名 drop column 字段名;

8、修改表名

alter table 表名 rename to 新表名;

9、删除表

drop table 【if exists】 表名;

注意:在删除表时,表中的数据也会全部删除

二、DML

(1)DML------insert

1、指定字段添加数据

insert into 表名 (字段名1,字段名2) values (值1,值2);

2、全部字段添加数据

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

3、批量添加数据(指定字段)

insert into 表名 (字段名1,字段名2) values (值1,值2),(值1,值2);

4、批量添加数据(全部字段)

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

注意:1、字符串和日期类型的数据需要用引号(单引号,双引号都可以,推荐使用单引号)

            2、插入数据的大小/长度,应该在字段的规定范围内

(2)DML ------- update

1、修改数据

update 表名 set 字段名1 = 值1,字段名2 = 值2, .... [where 条件]

注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据

(3)DML --------- delete

1、删除数据

delete from 表名 【where 条件】;

注意:1、delete 语句的条件可以有也可以没有,如果没有条件,则会删除整张表的所有数据

           2、delete 语句不能删除某一个字段的值,如果要操作,可以使用update,将该字段的值置为null

三、DQL         

(1)DQL-基本查询

1、查询多个字段

select 字段1,字段2,字段3 from 表名;

2、查询所有字段

select * from 表名;

3、为查询字段设置别名,as关键字可以省略

select 字段1 【as 别名1】,字段2 【as 别名2】 from 表名;

4、去除重复记录

select distinct 字段列表 form 表名;

(2)DQL-条件查询

1、条件查询

select 字段列表 from 表名 where 条件列表;

比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
!=   或者  <>不等于
between ...  and ... 在某个范围之内(含最小、最大值)
in(...)在in之后的列表里的值,多选一
like 占位符模糊匹配(_匹配单个字符,%匹配任意字符)
is null 是null
逻辑运算符功能
and  或者 &&并且(多个条件同时成立)
or 或者 || 或者(多个条件任意一个成立)
not 或者 !非,不是

(3)DQL-分组查询

1、聚合函数

将一列数据作为一个整体,进行纵向计算

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

注意:1、null值不参与所有聚合函数的运算

           2、统计数量可以使用:count(*)  count(字段) count(常量) 推荐使用count(*) ,性能较高

2、分组查询

select 字段列表 from 表名 【where 条件列表】group by 分组字段名【having 分组后的条件】

where 与 having的区别:

1、执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤

2、判断条件不同:where后不能使用聚合函数当判断条件,having后可以使用聚合函数当判断条件

注意:分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

执行顺序:通过where删选后的数据参与分组,然后聚合函数操作分组后的数据,最后可以通过having对聚合函数操作过的分组后的数据进行过滤

(4)DQL-排序查询

1、排序查询

select 字段列表 from 表名 [where 条件列表] [group by 分组字段名 having 分组后的过滤条件] order by 排序字段 排序方式;

排序方式:升序(asc) 降序(desc); 不写的话默认是升序

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

2、分页查询

select 字段 from 表名 [where 条件] [group by 分组字段 having 过滤条件] [order by 排序字段] limit 起始索引,查询记录数;

说明:

1、起始索引从0开始

2、如果起始索引为0,起始索引可以省略,直接简写为 limit 10(假设要查10条记录)

语法:limit 起始索引,每页展示的记录数

在项目开发中,如果前端传来的是页码,转换为起始索引的公式

(页码 - 1)* 每页展示的记录数 

比如第一页limit(0,5),第二页limit(5,5),第三页limit(10,5)。。。。。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值