当前位置: 首页 > news >正文

SQL语言基础【学习总结】

目录

一、SQL语句分类

二、DDL操作 数据定义语言

(1)DDL操作数据库

1.数据库的创建

2.数据库的查看/选择

3.数据库的修改

4.删除数据库

(2)DDL操作数据表

1.常用数据类型

2.创建表

3.查看表

4.删除表

5.修改表

修改表名

修改表的字符集

向表中添加列(add)

修改表中列的数据类型或长度(modify)

修改列名称

删除列

(3)DML操作表中数据

1.插入数据

2.更改数据

3.删除数据


一、SQL语句分类

1.数据定义语言:DDL

2.数据操作语言:DML

3.数据查询语言:DQL

4.数据控制语言:DCL

二、DDL操作 数据定义语言

(1)DDL操作数据库

1.数据库的创建

两种方式

/*第一种方式 直接指定数据库名,此方式使用默认字符集:latin1格式:create database 数据库名;
*/CREATE DATABASE db1;/*第二种方式 指定数据库名称,指定字符集一般指定为utf8格式:create database 数据库名 character set 字符集;*/CREATE DATABASE db1_1 CHARACTER SET utf8;

2.数据库的查看/选择

命令:

use 数据库名;        切换数据库

select database();         查看当前正在使用的数据库

show databases;         查看有哪些数据库

show create database 数据库名;         查看一个数据库的定义信息    

-- 切换数据库 从db1 切换到 db1_1
USE db1_1;
-- 查看当前正在使用的数据库
SELECT DATABASE();
-- 查看Mysql中有哪些数据库
SHOW DATABASES;
-- 查看一个数据库的定义信息
SHOW CREATE DATABASE db1_1;

(补充一点:mysql中有四个默认数据库,分别是

        1. information_schema‘信息数据库:保存的是其他数据库的信息’、

        2.mysql‘MySQL核心数据库:保存的是用户和权限相关的信息’、

        3. performance_schema‘保存性能相关数据 监控MySQL的性能’、

        4.sys‘记录了DBA所需要的一些信息,DBA是数据库管理员’)

3.数据库的修改

命令:

alter database 数据库名 character set 字符集;        数据库的字符集修改操作

例如:

-- 将数据库db1 的字符集 修改为 utf8
ALTER DATABASE db1 CHARACTER SET utf8;

4.删除数据库

drop database 数据库名;        从MySQL中永久删除某个数据库

(2)DDL操作数据表

1.常用数据类型

        char类型和varchar类型:

        char类型是固定长度的: 根据定义的字符串长度分配足够的空间。密码等固定长度可以用char。

         varchar类型是可变长度的: 只使用字符串长度所需的空间

2.创建表

格式:

CREATE TABLE 表名(
字段名称1 字段类型(长度),
字段名称2 字段类型 注意 最后一列不要加逗号
);

例如:

/*表名:category表中字段:分类ID :cid ,为整型分类名称:cname,为字符串类型,指定长度20 
*/-- 创建表
CREATE TABLE category(cid INT,cname VARCHAR(20)
);

复制表的结构(快速创建一个表结构相同的表)

例如:创建一个与test1表结构相同的test2表

CREATE TABLE test2 LIKE test1;

查看表的结构:

DESC test2;

3.查看表

-- 查看当前数据库中的所有表名
SHOW TABLES;
-- 显示当前数据表的结构
DESC category;
-- 查看创建表的SQL语句
SHOW CREATE TABLE category;
--查看表的内容
select * from 表名;

4.删除表

格式:

第一种:

drop table 表名;         永久的删除表

第二种:

drop table if exists 表名;          判断表是否存在, 存在就删除

例如

-- 直接删除 test 表
DROP TABLE test1;
-- 先判断 再删除
DROP TABLE IF EXISTS test;

5.修改表

修改表名

格式:

rename table 旧表名 to 新表名

例如:

将test1修改为test2

RENAME TABLE test1 TO test2;
修改表的字符集

格式:alter table 表名 character set 字符集

例如:将category表的字符集 修改为gbk

alter table category character set gbk;

(未完结 2023.10.22)


向表中添加列(add)

格式:alert table 表名 add 字段名称 字段类型

例如:向category表中添加一个新的字段为 分类描述 cdesc varchar(20)

ALTER TABLE category ADD cdesc VARCHAR(20);
修改表中列的数据类型或长度(modify)

格式:alter table 表名 modify 字段名称 字段类型

例如:

ALTER TABLE category MODIFY cdesc VARCHAR(50);
修改列名称

格式:alter table 表名 change 旧列名 新列名 类型(长度);

例如:

对分类表中的 desc字段进行更换, 更换为 description varchar(30)

ALTER TABLE category CHANGE cdesc description VARCHAR(30);
删除列

格式:after table 表名 drop 列名;

例如:

ALTER TABLE category DROP description;

(3)DML操作表中数据

首先为了验证下面操作,我们先创建一个student表

/*
表名:student
表中字段:
学员ID, sid int
姓名, sname varchar(20)
年龄, age int
性别, sex char(1)
地址, address varchar(40)
*/# 创建学生表
CREATE TABLE student(
sid INT,
sname VARCHAR(20),
age INT,
sex CHAR(1),
address VARCHAR(40)
);

1.插入数据

插入数据分为三种方式,其中把varchar,char,date的值必须用单引号或者双引号

方式1:插入全部字段,写出全部字段

INSERT INTO student (sid,sname,age,sex,address) VALUES(1,'孙悟空',20,'男','花果山');

方式2,插入全部字段,不写字段名

INSERT INTO student VALUES(2,'孙悟饭',10,'男','地球');

方式3:插入指定字段的值

INSERT INTO category (cname) VALUES('白骨精');

2.更改数据

格式1:不带条件(不建议使用)会修改所有的

update 表名 set 列名 = 值

UPDATE student SET sex = '女';

格式2:带条件

update 表明 set 列明 = 值 [where 条件表达式:字段名 = 值]

UPDATE student SET sex = '男' WHERE sid = 3;

格式3:修改多个值

UPDATE student SET age = 20,address = '北京' WHERE sid = 2;

3.删除数据

方式1:删除所有数据

 格式:delete from 表名

方式2:删除指定条件数据

格式:delete from 表名 [where 字段名=值]

DELETE FROM student WHERE sid = 1;

(补充:delete from 表名        此方法原理是有多少记录就进行多少次删除

推荐使用:        truncate table 表名        先删除整张表,然后再重新创建一张一模一样的表. 效率高)

(4)DQL查询表中数据

为了验证本部分内容,首先建立一个表(emp员工表),并加入数据

CREATE TABLE emp(
eid INT,
ename VARCHAR(20),
sex CHAR(1),
salary DOUBLE,
hire_date DATE,
dept_name VARCHAR(20)
);

1.简单查询

格式:select 列名 from 表名

方式一:查询全部字段

SELECT * FROM emp; -- 使用 * 表示所有列,查询所有数据

方式二:查询指定字段

SELECT eid,ename FROM emp;  --仅显示eid和ename字段

方式三:别名查询,使用 AS关键字,为列起别名

SELECT eid AS '编号' FROM emp;

方式四:去重查询distinct

SELECT DISTINCT dept_name FROM emp;

方式五:运算查询(查询结果与运算)

SELECT ename,salary +1000 from emp;  --将结果加1000

2.条件查询

格式:select 列名 from 表名 where 条件表达式

比较运算符:

逻辑运算符:

查询如下用例:

# 查询员工姓名为黄蓉的员工信息
SELECT * FROM emp WHERE ename = '黄蓉';
# 查询薪水价格为5000的员工信息
SELECT * FROM emp WHERE salary = 5000;
# 查询薪水价格不是5000的所有员工信息
SELECT * FROM emp WHERE salary != 5000;
SELECT * FROM emp WHERE salary <> 5000;
# 查询薪水价格大于6000元的所有员工信息
SELECT * FROM emp WHERE salary > 6000;
# 查询薪水价格在5000到10000之间所有员工信息
SELECT * FROM emp WHERE salary BETWEEN 5000 AND 10000;
# 查询薪水价格是3600或7200或者20000的所有员工信息
-- 方式1: or
SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000;
-- 方式2: in() 匹配括号中指定的参数
SELECT * FROM emp WHERE salary IN(3600,7200,20000);

3.模糊查询

# 查询含有'精'字的所有员工信息
SELECT * FROM emp WHERE ename LIKE '%精%';
# 查询以'孙'开头的所有员工信息
SELECT * FROM emp WHERE ename LIKE '孙%';
# 查询第二个字为'兔'的所有员工信息
SELECT * FROM emp WHERE ename LIKE '_兔%';
# 查询没有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NULL;
-- SELECT * FROM emp WHERE dept_name = NULL;
# 查询有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NOT NULL;
http://www.xdnf.cn/news/825895.html

相关文章:

  • 在Android Studio下进行NDK开发
  • 极狐GitLab 17.1 到底发布了哪些重大功能?
  • 浅谈网络代理 proxy
  • 【物联网】探索NE555:一款经典的集成电路(超详细)
  • JSON 数组
  • 17.Oracle11g的PL/SQL基础
  • 13个程序员常用开发工具用途推荐整理
  • 原码, 反码, 补码 详解
  • 服务器135、137、138、139、445等端口解释和关闭方法
  • LPC特征提取及语音信号处理
  • f12获取网页文本_F12 - 开发者工具详解
  • SWA(随机权重平均) for Pytorch
  • AspectJ详解
  • web-uploader多文件上传问题,预览问题
  • Mysql数据类型最细讲解
  • 利用weka进行数据挖掘——基于Apriori算法的关联规则挖掘实例
  • 矩阵运算规律总结
  • Sortable.js官方文档记录
  • 【浏览器】五大最好用的浏览器 最受欢迎的浏览器软件
  • 一文读懂上拉电阻:工作原理和阻值确定
  • bootstraptable 手册_JS表格组件神器bootstrap table使用指南详解
  • 一文读懂 K8s 持久化存储流程
  • COCOS学习笔记--TexturePacker使用详解
  • Hutool工具包等常用工具类总结
  • 电子管是什么?
  • CSharp(C#)语言_反射 和 特性
  • Windows 中安装 Mysql
  • 差分逻辑电平——LVDS、CML、LVPECL、HCSL互连
  • PLY模型格式详解【3D】
  • FTP命令全集