第一章:SQL基础
一、入门1、分类 1) DDL:数据定义语言:定义不同的数据段,数据库,表,列,索引等数据库对象。
2)DML:数据操作语句:用于添加,删除,更新和查询数据库记录并检查数据完整性。常用的语句有:insert,delete,update,select等。
3)DCL:数据控制语句:用于控制不同数据段直接的许可和访问级别的语句。定义了数据库,表,字段,用户的访问权限和安全级别,主要的语句关键字包括grant,revoke等。
2、创建数据库后的几个额外数据库 1) information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息,列信息,权限信息,字符集信息,分区信息等。
2) cluster:存储了系统的集群信息
3) mysql:存储了系统的用户权限信息。
4) test:系统自动创建的测试数据库,任何用户都可以使用。
3、DDL的操作方法 1)创建数据库
mysql -uroot -p
输入密码 回车
create database 库名
2)删除数据库
drop database 库名
3) 创建表
create table 表名()
4)删除表
drop table 表名
5) 修改表
a.修改表类型:alter table 表名 modify ....
b.添加表字段 :alter table 表名 add ...
例如:新加字段birth,加载ename后面。
alter table emp add birth date after ename;
c.删除表字段: alter table 表名 drop...
例如:修改字段aage,将它放在最前面。
alter table emp modify age int(3) first
d.字段改名: alter table change ...
注意:
change和modify都可以修改表的定义,不同的是change后面需要写两次列名,不方便,但是change的优点是可以修改列名称。modify则不能。
6)更改表名
alter table 表名 【To】 新表名
例如:将表名emp改为emp1
alter table emp rename mep1
4、DML语句 操作是对数据库中表记录的操作,主要包括记录的插入,更新,删除和查询。
1)插入记录
eg:插入一条数据
insert into emp(ename,hiredate,sal) values('zz','20001-02-29','2000');
也可以不用指定字段。但是values后面的顺讯必须和字段的排列顺序一致。
insert into emp values('zz,'2001-02-29,'2000');
eg:一次性插入多条数据
insert into dept values(5,'dept5'),(6,'dept6);
2) 更新记录
语法:
update 表名 set 字段='值',字段='值'
update emp set sal=4000,ename='yy';
3) 删除记录
delete from 表名 where 字段='值'
4) 查询记录
select *,count(*)等聚合函数 from 表名 where 条件 order by 字段 【desc/asc】 group by 字段 having count(1) > 1
5) 表连接(分为左连接和右连接)
eg:
select ename,depname from emp 【left/right】 join dept on emp.deptno= dept.detno;
6)子查询
eg:
select * from emp where deptno in (select deptno from dept);
注意:
如果子查询记录唯一,那么可以用"="代替in
7)记录联合
将两个表数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,这个时候,就需要用union和union all 关键字来实现这样的功能
eg:
select deptno from emp union select deptno from dept//此时将两个表中的deptno一块显示出来。
5、DCL语句 主要是DBA用来管理系统中的对象权限时使用。
eg:
创建数据库z1,具有对sakila数据库中所有表的select/insert权限
grant select,insert on sakila.* to 'z1'@'localhost'或者% identified by '124';
如果:
此时将z1的
权限变更,收回insert,只能对数据进行select操作
eg:
revoke insert on sakila.* from 'z1'@'localhost';
二、帮助文档的使用 1、使用"? contents" 命令来显示所有可供查询的分类
对于列出的分类,可以使用"? 类别分类"的方式针对用户感兴趣的内容做进一步查看。
例如:
想看看mysql中都支持哪些数据类型,可以执行"? types"命令
列出了此版本支持的所有数据类型,如果想知道int类型的具体介绍,也可以利用上面的方法做进一步查看。
2、快速查询文档
show命令
如果想查看create table语法,可以用命令:
? create table