MySQL数据库的增删改查操作详解
转载请注明出处:http://blog.csdn.net/qq_35917489/article/details/78557465
Sql的分类
DCL 数据控制语言
DDL 数据定义语言
DML 数据操作语言
DQL 数据查询语言
DDL 数据定义语言
相关命令:create drop alter truncate
操作数据库
查看数据库服务器已有的数据库
Showdatabases;
查看数据库的定义信息
Showcreate database 数据库名称
切换、连接数据库
Use 数据库名称
查看当前连接的数据库
Select database();
创建数据库
Createdatabase 数据库名称
数据库的修改和删除
修改:alter database 数据库名称character set 字符编码名称
删除:alter database 数据库名称
Mysql常用数据类型
类型 |
释义 |
举例 |
Int |
整数型 |
Age int; |
double |
浮点型 |
Double(5,2)表示最多5位,其中必须有两位小数 |
Char |
固定长度字符串类型 |
当对性别等已知长度定义时,可用char |
Varchar |
可变长度字符串类型 |
当时文本等不知其长度可用varchar |
Text |
字符串类型 |
|
Data |
日期类型 |
格式:yyyy-MM-dd |
time |
时间类型 |
格式:hh-mm-ss |
blob |
字节类型 |
|
timestamp |
时间戳类型 |
格式为:yyyy-MM-dd hh:mm:ss |
操作表
查看当前库已有表
Showtables;
查看表定义信息
Showcreate table 表名;
查看表结构
Desc 表名
创建表
Createtable 表名(
列名 数据类型(长度),
列名 数据类型(长度) //最后一列的定义不需逗号
…… ……
);
修改表
/*创建表emp*/
Create table emp(
);
/*为emp表添加列addressvarchar(30)*/
Alter table emp add address varchar(30);
Alter table emp modify address varchar(40);
/* 修改address列名为add*/
Alter table emp change address add varchar(40);
/*删除表emp的add列*/
Alter table emp drop add;
/*修改emp表的表名为employee*/
①Altertable emp rename to employee;
②Altertable emp rename employee;
删除表
Drop table 表名
约束简述
完整性约束:保证数据库表中数据的正确性,合理性等。
数据库约束
约束详解
A.创建主键约束,主键列值必须非空切唯一,并且一个表有且仅有一个主键
方式一:
Create table stu(
Sid varchar(10)primary key;
Sname varchar(20)
);
方式二:
Create table stu(
Sid varchar(10),
Sname varchar(20),
Primary key(sid)
);
Create table stu(
Sid varchar(10),
Sname varchar(20)
);
Alter table stu add primary key(sid);
Create table teacher(
Sid int primary key,
Sname varchar(20)not null unique,
Age int not null
);
Foreignkey 引用主键字段值的列在从表中叫做外键
方式一:
Create table dept(
Deptno int,
Deptname varchar(20),
Primary key(deptno)
);
Create table emp(
Eid int,
Ename varchar(21),
E_d_no int,
Primary key(eid),
Foreign key(e_d_no)references dept(deptno)
);
先定义表结构 然后修改表添加主键和外键(常用)
Create table emp(
Eid int,
Ename varchar(10),
E_d_no int
);
Create table dept(
Deptno int,
Deptname varchar(20)
);
/*修改主表 添加主键*/
Alter table dept add primary key(deptno);
/*修改从表 外键引用*/
Alter table emp add foreign key(e_d_no) references dept(deptno);
相关命令 insert updata delete
向表中插入数据
语法:insert into 表名(用逗号分隔的列名列表 可有可无)values(使用逗号分隔的每列的数据列表);
insert into stu(sid,sname,age,gender) values('M_001','tom',23,'male');
updata表名 set 列名=新值, 列名=新值……where子句(可有可无);
update student3 set sname='tomas',address='yowe' where sid=1;
update stu set sname=’jack’;
删除表中的数据
语法 delete from 表名where子句(可有可无)
delete from student3 where sid=1;
delete from stu;
truncate[table] stu;
[table] 可有可无
delete和truncate区别
delete逐条删除数据(性能较低),表的数据不在但表的结构还在,删除有日志,相当于进了回收站
truncate(截断表):首先执行droptable删除表结构, 然后再执行create table创建表结构。性能较优。直接将表删掉然后在创建表,删除没有日志
DQL
命令只有select
语法:
Select selection_list 要查询的列名称
From table_list要查询表名称
1Where condition筛选数据行的条件
2Group by 对结果分组
3Having condition 分组后的筛选行的条件
4Order by 对结果排序
得注意1234的先后顺序
基本查询
select * from stu; /*查询所有列*/
select sname,age from stu; /*查询指定列*/
条件查询
运算符
= != <> < <= > >=
Between…and In(set) is null and or not
举例:
a. 查询年龄大于35岁的人的姓名和年龄
Select sname,age from stu where age>35;
b. 查询年龄在15和35岁的人的姓名和年龄
Selectsname,age from stu where age between 15 and 35;
c. 查询年龄等于25、35、45岁的人的信息
select * from stu where age in(25,35,45);
d. 查询没有填写性别的人的信息
select * from stu where gender is null;
e. 查询年龄大于35岁的男性的信息
select * from stu where age>35 and gender=’man’;
f. 查询年龄大于35岁的信息
select * from stu where age>35;
g. 查询性别不为空的人的信息
Select* from stu where gender is not null;
模糊查询
模糊查询的通配符
% 表示任意数量的字符
_ 表示任意一个字符
模糊查询关键字 like
举例:
a.查询名字是字母z开头的人
select * from stu where sname like ‘z%’;
b.查询名字包含b字母的人
select * from stu where sname like’%b%’;
c.查询名字包含n字母其n字母前只有两个字符的人
Select * from stu where sname like’__n%’;
列别名
使用as关键字为列定义别名,另外,该关键字可以省去 selectename as 名字, sal as 月薪from emp e; select ename 名字, sal 月薪 from emp e;
排序
desc降序 asc升序(默认值)
查看雇员的月薪,并进行排序
select ename, sal as sal fromemp order by sal desc;
聚合函数
聚合函数是用来做纵向运算的函数:
COUNT():统计指定列不为NULL的记录行数;
MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
注意:聚合函数只返回一个结果
举例
a.查询emp表中月薪大于2500的人数:
select count(*) from emp where sal>2500;
b.统计所有员工平均工资:
select avg(sal) from emp
多表查询
笛卡尔积查询:
select * from emp,dept;
消除笛卡尔积:
内连接(等值连接)
select * from emp e,dept d wheree.deptno=d.detpno;
常用数据库操作命令
上一篇: 各种数据库连接的例子