一、对数据库的操作
1.创建一个库
-- create database 库名
create database person;
创建带有编码的数据库
-- create database 库名 character set 编码
create database userdb character set utf8;
查看编码
show create database userdb;
2.删除一个库
-- drop database 库名
drop database person;
3.使用库
-- use 库名
use userdb;
4.查看当前正在操作的库
select database();
二、对数据库表的操作
1.创建一张表
-- create table 表名(
-- 字段名 类型(长度) [约束],
-- 字段名 类型(长度) [约束],
-- 字段名 类型(长度) [约束]
-- );
create table uPerson(
uid int(32) primary key auto_increment,
uname varchar(32),
upassword varchar(32),
uscore varchar(32)
);
2.查看数据库表
创建完成后,我们可以查看数据库表
show tables;
查看表的结构
-- desc 表名
desc userdb;
3.删除一张表
-- drop table 表名
drop table userdb;
查看数据库表
show tables;
4.修改表
修改表名
rename table userdb to user_db;
4.1添加一列
-- alter table 表名 add 字段名 类型(长度) [约束]
alter table user_db add uinfo varchar(32)
4.2修改列的类型(长度、约束)
-- alter table 表名 add 字段名 类型(长度) [约束]
alter table user_db modify uinfo varchar(100) null;
4.3修改列的列名
-- alter table 表名 change 旧列名 新列名 类型(长度) [约束]
alter table user_db change uinfo info varchar(32) null;
alter table user_db change upassword upwd varchar(32) null;
4.4删除表的列
-- alter table 表名 drop 列名
alter table user_db drop info;
4.5修改表名
-- rename table 表名 to 表名
rename table user_db to tbl_user;
4.6修改表的字符集
alter table 表名 character set utf8;
查看当前表的编码
show create table tbl_user;
三、对数据库表记录进行操作(修改)
1.插入记录
-- insert into 表名(列名1,列名2,列名3……) values(值1,值2,值3……)
insert into tbl_user(uid,uname,upwd,uscore) values(1,'张王三','12233','65');
insert into tbl_user(uid,uname,upwd,uscore) values(2,'李四','12234','76');
insert into tbl_user(uid,uname,upwd,uscore) values(3,'王五','12235','86');
insert into tbl_user(uid,uname,upwd,uscore) values(4,'赵六','12236','62');
-- insert into 表名 values(值1,值2,值3……)
insert into tbl_user values(5,'王一','1111','91');
1.1 插入数据中文乱码问题解决办法
方式一:创建表的时候直接设置好编码为utf8
方式二:【不建议!】
直接修改数据库安装目录里面的my.ini文件的第57行
方式三:set names gbk;
2.修改表记录
2.1不带条件的-更改表中所有的记录
update 表名 set 字段名=值 ,字段名=值.....
update tbl_user set upwd=123456;
2.2带条件的
update 表名 set 字段名=值,字段名=值..... where 条件
update tbl_user set upwd=1122334 where uid = 2;
3.删除表记录
3.1 带条件的
delete from 表名 where 条件
delete from tbl_user where uid=1
注意,删除后,uid不会重置!
3.2不带条件的
先准备点数据
insert into uperson values (1,'来来来','szs','12');
insert into uperson values (2,'来来来','sys','48');
insert into uperson values (3,'ww1','szt','28');
insert into uperson values (4,'szss','srs','53');
insert into uperson values (5,'来qqq','uos','56');
删除操作
delete from 表名;
delete from uperson;
3.3面试题
说说delete与truncate的区别?
delete删除的时候是一条一条的删除记录,它配合事务,可以将删除的数据找回。
truncate删除,它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。
Delete操作演示:
start transaction ;
delete from uperson;
rollback;
Truncate操作演示
start transaction;
truncate table uperson;
rollback;
show tables;
注意:delete删除,uid不会重置!而使用truncate操作,uid会重置
4.查询操作
语法
select [distinct]*|列名,列名 from 表名 [where 条件]
4.1简单查询
1.查询所有用户
select *from tbl_user;
2.查询名字分数
select uname,uscore from tbl_user;
3.查询名字使用表别名
-- select * from tbl_user as(as可省略) u;
select * from tbl_user as u;
4.查询姓名,使用别名 as可省略
select uname as u from tbl_user;
5.去掉重复值(按照密码)
select distinct(upwd) from tbl_user;
6.将所有人的分数+10 显示
select uid ,uname,uscore+10 from tbl_user;
4.2条件查询
1.查询名称为"王五"的信息
select * from tbl_user where uname='王五';
2.查询分数大于80的信息
select * from tbl_user where uscore>80;
3.查询含有“王” 字的信息
select * from tbl_user where uname like '%王%';
4.查询id在(3,5)范围的信息
select * from tbl_user where uid in(3,5);
5.查询含有“王” 并且id为5 的信息
select * from tbl_user where uname like '%王%' and uid=5;
6.查询uid 为2或者5的信息
select * from tbl_user where uid =2 or uid =5;
4.3排序
1.查询所用用户 按照分数(升序降序)
-- 升序 select * from 表名 order by 要升序的列名 asc;
select * from tbl_user order by uscore asc;
-- 降序 select * from 表名 order by 要降序的列名 desc;
select * from tbl_user order by uscore desc;
2.查询带“王”字的用户 并按照分数降序排序
select * from tbl_user where uname like '%王%' order by uscore desc;
4.4聚合函数
1.获得所有学生分数的总和
select sum(uscore) from tbl_user;
2.获得所有学生分数的平均数
select avg(uscore) from tbl_user;
3.获得所有学生的个数
select count(*) from tbl_user;
4.5分组操作
1. 更具uid 分组
select uid ,count(*) from tbl_user group by uid;
2.更具cid分组,统计每组的分数值
select cid,avg(uscore) from tbl_user group by uscore having avg(uscore)>>70;
4.6 查询总结
select 一般在的后面的内容都是要查询的字段
from 要查询到表
where
group by
having 分组后带有条件只能使用having
order by 它必须放到最后面
select * from tbl_user;
select * from uperson;