数据库基本操作
---------------------------------------------------create---------------------------------------------------
1:创建数据库
/* 创建数据库 CREATE DATABASE 表名; CREATE DATABASE 数据库名 CHARACTER SET 字符集; */ CREATE DATABASE mybase;
2:使用数据库
/* 使用数据库 USE 表名; */ USE mybase;
3:创建表
/* 创建数据库表 create table 表名 ( 列表1 数据类型 约束, 列表2 数据类型 约束, 列表3 数据类型 约束, ); */ CREATE TABLE users( uid INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20), uaddress VARCHAR(50) );
-------------------------------------------------rename---------------------------------------------------
4:修改表名
/* 修改表名 rename table 表名 to 新名; */ RENAME TABLE users TO student;
---------------------------------------------------alter------------------------------------------------------
5:添加列
/* 添加表中的列 alter table 表名 add 列名 数据类型 约束; */ ALTER TABLE users ADD utel INT;
6:修改列中数据类型和约束
/* 修改表中的列的数据类型长度和约束 alter table 表名 modify 列名 数据类型 约束; */ ALTER TABLE users MODIFY utel VARCHAR(10);
7:修改列名
/* 修改表中的列名 alter table 表名 change 旧列名 新列名 数据类型 约束; */ ALTER TABLE users CHANGE utel tel INT;
8:删除列名
/* 删除表中列 alter table 表名 drop 列名; */ ALTER TABLE users DROP tel;
---------------------------------------------------insert---------------------------------------------------
9:向表中添加数据
/* 向表中添加数据 格式: insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); 或者 insert into 表名 values(全列值)----主键值也要写 或者 insert into 表名(列名1,列名2,列名3) values(值1,值2,值3),(值1,值2,值3) 注意: 自增主键,可以列名中不出现主键 */ INSERT INTO student(uname,uaddress) VALUES('mark','长沙岳麓区'); INSERT INTO student(uname,uaddress) VALUES('jek','长沙天心区'),('tom','长沙芙蓉区');
---------------------------------------------------update--------------------------------------------------
10:对表进行更新数据
/* 对数据库进行更新操作 格式: update 表名 set 列1=值1,列2=值2 where 条件 */ UPDATE info SET uname='mark',uaddress='长沙岳麓区' WHERE uid=1;
---------------------------------------------------delete---------------------------------------------------
11:对表进行删除数据
delete from 表名 [where 条件]; 或者 truncate table 表名;
---------------------------------------------------select---------------------------------------------------
12:对表进行查询数据
/* 查询指定字段信息 格式: SELECT 字段1,字段2,...from 表名; */ SELECT uname FROM info;
/* distinct用于去除重复记录 格式: SELECT DISTINCT 字段 FROM 表名; */ SELECT DISTINCT uname FROM info;
----------------------------------------------select....where-----------------------------------------------
比较运算符 |
> < <= >= = <> |
大于、小于、大于(小于)等于、不等于 |
BETWEEN...AND... |
显示在某一区间的值(含头含尾) |
|
IN(set) |
显示在in列表中的值,例:in(100,200) |
|
LIKE 通配符 |
模糊查询,Like语句中有两个通配符: %用来匹配多个字符;例first_name like ‘a%’; _用来匹配一个字符。例first_name like ‘a_’; |
|
IS NULL |
判断是否为空 is null; 判断为空 is not null; 判断不为空 |
|
AND |
多个条件同时成立 |
|
OR |
多个条件任一成立 |
|
NOT |
不成立,例: where not (salary >100); |
查询所有姓名为mark记录 SELECT * FROM student WHERE name = 'mark'; 查询出工资大于5000的信息 SELECT * FROM student WHERE money >5000; 查询出工资在2000-5000之间信息 SELECT * FROM student WHERE money >=2000 AND money <=5000; 或 SELECT * FROM student WHERE money BETWEEN 2000 AND 5000; 查询出工资是1000或5000或3500信息 SELECT * FROM student WHERE money =1000 OR money =5000 OR money =3500; 或 SELECT * FROM student WHERE money IN(1000,5000,3500); 查询出地址名称包含”长沙”的信息。 SELECT * FROM student WHERE name LIKE "%长沙%"; 查询出地址名称中是五个字的账务信息 SELECT * FROM student WHERE address LIKE "_____"; -- 五个下划线_ 查询出姓名不为null账务信息 SELECT * FROM student WHERE name IS NOT NULL; SELECT * FROM student WHERE NOT (name IS NULL);
-------------------------------------------select...order by------------------------------------------------
13:对表中数据进行排序
/* order by 用于对指定列排序数据 格式: SELECT 列名 from 表名 where 条件 order by 列名 [desc][asc]; desc:降序 asc:升序,默认升序 */ SELECT uid,uname FROM info WHERE uname = 'mark' ORDER BY uid DESC;
---------------------------------------------------as--------------------------------------------------------
14:对表中某列临时改名
/* group by 对表中某类别类进行分组 格式: SELECT 列名 from 表名 group by 列名; */ SELECT COUNT(uid) AS '所有含有长沙列数',uaddress FROM info WHERE uaddress LIKE '%长沙%' GROUP BY uaddress;
----------------------------------------------select...group by--------------------------------------------
15:对表中某一类别分组
/* group by 对表中某类别类进行分组 格式: SELECT 列名 from 表名 group by 列名; */
SELECT COUNT(uid) AS '所有含有长沙列数',uaddress FROM info WHERE uaddress LIKE '%长沙%' GROUP BY uaddress;
注意:结果集是分组查询后,再次进行筛选,不能使用where,分组后再次过滤,要使用关键词having
---------------------------------------------------聚合函数--------------------------------------------------
AVG() 返回某列的平均值 COUNT() 返回某列的行数(不为空) MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某个列之和