表操作

  表相当于一个文件,其形式与现实中的表格相同。表中的每条记录都有相应的字段,字段就类似于表格的表头。

表操作详细:  

#对表进行操作(文件)
#首先要切换到指定库(即文件夹)下:use db1;
#1、增:
create table t1(id int,name char(10));#新建一个表,表中的字段必须表上数据类型,char表示字符串
create table t1(id int,name char(10))engine=innodb,default charset gbk;
#新建一个表,可以指定引擎,不指定的话默认的引擎就是innodb,default是指定其字符编码,若不指定默认为该库的字符编码 #2、添加字段
alter table t1 add age int(3) not null default 22;#添加一个不能为空的age字段,默认值22
alter table t1 add number int(5) not null after name;#在name字段后添加一个number字段
alter table t1 add sex enum('male','female') default 'male' first;#在最前面添加枚举 #3、修改字段:
alter table t1 modify name char(12);#修改name数据类型的字节数为12 #4、增加约束
alter table t1 modify id int not null primary key;#设置为主键
alter table t1 modify id int not null auto_increment;#设置为自增,与上句连用可设置为自增主键
#alter table t1 add primary key(name,sex);#增加复合主键 #5、删除主键
alter table t1 drop primary key;#因为主键唯一,所以无需指定 #6、删除自增约束
alter table t1 modify id int not null; #7、删除字段
alter table t1 drop age;#删除age字段 #8、删除表:
drop table t1; #9、复制表
create table t2 select * from t1 where 1=2;#只拷贝表结构,不拷贝表内容
alter table t2 modify id int primary key auto_increment;#将表修改成自增id #查:
show tables;#查看所有表
show create table t1;#查看创建的表
desc t1;#查看表结构,比show好用

数据操作

  数据操作是数据库知识里的重中之重,尤其是多表的关联查询操作!

数据操作分为数据的增、删、改、查,其中最常用的是查询操作。先来看比较简单的增删改。

一、增

#增数据的两种形式(增即向表中插入,所以用insert形象的表达)
insert into db1.t1 values(1,'egon1'),(2,'egon2');#按位置传参,可一次性插多条数据
insert into db1.t1 (name) values('egon'),('alex');#指定只传name,id默认为null

  

二、删

delete from t1 where id=4;#删除指定字段

  

三、改

update t1 set name='SB' where id=4;#将id为4的字段的name修改为SB
update t1 set name='SB' where name='alex';#将name为alex的字段的name修改为SB
update t1 set name='';#将name的值都修改为空,即清空所有name的内容

  

四、查

  查询分为单表查询和多表查询,先介绍单表查询和查询关键字。

首先我们要知道查询的语法

select 字段 from 表名 [条件]

简单查询(单表查询)

首先创建一张表

create table t1(
id int not null unique auto_increment,
name varchar(20) not null,
sex enum('male','female') not null default 'male', #大部分是男的
age int(3) unsigned not null default 28,
hire_date date not null,
post varchar(50),
post_comment varchar(100),
salary double(15,2),
office int, #一个部门一个屋子
depart_id int
);

  

查询语句

select * from t1;
select id,name,age from t1;
select distinct post from t1;#去重
select name,age*5 from t1;
select name,age as annual_age from t1;#将查询后所得的表以annual_age 为表头
select concat('姓名':name,'薪资':salary) from t1;#将2项整合输出
select dep_id,group_concat(name) from t1 group by dep_id;#分组显示
select dep_id,count(id) from t1 group by dep_id;#分组显示总数
select dep_id,max(age) from t1 group by dep_id;#分组后显示最大值
select dep_id,avg(age) from t1 group by dep_id;#分组后显示最小值

  

查条件的关键字及优先顺序

from          #定位表
where #按条件进行过滤
group by #按条件将结果进行分组(如果有聚合函数则再进行聚合),与group_cincat()可一起使用
having #再次过滤,在聚合后进行
select #查,得到结果
distinct #去重
order by #按条件排序(升序asc、降序desc)
limit #限制显示条数(limit x,y#从第x开始往后显示y条,x不写时默认为0)

  

一、where

  where是最基本的条件筛选,条件中可以用比较运算符、逻辑运算符、between、in、like

#1:单条件查询
SELECT name FROM employee
WHERE post='sale'; #2:多条件查询
SELECT name,salary FROM employee
WHERE post='teacher' AND salary>10000; #3:关键字BETWEEN AND
SELECT name,salary FROM employee
WHERE salary BETWEEN 10000 AND 20000; SELECT name,salary FROM employee
WHERE salary NOT BETWEEN 10000 AND 20000; #4:关键字IS NULL(判断某个字段是否为NULL不能用等号,需要用IS)
SELECT name,post_comment FROM employee
WHERE post_comment IS NULL; SELECT name,post_comment FROM employee
WHERE post_comment IS NOT NULL; SELECT name,post_comment FROM employee
WHERE post_comment=''; 注意''是空字符串,不是null
ps:
执行
update employee set post_comment='' where id=2;
再用上条查看,就会有结果了 #5:关键字IN集合查询
SELECT name,salary FROM employee
WHERE salary=3000 OR salary=3500 OR salary=4000 OR salary=9000 ; SELECT name,salary FROM employee
WHERE salary IN (3000,3500,4000,9000) ; SELECT name,salary FROM employee
WHERE salary NOT IN (3000,3500,4000,9000) ; #6:关键字LIKE模糊查询
通配符’%’
SELECT * FROM employee
WHERE name LIKE 'eg%'; 通配符’_’
SELECT * FROM employee
WHERE name LIKE 'al__';

where具体用法

二、group by

  group by 是用来分组的,分组就是将所有记录按照某个相同字段进行归类,分组的依据一般选择字段值相同率较高的字段,需要注意的是分组发生在where之后

  group by通常与聚合函数通用,如数量count(),最大值max(),最小值min(),平均值avg(),求和sum()

#单独使用GROUP BY关键字分组
SELECT post FROM employee GROUP BY post;
#注意:我们按照post字段分组,那么select查询的字段只能是post,想要获取组内的其他相关信息,需要借助函数 #GROUP BY关键字和GROUP_CONCAT()函数一起使用
SELECT post,GROUP_CONCAT(name) FROM employee GROUP BY post;#按照岗位分组,并查看组内成员名
SELECT post,GROUP_CONCAT(name) as emp_members FROM employee GROUP BY post; #GROUP BY与聚合函数一起使用
select post,count(id) as count from employee group by post;#按照岗位分组,并查看每个组有多少人

group by 用法

  

三、having

  having为分组后的过滤,与where不同的是having只能发生在group by 之后,可以理解为分组完之后的过滤

select post,avg(salary) from employee group by post having avg(salary) > 10000 and avg(salary) <20000;

四、正则表达式

  在SQL查询中也支持正则表达,其作用域like相似都是用于模糊匹配,不过正则更细致一些,like则要与%同用

SELECT * FROM employee WHERE name REGEXP '^ale';

SELECT * FROM employee WHERE name REGEXP 'on$';

SELECT * FROM employee WHERE name REGEXP 'm{2}';

进阶——多表查询

  多表查询篇幅较长,故单独成篇。地址:http://www.cnblogs.com/zhuminghui/p/8352571.html

    

MySQL表操作及数据操作的更多相关文章

  1. php实例根据ID删除mysql表中的数据

    在动态网站开发中,我们经常要根据ID删除表中的数据,例如用户删除帖子,就需要根据ID删除帖子.本文章向大家介绍php根据ID删除表中数据的实例,需要的朋友可以参考一下本文章的实例. php实例根据ID ...

  2. Python 基于Python从mysql表读取千万数据实践

    基于Python 从mysql表读取千万数据实践   by:授客 QQ:1033553122 场景:   有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...

  3. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  4. MySQL库操作,表操作,数据操作。

      数据库服务器:本质就是一台计算机,该计算机上安装有数据库管理软件的服务端,供客户端访问使用. 1数据库管理系统RDBMS(本质就是一个C/S架构的套接字),关系型数据库管理系统. 库:(文件夹)- ...

  5. MySQL常见的库操作,表操作,数据操作集锦及一些注意事项

    一 库操作(文件夹) 1 数据库命名规则 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 2 数据库相关操作 创 ...

  6. MySQl的库操作、表操作和数据操作

    一.库操作 1.1库的增删改查 (1)系统数据库: performance_schema:用来收集数据库服务器的性能参数,记录处理查询时发生的各种事件.锁等现象 mysql:授权库,主要存储系统用户的 ...

  7. HBase shell 命令创建表及添加数据操作

    创建表,表名hbase_1102,HBase表是由Key-Value组成的,此表中Key为NAME   此表有两个列族,CF1和CF2,其中CF1和CF2下分别有两个列name和gender,Chin ...

  8. JAVA IO操作:数据操作流:DataOutputStream和DataInputStream

    掌握DataOutputStream和DataInputStream的作用. 可以使用DataOutputStream和DataInputStream写入和读取数据. 在IO包中提供了两个与平台无关的 ...

  9. MySql常用操作语句(2:数据库、表管理以及数据操作)

    本文主要内容转自一博文. 另外可供参考资源: SQL语句教程 SQL语法 1.数据库(database)管理  1.1 create 创建数据库 mysql> create database f ...

随机推荐

  1. DOTween 使用方法

    参考链接: http://dotween.demigiant.com/documentation.php https://www.cnblogs.com/backlighting/p/5344047. ...

  2. Android异步处理系列文章四篇之四 AsyncTask的实现原理

    Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ...

  3. [PHP] 05 - Cookie & Session

    故事背景 同 http, html, REST API 一样属于基础性的知识内容. [Node.js] 07 - Html and Http [Node.js] 08 - Web Server and ...

  4. 解决Win10 Virtualbox5.2.18桥接不能联网小记

    1.设备管理器,右键没添加过时硬件(如果没有,则在cmd中键入命令hdwwiz C:\windows\system32>hdwwiz),按照如下图操作 如此安装Microsoft KM-TEST ...

  5. linux下通过curl访问web服务器

    在通过xshell或者其他远程连接工具连接linux服务器,没安装浏览器,却要测试web服务的请求: 可以使用curl 访问web服务器 例如返回百度的主页内容 #curl www.baidu.com ...

  6. Excel 函数集(使用过的)

    1.   SUBTOTAL函数  筛选结果求和 SUBTOTAL(函数编号, 区域) 函数编号 为 1 到 11(包含隐藏值)或 101 到 111(忽略隐藏值)之间的数字,指定使用何种函数在数据清单 ...

  7. onems设备管理系统(TR-069和OMA)

    onems设备管理系统(TR-069和OMA) 沃克斯科技OneMS设备管理套件是一个全面的为服务提供商和企业提供自动配置和远程管理功能的设备管理解决方案.它利用现有的网络基础设施来自动化订购,预配置 ...

  8. H - Being a Good Boy in Spring Festival

    一年在外 父母时刻牵挂 春节回家 你能做几天好孩子吗 寒假里尝试做做下面的事情吧 陪妈妈逛一次菜场 悄悄给爸爸买个小礼物 主动地 强烈地 要求洗一次碗 某一天早起 给爸妈用心地做回早餐 如果愿意 你还 ...

  9. oracle相关的知识

    01.表空间的创建与删除 Spool 目录  (把sql语句都记录在txt文件中)spool  e:\xxx.txtSpool off 结束   SQL> --清除屏幕信息SQL> cle ...

  10. Centos下磁盘管理---分区

        1.磁盘分区格式说明 linux分区不同于windows,linux下硬盘设备名为(IDE硬盘为hdx(x为从a—d)因为IDE硬盘最多四个,SCSI,SATA,USB硬盘为sdx(x为a—z ...