SQL基本语句说明

sql语句说明

在准备工作做好之后,我们就要client端去操作MySQL数据库(数据的储存和管理),说白了就是数据的增删改查(CRUD)
C creat
R retrieve
U update
D delete

我们需要用client端写/发送SQL语句到server端
新建Excel,创建sheet,填入数据,
新建数据库,新建表,更新数据,删除数据。

SQL语句按功能,往往分为这几类:
下面的几类SQL语句就是在帮我们完成这个流程
DDL语句(结构性操作) :数据定义语言
创建数据库
创建表
修改表结构

DML语句(对于数据的增删改):数据操作语言
DQL语句: 数据查询语言
DCL语句(事物的提交/回滚):数据控制语言

DDL操作数据库

代码注释中写着功能哩

DDL之创建数据库相关

#这是一个单行注释--这也是一个单行功能
/*这是一个多行注释
CASCADE
*/
create database db1;

-- 创建数据库时指定字符集编码
CREATE DATABASE db1_1 CHARACTER SET utf8;

#切换数据库
use db1;

#查看当前使用的数据库
select DATABASE();

#查看MySQL中有哪些数据库
show databases;

#查看数据库定义信息
show create database db1;#CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N

DDL之修改及删除数据库

#DDL修改数据库
alter database db1 character set utf8;

show create database db1;
CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */

#删除数据库
drop database db1;

DDL之创建数据表相关

一个数据库中可以有n个表,表中又有字段,在建表的时候,就需要定义好字段(指定字段属性->字段数据类型+字段长度等)

MySQL中的char类型和varchar类型,区别在于
char类型是固定长度,根据定义的字符串长度分配空间
varchar类型是可变长度,只使用字符串长度所需的空间
比如,保存字符串“abc”

x char(10);#占用10个字节
y varchar(10);#占用3个字节

char类型适用于存储固定长度的字符串,如密码,性别一类
varchar类型适合存储在一定范围内,有长度变化的字符串

char的查询效率高一点

创建表的语法结构

/*create table 表明 (
			字段名称1 字段类型(长度),
			字段名称2 字段类型 注意 最后一列不要加逗号
);
*/
use db1;

create  table category(
		cid int,
		cname VARCHAR(20)

);

create table test1(
	tid int,
	tadte date
);

#赋值表结构创建新表
create table test2 like test1;

#查看表结构信息
desc test2;

#查看当前数据库中有哪些数据表
show tables;

#查看创建表的SQL语句
show create table test1;
/*
CREATE TABLE `test1` (
  `tid` int DEFAULT NULL,
  `tadte` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
*/


DDL之删除表

#删除数据库/表用drop,输出数据用delete
drop table test1;
#存在表之后再删除
drop table if exists test1;

DDL之修改表

#修改表名

#语法格式
#rename table 旧表名 to 新表明;

rename table category to category1;

#向表中添加列,关键字 ADD
#alter table 表名 add 字段名称 字段类型

alter table category1 add cdesc varchar(20);

#修改表中的列的数据类型或长度 关键字modify
#语法割舍
#alter table 表名 modify 字段名称 字段类型
alter table category1 modify cdesc varchar(50)

#修改列的名称
#语法格式 alter table 表明 change 旧列名 新列名 类型(长度);
alter table category1 change cdesc description varchar(30);

#删除分类中的description这列
#alter table category drop description;
alter table category1 drop description;
######alter 命令 +不同的动作(add,modify,change,drop);

DML操作数据库

DML之插入数据库

use db1;
create table student(
sid int,
sname varchar(20),
age int,
sex char(1),
address varchar(40)
);


#写SQL插入数据
#方式一:插入数据时把所有字段名称显示写出
insert into student(sid,sname,age,sex,address) values(1,'张三',18,'女','北京');
#方式二:插入全部字段,不再写字段名称了
insert into student values(2,'李四',20,'男','北京');
#方式三:插入指定字段数据的值
insert into student(sname,address) values('薛五','南京');

/*
注意:
值与字段必须要对应,个数相同&数据类型相同
值的数据大小,必须在字段指定的长度范围中
varchar char date类型的值必须使用单引号,或者双引号包裹
如果要插入空值,可以忽略不写,或者插入null
如果插入指定字段的值,必须要写上列名

DML之修改数据库

#修改数据
update student set address='成都' where sname='薛五';

update student set address='成都';#把student表address列数据全部给为了成都

#可以同时修改多个列
update student set address

update student set address='上海',sex='女';

DML之删除数据库

#数据删除*/
/*delete from #删除所有数据

delete from 表名[where 字段名=值] #指定条件,删除数据

truncate table 表名;先删除整张表,然后在重新创建一张一模一样的表,效率高

*/

delete from student where sid=1;#删除sid等于1的数据

truncate table student;
#当一个表中条数非常多的时候,又要做删除动作的时候,如果用delete会很慢,那我们可以用truncate


DQL之查询语句

DQL之简单查询


create table emp(
	eid int,
	ename varchar(20),
	sex char(1),
	salary double,
	hire_date date,
	dept_name varchar(20)
);


insert into emp values(1,'孙悟空','男',7200,'2021-02-04','教学部');
insert into emp values(2,'猪八戒','男',3200,'2010-02-04','教学部');


#查询emp表中的所有数据
select * from emp;
#查询部分字段
select ename ,salary from emp;
#别名查询,指定姓名
select ename as'员工姓名' ,salary as'工资' from emp;
#去重操作
select distinct dept_name from emp;
#加1000查询
select ename salary+1000 from emp;

DQL之查询运算法

#条件查询
# select 列明 from 表名 where 条件表达式
# 先取出表中的每条数据,满足条件的数据就返回,不满足的就过滤掉
/*
 > < <= >= = <> !=
BETWEEN.... and....
where age between 18 and 30;
IN(集合)
where sname in ('王五','王六')
like'%王%'
where sanme like '%王%' 名字中有王
where sname like '王%'   名字以王开头
is null 查询不能为null值
select * from emp where dept_name is null;

逻辑运算法
and $$ 多个条件同时成立
Or || 多个条件任一成立
Not 不成立,取反
*/
#查询员工姓名为黄蓉的员工信息
select * from emp where e.ename='黄蓉';
#查询薪水价格为5000的员工信息
select * from emp e where e.salary=5000;

#查询薪水价格不为5000的员工信息
select * from emp e where e.salary!=5000;

#查询薪水价格是3600 或7200或者两万的员工信息
select * from emp e where e.salary=3600 or e.salary=70000 e.salary=20000;
select * from emp e where e.salary in(3600,7200,20000);
#查询第二个为兔的员工信息
select * from emp where ename like '_兔%'


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值