赞
踩
1.查看所有数据库
SHOW DATABASES;
3.创建数据库
CREATE DATABASE 数据库名;
CREATE DATABASE 数据库名 CHARSET=字符集;
示例:
CREATE DATABASE db1;
CREATE DATABASE db2 CHARSET=utf8;
3.查看数据库信息
SHOW CREATE DATABASE 数据库名;
4.删除数据库
DROP DATABASE 数据库名;
5.进入数据库
USE 数据库名;
1.显示所有表
SHOW TABLES;
2.创建表
CREATE TABLE 表名(字段1名 类型,字段2名 类型)CHARSET=utf8mb4/gbk;
示例:
create table hero(name varchar(50),money int,type varchar(10))charset=utf8;
某些数据库指定字符集为utf8时,默认为utf8mb3 ==>mb表示most bytes(最大字节)
utf8mp4中包含更多的表情和生僻字
3.查看表信息
SHOW CREATE TABLE 表名;
4.删除表
DROP TABLE 表名;
5.修改表名
RENAME TABLE 原名 TO 新名;
6.查看表字段的信息
DESC 表名;
7.添加表字段
在表最后面添加字段
ALTER TABLE 表名 ADD 字段名 类型;
在表最前面添加字段
ALTER TABLE 表名 ADD 字段名 类型 FIRST;
在指定字段后添加字段
ALTER TABLE 表名 ADD 字段名 类型 AFTER 指定字段名;
8.删除表字段
ALTER TABLE 表名 DROP 字段名;
9.修改表字段
ALTER TABLE 表名 CHANGE 字段原名 字段新名 新类型;
10.删除表并创建新表
#删除表并创建新表,将表之前主键自增的数据清零
truncate table 表名;
1.全表插入
INSERT INTO 表名 values(值1,值2,....);
示例:
insert into person values("tom",18);
2.指定字段插入
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...);
示例:
insert into person(name,age)values("jerry",20);
3.批量插入数据
insert into person values("aa",12),("bb",12);
insert into person(name) values("cc"),("dd"),("ee");
1.查询
SELECT 字段信息 FROM 表名 WHERE 条件;
1.修改
UPDATE 表名 SET 字段名=? ,字段名=?... WHERE 条件;
DELETE FROM 表名 WHERE 条件;
int 的默认值是11,包含一个符号位.我们也可以指定一个小于11的位数,利用zerofill关键字填0,示例:
create table t1(age int(5) zerofill);
insert into t1 values(18);
select * from t1;
大部分MySQL软件的timestamp类型 默认设置的为 当数据改变时时间会自动跟着改变,可以通过以下方式关闭自动更新时间
alter table product change created created timestamp not null default current_timestamp;
关闭自动更新时间后字段属性:
alter table product change created created timestamp not null default current_timestamp on update current_timestamp;
打开自动更新后字段属性:
举例:
create table t5(id int primary key,name varchar(30));
insert into t5 values(1,"a");
insert into t5 values(2,"b");
insert into t5 values(2,"c"); //重复报错
insert into t5 values(null,"d"); //不能为null 报错
#表示获取title字段中的1~3个字符串,将获取到的结果和 ... 拼接
select id,concat(substring(title,1,3),'...') title,sale_count from product order by sale_count desc limit 0,6
表示无符号位
,将使得此字段不会出现负数,且取值区间是原正数的2倍
字段是否添加unsigned需要自行评估,例如表中的id字段永远不可能为负数,就可以用此关键字修饰
#id的取值范围为:[-128,127]
create table user(id tinyint)
#添加了unsigned关键字后,id的取值范围为:[0,255]
create table user(id tinyint unsigned)
create table user(id tinyint unsigned auto_increment comment '数据id')
select id,if(length(title)>9,concat(substring(title,1,3),'...'),title) title,sale_count from product
order by 字段名 asc(升序 默认)/desc(降序)
order by 字段名,字段名...
limit 跳过的条数,请求的条数(每页的条数)
select name as "别名" from emp;
select name "别名" from emp;省略 as
select name 别名 from emp; 省略 as 和 双引号
通过聚合函数可以对查询的多条数据进行统计查询
#查询1号部门的平均工资
select avg(sal) from emp where dept_id = 1;
select count(*) from emp where job = '程序员';
可以将某个字段相同值的数据划分为一组,然后以组为单位进行统计查询
#查询每个部门的平均工资
select dept_id,avg(sal) from emp group by dept_id;
select 字段信息 from 表名 where 普通字段条件 group by 分组字段名 having 聚合函数条件 order by 排序字段名 limit 跳过条数,请求条数.
where 只能写普通字段的函数,后面不能写聚合字段的函数
示例:
#查询工资最低的员工的同事们的信息(指同一部门)
#1 得到最低工资
select min(sal) from emp;
#2 通过最低工资得到拿最低工资人的部门id
select dept_id from emp where sal=(select min(sal) from emp);
#3 通过部门id查询员工
select * from emp where dept_id=(select dept_id from emp where sal=(select min(sal) from emp)) and sal!=(select min(sal) from emp);
select * from A表,B表 where 关联关系 and 其他条件;
示例:
#查询工资高于2000的员工姓名,工资和部门信息.当某个字段是其中一个表特有的,那么在操作该字段时可以不用 表名.字段名
select e.name,e.sal,d.* from emp e,dept d where e.dept_id = d.id and sal >2000;
select * from A表 join B表 on 关联关系 where 其他条件;
#查询工资高于2000的员工姓名,工资和部门信息.
select e.name,sal,d.* from dept d join emp e on e.dept_id = d.id where sal > 2000;
select * from A表 left/right join B表 on 关联关系 where 其他条件;
select t.name,s.name
from teacher t
join t_s ts on t.id = ts.tid
join student s on s.id = ts.sid
where s.name = '小明';
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。