数据库sql常见用法

常用基础命令(有些语句分号是中文的,不可以直接复制粘贴)

use 库名//1.打开指定的数据库

show databases;//2.查看当前所有数据库

show tables;//3.查看当前数据库的所有表

show tables from 库名;//4.查看其他数据库的所有表

creat table 表名(

列名 列类型,

列名 列类型,

.......

);//5.创建表

desc 表名;//6.查看表信息

DDL(表的操作)

Alter table 表名 add 列名 列类型; //增加列

Alter table 表名 modify 列名 列类型;   //改列类型

Alter table 表名 drop 列名;  //删列

Rename table 旧表名 to 新表名; //重命名表

show create table 表名;//查看表细节

Alter table 表名 character set gbk;//改表的字符集;

Alter table 表名 change;// 旧列名 新列名 列类型;

drop table 表名;//删除表

DML(对表中数据操作)//注意,字符串类型要加单引号

select * from 表名;//查询表中所有数据

insert into 表名 (列名,列名) values(1,'xx'); //插入一行数据

update 表名 set 列名 = 值;//修改列值

updata 表名 set 列名 = 值 where name = 行名;//修改行列值

update 表名 set 列名 = 值,列名 = 值 where name = 行名;//修改某行的多列值

删除操作

delete from 表名 where name = 值;//删除表中name属性为该值的记录

delete from 表名 ;//删除表中所有记录

truncate table 表名;//删表再建,表中数据清空

DQL(查询)

select 列名 from 表名 where 行条件 Group By grouping_columns 

having 分组条件

Order by 排序依据;//完整查询

select * from 表名//查所有列

select 列名 form 表名;

2,条件查询

=  <>(不等于,在 SQL 的一些版本中,该操作符可被写成 !=)  < <= > >=

between ...and

in(set)

is null

and

or

not

3模糊查询 like

通配符 _ 代表任意一个字符 %任意一个字符串

select * from 表名 where 列名 like '_i';//查询该列由两个字符构成且第二个字符为i的记录

4字符控制查询

select distinct 列名 from 表名;//  去除重复记录;

select * ,列名 + ifnull(列名,0)as total form 表名;//查询两列之和并在total暂时列名下显示

5排序asc(升序) desc(降序)

select * form 表名 order by age Asc //查询表中所有记录,按年龄升序排序

6聚合函数(纵向运算)

count();//统计指定列不为null的行数

max()计算指定列的最大值

min()计算指定列的最小值

sum()计算指定列的数值和,若不是数值类型,则为0

AVG()计算指定列的平均值

select count(*)as notNullRow from 表名;//查询表中不全为空的行并在notNullRow下显示

7分组查询

select 列名,count(*)from 表名 where 列名>1500 group by 组名;//查询该列大于1500的行并放到该组中

select 列名1,sum(列名2)  from 表名 group by 列名 having sum(列名2)> 9000;//查询列名2大于九千的行的列名一属性;

8limit

select * from 表名 limit 0,5;查询5行记录,从0开始;

9主键约束

alter table 表名 add constraint  pk_id primary key(列名);

10 自增列

create table 表名(

id int primary key auto_increment,

Name varchar(50)unique 

);

11外键约束

create table 表名(

id int primary key,

constraint fk_id foreign key(id) references 外表名(外表列);

);

多表查询//业务开发以多表查询经常用

合并结果集 union

连接查询 内,外(左,右,全)自然

子查询

select * from A union select * form B;//相同的值合并

select * from A union all select * form B;//相同的值不合并

内连接

select * from 1表名 inner join 2表名 2别名 on 1表名.列名 = 2别名.列名;//只能是主外键相匹配,求出的是两表交集

左外连接

select * rom 1表名 left outer join 2表名  2别名 on 1表名.列名 = 2别名.列名;//可以是任意列去匹配,相匹配的行合并 ,1表在左,2表在右,求出的是以左表为标准,右表为附加的结果集,数据条数与左表一致

右外连接与左外连接相反

全外连接数据条数不一定,数据数为两表总数减去内连接条数,

自然连接

select 表1别名.列名 from 表1 表1 别名

full join 表2 表2别名 on 表一别名.列名 = 表2别名.列名;

自然连接

select * from 表1 natural join 表2;//自然连接无需指定连接列,SQL会检查两个表中是否相同名称的列,且假设他们在连接条件中使用,并且在连接条件中仅包含一个连接列。不允许使用ON语句,不允许指定显示列,显示列只能用*表示(ORACLE环境下测试的)。对于每种连接类型(除了交叉连接外),均可指定NATURAL,感觉没多大意义

猜你喜欢

转载自blog.csdn.net/qq_39668086/article/details/82220261