数据库Mysql基本语句总结

这篇博客总结了数据库MySQL的基本操作,包括查询所有数据库、切换数据库、创建表、插入数据、删除表、修改属性、更新数据、重命名、字符串操作、排序、集合运算、空值处理、查询语句、自然连接、聚集函数、分组、HAVING子句、空值和布尔值处理、集合成员资格等关键知识点。
摘要由CSDN通过智能技术生成

目录

1、查询所有的数据库

2、指明使用哪个数据库

3、新建表( create table) 

4、插入数值 insert

5、删除表

6、修改属性 alter

7、更新:使得不改变整个元组的情况下改变其部分属性的值 update

8、更名运算----重命名 as

9、字符串运算 

10、排列元组的显示次序

11、集合运算

12、空值:SQL将涉及空值的任何比较运算的结果视为unknown

13、查询

14、自然连接:只考虑那些在两个关系模式中都出现的属性上取值相同的元组对 natural join、join...using

15、聚集函数:以值的一个集合(集或多重集)为输入、返回单个值的函数

16、分组聚集 group by:该子句中所有属性上取值相同的元组将被分在一个组中

17、having子句:用group by形成分组后,对分组进行限定

18、对空值和布尔值的聚集

19、集合成员资格

20、集合的比较

21、空关系测试

22、重复元组存在性测试

23、from子句中的子查询

24、with子句:定义临时关系,这个定义只对包含with子句的查询有效

25、标量子查询:子查询只返回包含单个属性的单个元组


1、查询所有的数据库

show databases;

2、指明使用哪个数据库

不指名的话,可能无法进行下面的种种操作

use database_name; -- database_name为数据库名

3、新建表( create table) 

create table 表名1(
属性A1  类型D1,
属性A2  类型D2,
…………
属性An  类型Dn,
主键(Ax1,Ax2,……,Axn)
外键(Ak1,Ak2,……,Akn) references 表名2(Ak1,Ak2,……,Akn));

有外键就写,没有就可以省略。其中使用外键时要注意

  • 参照表的字段是否存在
  • 外键字段在其他表上是主键
  • 字段类型一定要一样
create table department   
(dept_name varchar(20),   
building varchar(15),     
budget numeric(12,2),     
primary key(dept_name));  
create table course
(course_id varchar(7),
title varchar(50),
dept_name varchar(20),
credits numeric(2,0),
primary key(course_id),
foreign key(dept_name) references department(dept_name));

4、插入数值 insert

插入数值时,如果插入的表有外键的话,要保证插入的外键值在以该外键为主键的表中存在,否则会出现以下类似错误,无法正确的插入

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`t`, CONSTRAINT `t_ibfk_1` FOREIGN KEY (`dept_name`) REFERENCES `department` (`dept_name`))

insert into table_name values(数据1,数据2,……,数据n); -- 对单个元组的插入请求
insert into table_name(A1,A2,...,An) values(数据1,数据2,...,数据n); -- 指定属性进行插入
insert into table_name select A1,... from tb1 where P; -- 在查询结果的基础上插入元组

没被插入的值用null表示,赋予空值 

insert into department values('Comp.Sci.','Taylor',65000);
-- -------------------------------------------------------
insert into course(course_id,title,det_name,credits)
    values('CS-437','Database Systems','Comp.Sci.',4);
-- -------------------------------------------------------
insert into instructor
    select ID,name,dept_name,18000
    from student
    where dept_name = 'Music' and tot_cred > 144;

5、删除表

  • delete时,保留表中的关系,删除表中的所有元组
delete from table_name; -- table_name为表名 删除表中所有元组
delete from table_name where P; -- 找出使P为真的元组
  • drop时,不仅删除表中所有元组,还删除表中的关系。一旦使用了该语句,除非用create table重新建该表,否则没有元组可以插入到该表中。
drop table table_name; -- table_name为表名

6、修改属性 alter

(1)为已有关系的表增加属性

alter table tb1 add A D; -- tb1为表名 A为添加的属性 D为添加属性的类型

(2)为已有关系的表去掉属性

alter table tb1 drop A; -- tb1为表名 A为要删除的属性

7、更新:使得不改变整个元组的情况下改变其部分属性的值 update

update tb1 set P;
update tb1 set P where P1;
update instructor set salary = salary * 1.05 where salary < 7000;

case语句:可以利用它在一条update语句中执行多种更新,并避免更新次序引发的问题

case
    when pred1 then result1
    when pred2 then result2
    ......
    when predn then resultn
    else result0
end
update instructor
set salaty = case
                when salary <= 10000 then salary * 1.05
                else salary * 1.03
             end

 8、更名运算----重命名 as

old-name as new-name

(1)把一个长的关系名换成短的,在查询其他地方使用起来更加方便

(2)适用于需要比较同一个关系中的元组的情况

select T.name, S.course_id
from instructor as T, teaches as S
where T.ID = S.ID;
-- 由于执行顺序为from---where---select,因此可以在更名后使用T和S
-- ----------------------------------------------------------
select distinct T.name
from instructor as T, instructor as S
where T.salary > S.salary and S.dept_name = 'Biology';

9、字符串运算 

  • SQL使用一对单引号来标示字符串,若单引号是字符串的组成部分,则用两个单引号字符来标示 eg:'it''s right'
  • 字符串上的相等运算是大小写敏感的 eg:'Comp.Sci.'不等于'comp.sci.'

模式匹配

(1)like

  • 百分号(%):匹配任意子串
  • 下划线(_):匹配任意一个字符

(2)escape——使得模式中能够包含特殊模式(%和_ÿ

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值