(My)SQL基本操作笔记整理

本文详细介绍MySQL数据库的基础操作,包括数据库的登录、创建、查询、更新等,并提供了实用的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,数据库登录: 
运行cmd,     Mysql –uroot –p 
Mysql代表客户端命令,-u后面跟连接的数据库用户,-p表示要输入密码 
2,创建数据库: 
Create database test1; 
3,查看系统中数据库: 
Show databases; 
4,选择要操作的数据库: 
Use test1;
5,查看当前数据库中的表: 
Show  tables; 
6,删除数据库: 
Drop database database_name; 
7,创建表: 
Create table tablename(column_name1 column_type1 constraints, column_name2 column_type2 constraints, column_name3 column_type3 constraints,……. column_nameN column_typeN constraints) 
8,查看表的定义: 
Desc tablename; 
或者show create table emp \G; 
“\G”要大写,含义是使得记录能够按照字段竖着排列,对于内容比较长的记录更易显示; 
9,删除表: 
Drop table tablename; 
10,修改表: 
(1),修改表类型: 
Alter table tablename MODIFY column_definition [first|after col_name] 
例如: 
Alter table emp modify ename varchar(20); 
(2),增加表字段: 
   Alter table tablename add[column] column_definition [first|after col_name] 
例如: 
Alter table emp add column age int(3); 
(3),删除表字段: 
   Alter table tablename drop [column] col_name; 
   例如: 
   Alter table emp drop column age;
(4),字段改名: 
   Alter table tablename change column old_col_name column_definition [first|after col_name] 
   例如: 
   Alter table emp change column age age1 int(4); 
(5),修改字段排列顺序: 
  前面介绍的字段增加和删除的语法(add/change/modify)中,都有一个可选项first|after col_name,这个选项可以用来修改字段在表中的位置,默认add增加的字段是加在表的最后位置,而change/modify默认都是不会改变字段的位置。 
  例如: 
  Alter table emp add column birth date after ename; 
  Alter table emp modify age int(3) first; 
(6),更改表名: 
   Alter table tablename rename [to] new_tablename; 
   例如: 
   Alter table emp rename emp1; 
10,插入记录: 
Insert into tablename(field1,field2,….,fieldn) values(value1,value2,….,valuen); 
例如: 
Insert into emp values(‘lisa’,’2003-02-01’,’3000’,2); 
Insert into emp(ename,sal) values(‘dony’,3000); 
值得注意的是,MySQL有一个很好的特性是insert语句一次可以插入多条记录:  
Insert into emp(ename,hiredate,sal,deptno) 
Values 
(rec1_value1,rec1_value2,rec1_value3,rec1_value4), 
(rec2_value1,rec2_value2,rec2_value3,rec2_value4), 
(rec3_value1,rec3_value2,rec3_value3,rec3_value4), 
… 
(recn_valuen,recn_value2,recn_value3,recn_value4); 
11,更新记录: 
Update tablename set field1=value1,field2=value2,….,fieldn=valuen [where condition] 
例如: 
Update emp set sal=4000 where ename=’lisa’; 
Update语句可以同时更新多个表中数据,语法如下: 
Update t1,t2…tn set t1.field1=expr1,tn.field1=exprn [where condition] 
12,删除记录: 
Delete from tablename [where condition]; 
例如: 
Delete from emp where ename=’dony’; 
一次删除多个表中的数据,句法如下: 
Delete t1,t2,…,tn from t1,t2,…,tn [where condition] 
例如: 
Delete a,b from emp as a,dept as b where a.ename=’Hui’ and b.deptno=1; 
13,查询记录: 
Select 语句: 
最简单形式 select * from tablename; 
(1),不重复的记录查询: 
Select distinct deptno from emp; 
(2),条件查询: 
Select * from emp where ename=’Lisa’; 
(3),排序和限制: 
关键字order by 实现: 
Select * from tablename [where condition]  [order by field1 [desc|asc],field2 [desc|asc],….fieldn[desc|asc] 
例如: 
Select * from emp order by sal asc; 
以上的排序规则是先满足第一个,然后依次往下满足; 
对于排序后的记录,如果只希望显示一部分而不是全部,这时,就可以用LIMIT关键字来实现, LIMIT关键字的语法如下: 
Select ……[LIMIT offset_start,row_count] 
其中Offset_start表示记录的开始偏移量,row_count表示显示的行数,例如显示按照sal排序后的前2条记录:  
Select * from emp order by sal limit 2; 
显示按照sal排序后的从第2条记录开始的2条记录: 
Select * from emp order by sal limit 1,2; 
(4),聚合: 
Select [field1,field2,…..fieldn] fun_name 
From tablename 
[where   where_condition] 
[group by field1,field2,…fieldn 
[with rollup]] 
[having where_condition] 
其中:fun_name 表示要作的聚合操作,也就是聚合函数 
Group by 表示要进行分类聚合的字段,比如要按照部门来统计,部门就应该写在group by后面。 
With rollup 是可选语法,表明是否对分类聚合后的结果进行再汇总。 
Having 关键字表示对分类后的结果再进行条件的过滤。 
例如:要emp表中统计公司的总人数: 
Select count(1) from emp; 
在此基础上,要统计各个部门的人数: 
Select deptno,count(1) from emp group by deptno; 
再细一些,要统计各部门的人数,又要统计总人数: 
Select deptno,count(1) from emp group by deptno with rollup; 
统计人数大于1的部门: 
Select deptno,count(1) from emp group by deptno  having count(1) >1; 
最后统计公司所有员工的薪水总额、最高和最低薪水: 
Select sum(sal),max(sal),min(sal) from emp; 
(5),表连接: 
当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。 
表连接有内连接和外连接,其主要区别是内连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录。最常用的是内连接。 
例如: 
Select ename ,deptname from emp,dept where emp.deptno=dept.deptno; 
外连接又分为做连接和右连接: 
左连接:包含所有左边表中的记录甚至是右边表中没有和它匹配的记录; 
右连接:包含所有右边表中的记录甚至是左边表中没有和它匹配的记录; 
Select ename,deptname from emp left join dept on emp.deptno=dept.deptno; 
Select ename,deptname from emp right join dept on emp.deptno=dept.deptno; 
(6).记录联合: 
主要用于查询两个表的数据时,将结果合并到一起显示出来,用到union 和union all关键字实现这样的功能,具体的语法如下: 
Select * from t1 
Union|union all 
Select * from t2 
… 
Union|union all 
Select * from tn; 
注意:union和union all 的主要区别是union all把结果集直接合并在一起,而union 是将Union all以后的结果进行一次distinct,去除重复的记录结果。 
例如: 
Select deptno from emp 
Union all 
Select deptno from dept; 
14,DCL语句的使用: 
创建一个用户zzj,具有对emp数据库中所有表的select/inser/delete权限: 
Mysql>grant  select,insert,delete on emp.* to ‘zzj’@’localhost’ identified by ‘123’; 
收回其对于emp数据库中所有表的delete权限: 
Mysql>revoke delete on emp.* from ‘zzj’@’localhost’; 
15,按照层次看帮助: 
Mysql>? Contents 
显示所有可供查询的分类; 
对于练出的分类,可以使用’? 类别名称’的方式针对用户感兴趣的内容做进一步的查看。例如,想看看MySQL中都至此哪些数据类型,可以执行”? data types”命令。 
16,快速查阅帮助: 
在实际应该用中,如果需呀快速查阅某项语法时,可以使用关键字进行快速查询。例如,想知道show命令都能看到些神恶魔东西,可以使用如下命令 
Mysql>? Show 
例如想参看create table 的语法,可以使用以下命令: 
Mysql>? Create table 
17,常用的网络资源: 
http://dev.mysql.com/downloads/ 是mysql官方网站,可以下载到各个版本的MySQL以及相关客户端开发工具等。 
http://dev.mysql.com/doc/ 提供了目前最权威的Mysql数据库及工具的在线手册。 
http://bugs.mysql.com/ 这里可以查看到MySQL以及发布的bug列表,或者向MySQL提交bug报告。 
http://www.mysql.com/news-and-events/newsletter/ 通常会发布各种关于MySQL的最新消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值