title: 数据库语句
tags: 数据库
abbrlink: 78f500d6
date: 2022-06-28 08:36:28

数据库的基本语句

Create database 数据库名                 创建新数据库
drop database 数据库名                   删除数据库
use 库名                                 使用数据库

数据表的使用

创建数据表

Create table book(

id int not null auto_increment(设置主键自增),

字段名 varchar(50) not null(不为空) default " " (默认值为""),

字段名 varchar(50) not null default ‘’,

字段名 varchar(50) not null default ‘’,

字段名double not null default 0.00,

字段名 text,

字段名date,

primary key (id),

index 索引名称(数据表想设置索引列的名称),(为某个字段创建索引)

)    新增数据表

数据类型

  • char:定长字符型(固定长度,固定空间数)
  • varcar:变长字符型(不固定长度,最大空间数)
  • text:文本类型
  • int:整数类型
  • decimal:精确数值型(浮点类型)
  • datetime:时间类型
  • tinyint:微整型标志位(只有0和1类似于bool)

修改

rename table 原表名 TO  新表名     重命名数据表

或者

alter table  原表名  rename 新表名   重命名数据

查看所有数据

show tables;

删除某张表

drop table 表名;

查看表结构

desc 表名;

添加列放在某列的后面

alter table 数据表名 add 列名 数据类型 约束 alter 列名;   
例如:alter table 'table_name' add height int(4) default 170 alter name;   添加一列int类型的 身高字段,默认值为170,放在name字段后面(如果想放在第一列把alter 列名改为first)

更改某列列名

alter table 表名 change 原列名 新列名 数据类型 约束;

数据库关键字

where

where常在数据库中用来进行条件筛选

select xx from xx where id=xx;

这就是筛选出id字段=xx的所有记录

select

用于查询数据表里的数据

select 查询的字段名(*代表全部数据) from 表名 where [条件表达式]

insert

用于新增数据库里新的字段和数据

insert into 表名 (字段名1,字段名2,字段名3) values("字段名1的值","字段名2的值","字段名3的值")

可以利用insert关键字将已有的表中数据复制到另一张新表中. 举例:将student表中name,qq_mail两字段数据复制到test_user的name和email字段中

insert into test_user(name,email) select name,qq_mail from student;

update

用来修改数据库里的数据

update 表名 set 值1=xx,值2=xx where [条件表达式]

delete

用来删除数据库中的某个字段

delete from 表名 where [条件表达式]

distinct

用来去除数据库中重复的数据

select distinct 字段名(*) from 表名

order by

用于查询的时候可以对数据进行升序/降序排列

select 字段名 from 表名 order by desc(降序)/asc(升序) 默认升序

group by

用于数据库查询的时候对数据进行分组

select 字段名 from 表名 group by 字段名1  按照字段名1进行分组

having

和where一样是进行条件筛选的,但是区别是where是先把所有符合条件的数据进行筛选,筛选之后再进行分组操作,而having是先进行分组操作,分组之后再对分组后的数据进行筛选

关于数据库中having和where的区别
1.首先用having条件来查询的语句是先分组再判断的
2.having可以使用统计函数,where不可以
3.having可以指定查询的字段别名,where不可以
4.关于关键字执行顺序 where -> group by -> having -> order by -> limit

limit

limit是常用于分类查询的一个关键字

select 字段名 from 表名 limit 1 , 5;这是从第二条数据开始查,查询五条数据

第一个参数是从第几行开始查,第二个关键字是查询几条数据

select 字段名 from 表名 limit  5;   这是默认从第一行开始查,查询5条数据,当默认第一行开始的时候是limit 0 , 5 所以可以省略第一个参数

offset

这个关键字常用于limit中 表示跳过几条数据

select 字段名 from 表名 limit 1 , 5 offset 3;这是从第二条数据开始查,查询五条数据

跳过3条数据,也就是说查询第5,6条数据

与select 字段名 from 表名 limit 5,2; (从第五条数据开始查询,查询两条数据)查询结果是一样的

and

常用于条件筛选中,表示同时满足and前后的条件

select 字段名 from 表名 where 字段名1>xx and 字段名2=yy;

筛选出既满足字段名1>xx的记录和字段名2=yy的记录取两者的交集

or

常用于条件筛选中,表示or前后的条件满足其一即可

select 字段名 from 表名 字段名1>xx or字段名2=yy;

筛选出满足字段名1>xx的记录或者是字段名2=yy的记录

like

常用于数据库中模糊查询

select 字段名 from 表名 where name="刘%";

查询name中刘是第一个字的所有数据

select 字段名 from 表名 where name="刘_"

查询name中刘是第一个字,一共2个字的所有数据;

_代表匹配一个任意字符,%表示匹配多个任意字符

union

常用于数据库中的组合查询

SELECT 字段名 FROM 表名1
UNION
SELECT 字段名 FROM 表名2;

如果表1有a,b,c,d四条数据,表二有a,e,f,g四条数据,那么查询结果就是a,b,c,d,e,f,g,是会去掉相同的数据的

union all

常用于数据库中的组合查询

SELECT 字段名 FROM 表名1
UNION ALL
SELECT 字段名 FROM 表名2;

如果表1有a,b,c,d四条数据,表二有a,e,f,g四条数据,那么查询结果就是a,b,c,d,a,e,f,g,是不会去掉相同的数据的

left join

左连接查询,常用于多表联查,将两个表联合查询,查询出来的结果会包括左表的全部记录和右表表中符合左表字段的记录,如果左表中对应的数据在右表查不到的话在右表中对应字段的值会显示为NULL

select 字段名 from 表名1 left join 表名2 on 表名1.字段名=表名2.字段名;

right join

右连接查询,常用于多表联查,将两个表联合查询,查询出来的结果会包括右表的全部记录和左表中符合右表字段的记录,如果右表中对应的数据在左表查不到的话在左表中对应字段的值会显示为NULL

select 字段名 from 表名1 right join 表名2 on 表名1.字段名=表名2.字段名;

inner join

内连接查询,常用于多表联查,会把两个表中共有的字段名及数据显示出来

select * from 表名1 inner join 表名2 on 表名1.字段名=表名2.字段名;

Alter

修改字段长度常用语句

alter table 表名 modify 字段名 字段类型;

例如:

alter table qtline modify qtl_bidernote VARCHAR2(4000);

rename

用于修改字段名称

ALTER TABLE  表名 RENAME COLUMN 原字段名 TO 改后字段名;

add

添加字段常用sql

alter table 表名 add  字段名  字段类型(字段长度)