bilibili学习SQL

一.MySQL概述

关系型数据库(RDBMS)

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

特点:

1.使用表存储数据,格式统一,便于维护

2.使用SQL语言操作,标准统一,使用方便

数据模型

客户端>>>DBMS>>>数据库

二.SQL

1.SQL通用语法

SQL语句可以单行或多行书写,以分号结尾。

SQL语句可以使用空格/缩进来增强语句的可读性。

MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

注释:》单行注释:-- 注释内容 或# 注释内容(MySQL特有)

           》多行注释:/* 注释内容 */

2.SQL语句的分类

1.DDL

数据定义语言,用来定义数据库对象

DDL数据库操作:

查询:

查询所有数据库

SHOW DATABASES;

查询当前数据库

SELECT DATABASE();

创建:

CRFATE DATABASE [IF NOT EXISTS]数据库名 [DFFAULT CHAREST 字符集] [COLLATE 排序规则]

删除:

DROP DATABASE[IF EXISTS]数据库名;

使用:

USE 数据库名;

----------------------------------------------------------------------

DDL-表操作-查询

查询当前数据库所有表

SHOW TABLES;

查询表结构

DESC 表名;

查询指定表的建表语句

SHOW CREATE TABLE 表名;

 -----------------------------------------------------------------------------------------------

DDL-表操作-创建

CREATE TABLE 表名(

        字段1 字段1类型[COMMENT 字段1注释],

        字段2 字段2类型[COMMENT 字段2注释],

        字段3 字段3类型[COMMENT 字段3注释],

        ...

        字段n 字段n类型[COMMENT 字段n注释]

)[COMMENT 字段1注释];

---------------------------------------------------------------

DDL-表操作-数据类型
数值类型

 案例1:定义age,正常情况int就可以了,但是实际上INT的范围太大所以可以给到TINYINT,并且年龄不可能是负数,所以定义应该如下

age TINYINT UNSIGNED

案例2:定义score,使用double,括号中写(总共显示几位,小数点后几位)

score DOUBLE(4,1)

字符串类型

 char----》性能高---------------------------》gender使用

varchar---》相对性能低一点点----------》username使用

--------------------------------------------------------------------------------------

   日期类型

DDL数据类型大案例

 creat table emp(

        id int comment '编号';

        workid varchar(10) comment '员工工号',

        name varchar(10) comment'员工姓名',

        gender char(1) comment'性别',

        age tinyint unsigned comment '年龄',

        idcard char(18) comment '身份证号',

        entrydate date comment'入职时间'

)comment ‘员工信息表’;

DDL-表操作-修改
添加

ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释] [约束]

案例:为tmp表 添加一个新的字段 昵称为‘Nickname’ 长度为20

alter table emp add Nickname char(20)comment ‘昵称';

修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释] [约束];

案例:将emp表中的Nickname改为username,长度为30

ALTER TABLE 表名 CHANGE Nickname username varchar(30)comment '更改为username';

删除字段

ALTER TABLE 表名 DROP 字段名;

案例:删除username字段:

ALTER TABLE emp DROP  username;

修改表名

ALTER TABLE RENAME TO 新表名;

案例:将emp更改为fjq

ALTER TABLE emp RENAME TO fjq;

删除表

DROP TABLE [IF EXISTS] 表名 ;

删除指定表,并且重新创建该表

TRUNCATE TABLE 表名;

在删除表时,表中的全部数据都会被删除。

2.DML

数据操作语言,用来对数据库表中的数据记录进行增删改的操作

添加数据INSERT

修改数据UPDATE

删除数据DELETE

DML-添加操作
给指定的字段添加数据

INSERT INTO 表名 (字段1,字段2,...) VALUES(值1,值2,...);

给全部字段添加数据

INSERT INTO 表名 VALUES (值1,值2,...);

批量添加数据

INSERT INTO 表名 (字段名1,字段名2,....) VALUES (值1,值2,....)  (值1,值2,....)  (值1,值2,....) ;

INSERT INTO 表名 (值1,值2,...) (值1,值2,...) (值1,值2,...) ;

注意:

        插入数据时,指定的字段顺序需要与值得顺序是一一对应的

        字符串和日期型数据应该包含在引号中

        插入的数据大小,应该在字段的规定范围内

案例:

insert into employee(id, workno, name, gender, age, itcard, entrydate)values(1,'1','fjq','男',21,'123456789123456789','2023-08-13');

select * from employee;

insert into employee values(2,'2','zxl','女',21,'123456789123456789','2023-08-13');
DML-修改操作

UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2,...[WHERE 条件]

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

案例:

-- 修改id为1的数据,将name修改为itheima
update employee set name = 'itheima' where id = 1;
-- 修改id为1的数据,将name改为xiaoming,性别改为女
update employee set name = 'itheima' , gender = '女' where id = 1;
-- 将所有员工入职日期改为2023年8月13日
update employee set entrydate = '2023-8-23';
DML-删除数据

DELETE FROM 表名 [WHERE 条件]

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

        DELETE语句不能删除某个字段的值(可以使用update)

案例:

-- 删除gender为男的员工
delete from employee where gender = '男';
-- 删除所有员工
delete from employee;

3.DQL

DQL-介绍

DQL英文全称是Data Query Language(数据查询语言)。数据查询语言,用来查询数据库中表的记录。查询关键字:SELECT

DQL-语法

SELECT

        字段列表

FROM

        表名列表

基本查询

WHERE

        条件列表

条件查询

(聚合函数count,max,min,avg,sum)

GROUP BY

        分组字段列表

HAVING

        分组后条件列表

分组查询

ORDER BY

        排序字段列表

排序查询

LIMIT

        分页参数

分页查询

DQL-基本查询
1.查询多个字段

SELECT 字段1,字段2,字段3... FROM 表名;

SELECT * FROM 表名;

2.设置别名

SELECT 字段1 [AS 别名1],字段2 [AS 别名2]...FROM 表名;

3.去除重复记录

SELECT DISTINCT 字段列表 FROM 表名; 

案例:

1.查询指定字段name,workno,age返回

select name,workno,age from emp;

2.查询所有字段并返回

select id,name,workno,gende,idcard,workaddress,entrydate from emp;

select * from emp;不推荐使用

3.查询所有员工的工作地址,并起别名

select workaaddress as '工作地址'  from emp;

4.查询所有员工的上班地址(不重复)

select distinct workaddress '工作地址' from emp;

DQL-条件查询
1.语法

SELECT 字段列表 FROM 表名 WHERE 条件列表;

2.条件

>=        >        <        <=               <>或!=

BETWEEN...AND...        在某个范围内(含最小值,最大值)

IN(...)        在in之后的列表的值,多选一

LIKE 占位符        模糊匹配(_匹配单个字符,%匹配任意个字符)

IS NULL

AND或&&        OR或||        NOT或!

案例:

1.查询年龄等于88的员工

select * from emp where age = 88;

2.查询年龄小于28的员工信息

select * from emp where age < 28;

3.查询年龄小于等于28的员工信息

select * from emp where age <= 28;

4.查询没有身份证号信息的员工信息

select * from emp where idcard is null;

5.查询有身份证号员工的信息

select * from emp where idcard is not null;

6.查询年龄不等于88的员工信息

select * from emp where age != 88;

select * from emp where age <> 88;

7.查询年龄在15岁(包含)到20岁(包含)之间的员工信息

select * from emp where age >= 15 && age <=25;

select * from emp where age >= 15 and age <=25;

select * from emp where age between 15 and 25;

8.查询性别为女 且年龄小于25岁的员工信息

select * from emp where gender = '女' and age < 25;

9.查询年龄等于18或20或40的员工信息

select * from emp where age = 18 or age = 20 or age = 40;

select * from emp where age in(18,20,40);

10.查询姓名为两个字的员工信息

select * from emp where name like '__';

11.查询身份证号最后一位是X的员工信息

select * from emp where idcardlikke '%X';

DQL-聚合函数
1.介绍

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

2.常见聚合函数

count        统计数量

max        最大值

min        最小值

avg        平均值

sum        求和

3.语法

SELECT 聚合函数(字段列表) FROM 表名;

案例:

1.统计该企业的员工数量

select count(*) from emp;

select count (idcard) from emp;

2.统计该企业员工的平均年龄

select avg(age) from emp;

3.统计该企业员工的最大年龄

select max(age) from emp;

4.统计该企业员工的最小年龄

select min(age) from emp;

5.统计西安地区员工的年龄之和

select sum(age) from emp where workaddress = '西安';

        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值