mysql常用语句

一、对数据库的操作

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;

你可能感兴趣的:(mysql常用语句)