mysql对表的基本操作

mysql表的基本操作

删除操作drop

删除数据库 DROP DATABASE <数据库名>;

  • drop database test;

删除数据表 DROP TABLE <表名>;

  • drop table t_users;

基本表删除数据、表上的索引都删除
表上的视图往往仍然保留,但无法引用
删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述(标准中没有,认为表建立后就永久存在)

  • show create table t1;

修改基本表alter

修改表 ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束] ]
[ DROP <完整性约束名> ]
[ MODIFY <列名> <数据类型> ];
说明:
<表名>:要修改的基本表
ADD子句:增加新列和新的完整性约束条件
DROP子句:删除指定的完整性约束条件
MODIFY子句:用于修改列名和数据类型

基本练习

1、创建一个数据库test,如果数据库已经存在则删除

  • drop database if exists test;
  • create database test default character set utf8;

2、切换当前数据库

  • select database(); 查看当前数据库
  • use test;

3、创建一个用于存储学生信息的学生表 student
编号id,姓名name,成绩score

  • show tables; 查看当前库中的所有表
  • drop table if exists student; 如果已经存在student表则执行删除操作
  • create table if not exists student(
    id bigint primary key auto_increment,
    name varchar(10) not null,
    score numeric(4,1) default 0 )
    engine=innodb default charset utf8;

4、向Student表增加“入学时间”列,其数据类型为日期型

  • alter table student add scome date;

不论基本表中原来是否已有数据,新增加的列一律为空值。所以如果表中已经有数据,则注意not null约束的问题
5、将年龄的数据类型改为半字长整数

  • alter table student add age int; 向表中添加一个int类型的列age
  • desc student; 查看当前的表结构
  • alter table student modify age smallint;

6、删除学生姓名必须取唯一值的约束

  • alter table student modify name varchar(10) unique;
    在这里插入图片描述
  • alter table student drop name; 删除指定列name
  • alter table student add name varchar(10); 重新添加列name

对表的基本操作 DML+DQL

增加数据:

Insert into 表名称 values(值的列表)
Insert into tb_users values(1,’yan’,’123’) 注意和表的列定义一一对应,当值不确定时也必须写null
Insert into 表名称(列名称,…) values(对应的值,…) 注意一一对应,注意数据类型。如果没有出现的列则自动插入null
在这里插入图片描述
插入数据总结
字符类型和日期类型的数据前后要添加’’单引号
没有指定列时,要给出完整数据,且要对应顺序:
Insert into student values(1,’Tom’,’1’);
优化写入,指定列:
Insert into stud(id,name)values(1,’jack’);

修改数据

update 表名称 set 列名称=值, … 将指定表中指定列的值全部修改为指定值
update stud set name=‘Jack’; 将stud表中的所有行的name列值修改为jack
update 表名称set 列名称=值, … where 条件 只修改满足条件的指定行上列值
update stud set name=‘Jack’where id=1; 将stud表中的id值为1的行的name列值修改为jack

同时修改两个值:update stud setname=‘Rose’,id=22 where id=1;

在原值上面进行累加操作:update product set price=price1.1 -所有商品的价格上涨10%
update product set price=price
1.1 where cname=‘食品’-只有列名为cname值为食品的商品,价格上涨10%

删除数据

delete from 表名称; 删除表中的所有数据,表结构仍旧存在,类似truncate table 表名称
delete from 表名称 where 条件; 根据条件删除数据,例如delete from tb_users where id>3则会删除所有id>3的行
delete from stud 全部删除
delete from stud where id=1; 删除指定的行
特殊写法: delete from stud where 1=1 delete from stud where 1=2
也可以使用 TRUNCATE TABLE stud; 它与delete的区别是不记录操作日志,即无法恢复数据
从执行效果上看 truncate table stud和delete from stud一致,都是删除了stud表中的所有数据,但是执行是有区别的。 【***】
truncate table不是DML语句,没有事务的概念,所以直接执行删除。不能撤销操作

delete from属于DML语句,有事务,所以在删除前需要记录日志,以供事务执行回滚撤销操作。

一般针对大量数据的删除操作,使用truncate执行效率高

查询数据

SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表名或视图名>[,<表名或视图名> ] …
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];
select * from 表名称 查询指定表中的所有行的所有列数据,用于指代所有列。事实上一般建议写列名称,而不是
select * from tb_users;
Select 列名称,… from 表名称 查询指定表中的所有行的指定列的数据,没有指定的列不查询
select username,password from tb_users; 只获取username和password两个列的值,而id列的值不获取

select *或者指定列 from 表名称 where 条件; 只查询满足条件的行
条件:
比较 >大于 >=大于等于 <小于 <=小于等于 !=不等于 =等于比较,不是赋值
select * from stud where age>=18; 查询年龄大于等于18岁的学生
select * from stud where age=18; 注意=不是赋值,是等值判断,查询年龄为18岁的学生
特殊比较 =null空值判断
在数据库中null表示不确定的值,所以判断不能使用=号,只能通过is null判空或者is not null非空进行判断
select * from student where name is null;
select * from student where name is not null;
在这里插入图片描述
注意:’’空字符串和null不是一样的 is null可以获取id=6,但是不能获取id=7
在这里插入图片描述
from语句在mysql中不是必须的【数据库不同有所区别】
在这里插入图片描述
在这里插入图片描述
字符串的比较
允许进行大小的比较,但是一般使用相等和不等于的判定较多

  • select * from tb_users where username=’zhangsan’ and password=’123456’

模糊查询 like _和%,例如查询所有姓张的学生
使用通配符_或者%,必须使用like或者not like运算符,不能使用=号
_表示一个任意字符
查询所有姓张的同学

  • select * from stud where name like ‘张%’ 其中%表示任意个数的任意字符

查询所有姓张的同学,并且名字为2个字符

  • select * from stud where name like ‘张_’ 其中_表示1个任意字符

查询所有名字中有书字的同学

  • select * from stud where name like ‘%书%’

查询所有名字以书字结尾的同学

  • select * from stud where name like ‘%书’
    在这里插入图片描述
    多条件查询
    and与 or或 not非
    查询所有的姓张的男生 select * from stud where name like ‘张%’ and sex=1
    查询姓张或者年龄在18岁以下的学生 select * from stud where name like ‘张%’ or age<18
    查询姓张或者年龄在18岁以下的男生 select * from stud where (name like ‘张%’ or age<18) and sex=1
    查询所有年龄不在18岁以下的学生 select * from stud where not(age<18)
    术语
    元组是关系数据库中的基本概念,是事物特征的组合,可以描述一个具体的事物。
    关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,元组的集合称为关系,每列就是一个属性。 在二维表里,元组也称为行,属性为列。

字段:某一个事物的一个特征或者说是属性
列:字段的另一种称谓

表:记录的属组合,表示同一类事物的组合。
主键:能唯一标识信息的事物
域:属性的取值范围
关系模式:关系的描述,表示为:关系名(属性列表) 例如:学生(学号,姓名,性别,年龄,系别)
关系的约束:实体完整性约束,参照完整性约束,用户自定义完整性约束【域完整性约束】

练习:

学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
题目:
查询全体学生的学号与姓名
select sno,sname from student
查询全体学生的姓名、学号、所在系
select sname,sno,sdept from student
查询全体学生的详细记录
select * from student
Select sno,sname,ssex,sage,sdept from student
定义别名的方法 as
select id as 编号, name as 姓名, age 年龄 from student;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值