玖叶教程网

前端编程开发入门

mysql语句分类

# mysql语句分类
> 1、DDL:数据定义语言

create、drop、alter
1-1、数据库的DDL操作
1-1-1、添加数据库 查询不存在则创建

create database if not exists db_test;

1-1-2、删除数据库 查询存在则删除

drop database if exists db_test;


1-1-3、修改数据库的字符集

alter database db_test CHARACTER set gbk;

1-1-4、查看现有数据库

show databases;

1-1-5、查看数据库的数据信息

show create database db_test;

1-2、表的DDL操作
1-2-1 添加数据库之前,需要先进入该数据库

use databasename;

创建表
create table Student
(
sid int not null primary key,-- 学号 主键
sname varchar(20) not null,-- 姓名
sage int not null,
sgender char(1) not null
);
1-2-1-1 自增长步长 每次增长几个

set auto_increment_increment=1;

1-2-1-2 自增长从几开始

set auto_increment_offset=1;
1-2-1-3 修改主键id默认值起始值101开始

alter table tablename auto_increment=101;

1-2-2 删除表

drop table tablename;

1-2-3 给表添加一个字段

alter table Student add sqq varchar(10);

1-2-4 修改表字段

alter table Student modify sqq int;

1-2-5 修改表名

alter table Student rename students;

1-2-6 删除表字段

alter table students drop sqq;

1-2-7 修改表字段和类型

alter table tablename change ziduan newziduan 类型;

1-3 数据类型

数字类型:

int 整型
flot 浮点
double 双精度浮点
DECIMAL(5,2) 总长度5位,小数点2位

字符串:

varchar 可变长度
char 长度是固定的
text 超文本
时间类型:

date 日期 2021-11-23
datetime 2021-11-23 14:39:40
time 时间 09:10:11
timestamp 时间戳
year 年份
null :

null 是空值
约束

主键约束:primary key auto_increment
外键约束:foreign key references
非空约束:not null
唯一约束:unique
默认约束:default
检查约束:check

>2、DML:数据操纵语言

insert、update、delete

2-1、插入数据

`语法:语法 insert into 表名(字段,字段1)values(内容,内容)`

insert into student values('1001','jack',18,'男');

insert into student values('1002','tom',18,'男'),
('1003','cindy',18,'女'),('1004','lucy',18,'女');

insert into student(sid,sname,sage,sgender)
values('1001','jack',18,'男');

2-2、修改数据

`修改:update 表名 set 字段=值,字段=值1 where 条件`

update student set sname='jack1' where sid='1001'
2-3、删除

删除语法:delete from 表名 where 条件
删除:1、drop 2、delete 3、truncate
drop drop table 表名 删除表,则表就没有了
delete delete from 表名 where 条件
注意:delete 删除数据,表结构依然保存,如果有自增的字段,
再次插入的时候,删除之后续接
truncate truncate table 表名 where 条件

`注意:truncate 删除数据,保留表结构,再次插入,排序从原始开始`


>3、DQL:数据查询语言

select

`查询的语法:select * from 表名 where 条件`

`起别名:as 进行起别名`

条件判断:> < = != <>
`查询去重:distinct`
`between and 区间xx-xx之间`


模糊查询:
`like 通配符:% 、_、[]、[^]`

系统函数
`count 统计数量 sum计和 max最大 min 最小 avg平均值`

排序
`order by 升序 默认 asc 降序 desc`

替换
`replace(字段,'被替换的值','替换后的值')`

替换admin 中的d,替换成D select replace('admin','d','D')

substr

截取内容 语法:substr(name from pos for len)
举例:substr(name from 1 for 2) name这个字段从第一位截取
截取长度是2位,注意:sql 里面下标从1开始

分组
` group by having `

多表联查:
A,B 两个表里面有个相同的字段,相同类型,把这个字段作为纽扣,关联
select * from a,b where a.bid=b.id

内联

inner join on
例:select * from a inner join b on a.bid=b.id
左联

left join on 以左边表为主
select * from a left join b on a.bid=b.id

右联

right join on 以右边表为主
select * from a right join b on a.bid=b.id


查询前几条
`select * from tablename limit 1,3`
`select * from tablename order by birthday desc limit 1,3`

根据birthday 得到年龄
`select TIMESTAMPDIFF(year,birthday,CURDATE()) from tablename;`
`select (year(CURDATE())-year(sbirthday)) from tablename `

行专列函数使用:

max(case canme when 'java' then subject else 0 end )as java
canme 是科目名称 subject是科目成绩
往往需要多表联查,还需要分组结合使用
列:
select no,name,
max(case cname
when 'java' then `subject` else 0 end) as java,
from score s1,stu s2,course c
where s1.sid=s2.sid and s1.cid=c.cid
and name='张三' group by name;

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言