CLL

Sunshine always comes after the rain

Welcome to my personal station!



正在加载今日诗词....

MySql数据库的增删改查

Sql的分类

  • DCL 数据控制语言
  • DDL 数据定义语言
  • DML 数据操作语言
  • DQL 数据查询语言
  • DDL 数据定义语言

相关命令:create drop alter truncate

操作数据库

查看数据库服务器已有的数据库
Show databases; 查看数据库的定义信息 Show create database 数据库名称 切换、连接数据库 Use 数据库名称 查看当前连接的数据库
Select database();

创建数据库##

Create database 数据库名称
数据库的修改和删除
修改:alter database 数据库名称character set 字符编码名称
删除:alter database 数据库名称
Mysql常用数据类型
6638f12ce1f0919a.png

操作表

查看当前库已有表
Show tables;
查看表定义信息
Show create table 表名;
查看表结构
Desc 表名

创建表

Create table 表名(
列名 数据类型(长度),
列名 数据类型(长度) //最后一列的定义不需逗号
…… ……
);

修改表

/*创建表emp*/  
Create table emp(  
  
);  
/*为emp表添加列addressvarchar(30)*/  
Alter table emp add address varchar(30);  
/*修改emp表的address数据长度为40*/  
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);  主键自增 auto_increment  仅可用于第一种方式  且列的数据类型为int   B.非空约束notnull和唯一约束unique

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);   DML 对表数据的增删改   相关命令 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删除:  

truncate[table] stu;  
//[table] 可有可无   delete和truncate区别    delete逐条删除数据(性能较低),表的数据不在但表的结构还在,删除有日志,相当于进了回收站    truncate(截断表):首先执行droptable删除表结构,然后再执行  create table创建表结构。性能较优。直接将表删掉然后在创建表,删除没有日志  

DQL

命令只有select
语法:
Select selection_list 要查询的列名称
From table_list要查询表名称
1 Where condition筛选数据行的条件
2 Group by 对结果分组
3 Having condition 分组后的筛选行的条件
4 Order 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岁的人的姓名和年龄

Select sname,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;  

常用数据库操作命令
primary key 主键约束
auto_increment 自增(在Android中不用下划线,自增仅适用于integer类型)
not null 非空约束
unique 唯一约束
foreign key 外键约束
操作
创建数据库
create database 数据库名称
对表数据的增删改
插入数据
insert into 表名 (用逗号分割的列表名称,可有可无) values(使用逗号分隔的每列的数据列表)
创建表
create table 表名(列名 数据类型(长度),列名 数据类型(长度)……);
修改表数据
update 表名 set 列名=新值,列名=新值……where子句(可有可无)
删除表
delete from 表名 where子句(可有可无)
修改表添加列
alter table 表名 add address varchar(自定义数值);

我的小站 - http://bestlei.top

感谢您的阅读!欢迎指正!

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝/微信扫一扫,即可进行扫码打赏哦