数据库知识
SQL语句
1. 创建数据库
create database [databasename];
2. 查看数据库
show databases;
3. 使用数据库
use databasename;
4. 创建表
create table sellingpoint(
id int not null primary key,
author varchar(100),
title varchar(200));
5. 显示表结构
desc tablename;
6.修改表
1.删除表
drop table tablename;
2. 清空表数据
truncate table tablename;
3. 增加列
alter table tablename add colname varchar(100);
4.删除列
alter table tablename drop columnname;
5.更改列属性
- 只修改属性
alter table tablename modify columnname varchar(100) ...;
- 修改列名
alter table tablename change name1 name2 varchar(100);//后面必须写上列的属性
- 修改列名及属性
alter table change name1 name2 varchar(100);
7.增删改查
1.插入数据
- 普通插入
insert into tablename(col1,col2,col3...) values (value1,value2,value3...)
- 将一个表内容插入到另一个表
create
- 将一个表某几列数据插入到另一个表
insert into mytable(col1,col2) select col1,col2 from mytable2;
2.删除数据
delete from tablename where ...
3.更改数据
update tablename set columename=' ' where ...
4.查询数据
- 显示某几列信息
select col1,col2 from tablename where ...
- 显示所有列信息
select * from sellingpoint where id=10;
- distinct 用于显示具有不同列值的元素,只有所有列相同才判定为相同
select distinct col1,col2 from tablename where ...
- limit 限制返回的行数,接收两个参数,第一个为起始行,默认为0,第二个为总行数
select * from tablename where ... limit 3,4; //从查询到的结果的第3行开始,显示4行数据
- count
count函数是用来统计表中或数组中记录的一个函数,
count(*) 它返回检索行的数目, 不论其是否包含 NULL值。
例如:SELECT COUNT(*) FROM sellingpoint;
COUNT(DISTINCT 字段),返回不同的非NULL值数目;若找不到匹配的项,则COUNT(DISTINCT)返回 0 。
- count 与group配合
COUNT( )和GROUP BY以各种方式分类你的数据
select col1,count(*) from sellingpoint where ... group by col1;
- 升序 asc、降序desc
select col1,col2 from tablename where ... order by colname desc/asc;
8.通配符
- “%”:匹配大于等于0的任意字符,null不可以
select * from tablename where author like '刘%';
- “_”:匹配一个字符
- 使用like与not like匹配查询
select * from sellingpoint where author like '_永';
select * from sellingpoint where author not like '%永%';
9.过滤
10.计算字段(使用as输出)
select col1*col2 as alias from selling2;
concat()用来连接字段,用trim清除字段的空格
select concat(trim(author),'+',trim(content)) from selling2 where ...;
11.函数
12.分组GROUP BY
把具有相同值的列放在同一组中,默认按分组字段排序,也可以选择按汇总字段排序。
select col1,count(*) as num from selling2 where id>5 group by author order by num;
规定
- group by 在order by之前,在where之后
- 可以用having过滤汇总字段,放在最后
select author,count(*) as num from selling2
where id>3
group by author
having num>2
order by num ;
13.子查询
子查询中只能返回一个字段的数据。
可以将子查询的结果作为 WHRER 语句的过滤条件:
14.连接
连接用于连接多个表,使用join关键字,且条件语句用on不用where
可以替换子查询,且效率比子查询快
1.内连接查询(等值查询) inner join
select c.name,o.id, o.customers_name from customers as c inner join orders as o on c.name=o.customers_name;
2.自连接
自连接可以看成内连接的一种,只是连接的表是自身而已
3.自然连接
自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。
内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列。
SELECT A.value, B.value
FROM tablea AS A NATURAL JOIN tableb AS B;
4.外连接
外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表没有关联的行。
15.组合查询UNION
连接两个查询数据,1.M行,2.N行,UNION:M+N行,不保留重复数据 ,UNION ALL:保留重复数据