点击上方蓝色文字一键关注
点击上方“python学习专栏”,选择“置顶公众号”
干货、福利第一时间送达!
一.SQL语句介绍
SQL语句是操作关系型数据库的通用语句,主要划分为以下 3 个类别
一、DDL(Data Definition Languages)语句:
数据定义语言,这些语句定义了不同的数据段, 数据库,表,列,索引等数据库对象的定义.常用的语句关键字主要包括 create,drop,alter 等。
二、DML(Data Manipulation Language)语句
数据操纵语句,用于添加,删除,更新和查 询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert,delete,udpate 和 select 等.
三、DCL(Data Control Language)语句
数据控制语句,用于控制不同数据段直接的许可和 访问级别的语句.这些语句定义了数据库,表,字段,用户的访问权限和安全级别.主要的 语句关键字包括 grant,revoke 等.
二.DDL语句
这里的语法统一使用小写,每条SQL语句必须以 分号结尾 ” ; “
1、创建数据库
语法:create database dbname;
例:create database test;
2、查看已有数据库
语法:show databases;
3、选择需要操作的数据库
语法:use dbname;
4、删除数据库
语法:drop database dbname;
例:drop database test; #删除test数据库
xxxx
注意:数据库删除后,下面的所有表数据都会全部删除,所以删除前一定要仔细检查并做好相应备份.
xxxx
重新创建一个school数据库,并选择school,用于后续操作
5、创建数据表
语法:create table tablename(cloumn_name_1 cloumn_type,cloumn_name_2 cloumn_type,cloumn_name_n cloumn_type,);
创建一个学生表,包括姓名、年龄,性别
例:create table student(name varchar(10), age int(2), sex varchar(2));
6、查看表定义
语法:desc tablename;
例:desc student;
7、查看已有数据表
语法:show tables;
8、删除表
语法:drop table tablename;
例:不做演示,不然又得重新建表
9、修改表
9.1 修改表类型
语法:alter table tablename modify column_name new_column_type
将 age 从int(2) 改成 int(3)
例:alter table student modify age int(3);
9.2 增加表字段
语法:alter table tablename add column column_name column_type;
增加班级字段,类型为varchar(5)
例:alter table student add column class varchar(5);
9.3、删除表字段
语法:alter table tablename drop column column_name;
删除班级字段
例:alter table student drop column class;
9.4、修改字段名
语法:alter table student change column column_name new_cloumn_name column_type ;
修改字段 age 为 age1 类型为 int(2)
例:alter table student change column age age1 int(2);
xxxx
注意:change 和 modify 都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便。但是 change 的优点是可以修改列名称,modify 则不能.
xxxx
9.5、修改字段排序
xxxx
前面介绍的的字段增加和修改语法(add/change/modify)中
都有一个可选项 first|after column_name
这个选项可以用来修改字段在表中的位置
默认add增加的新字段是加在表的最后位置
而 change/modify 默认都不会改变字段的位置.
xxxx
重新增加一个class字段,放在name后面
例:alter table student add column class varchar(5) after name;
10、修改表名
语法:alter table tablename rename new_tablename;
将student 表名改为 student1 然后又改回来
例:alter table student rename student1;
xxxx
注意:change/first|after column 这些关键字都属于 MySQL 该标准 SQL 上的扩展,在 其他数据库上不一定适用.
xxxx
三、DML语句
1、插入记录
语法; insert into tablename (column_1, column_2, column_n) values(value1,value2,valuen)
注意,类型需要对应
在表student插入一条记录
例:insert into student (name,calss,age,sex) values('小王','三班',15,'男');
也可以不用指定字段名称,但是 values 后面的顺序应该和字段的排列顺序一致
例:insert into student values('花花','三班',16,'男');
一次性多插入:
例:insert into student values('依依','三班',16,'男'),('憨憨','三班',15,'男');
看看插入的结果:
2、更新记录
语法:update tablename set field1=value1,field2=value2 where condition
更新表tablename 字段设置field1 =values,field2=value 条件是
更新 小王 班级 设置为 四班
例:update student set class="四班" where name="小王";
可以多表同时更新
语法:
update tablename1,tablename2 set tablename1.field1=value1,tablename2.field2=value2 where condition
创建一个年级表(grade),添加 花花的数据和表student一样。
例: 创建表
create table grade (name varchar(10) ,class varchar(5),age int(2),sex varchar(2))
添加数据
例:insert into grade values('花花','三班',16,'男');
更新 student和grate,grate中存在的学生的字段class到四班
例:update student,grade set student.class="四班",grade.class="四班” where name="花花";
3、删除记录
语法:delete from tablename where condition
删除grate的数据
例:delete from grade;
同时可以多表删除,与多表更新类似
注意:不管是单表还是多表,不加 where 条件将会把表的所有记录删除,所以操作时一定要小心.
4、查询数据
语法:select * from tablename where condition;
4.1 查询全表
例:select * from student;
4.2 查询固定字段
例:select name from student;
4.3 条件查询
例:select * from student where age>15;
4.4 查询不重复记录
使用关键字distinct
例:select distinct age from student;
4.5 排序和限制
xxxx
使用order by进行排序
DESC 和 ASC 是排序顺序关键字,DESC 表示按照字段进行降序排列,ASC 则表示升序 排列,如果不写此关键字默认是升序排列.
xxxx
语法:select * from tablename order by field;
使用age字段进行排序
例:select * from student order by age;
降序:
例:select * from student order by desc age;
可进行多字段排
语法:select * from tablename order by field,field2;
对age进行降序,对那么进行默认升序
例:select * from student order by age desc,name;
限制
对于排序后的记录,如果希望只显示一部分,而不是全部,这时,就可以使用 limit 关键字 来实现,limit经常被用作分页操作
语法:select * from student limit offset_start,row_count;
从offset_start开始 ,显示row_count个
排序后从1 开始显示两条数据
例:select * from student order by age desc limit 1,2;
xxxx
注意:limit 属于 MySQL 扩展 SQL92 后的语法,并不是所有数据库的通用语法
xxxx
4.6 聚合
当我们需要使用汇总等操作的使用用到这个操作,这里只提最简单的部分,想进一步了解,大家可以自行百度。
语法:select field function_name from tablename:
xxxx
function_name 表示要做的聚合操作,也就是聚合函数,常用的有 sum(求和),count(*)(总数),max(最大值),min(最小值).
xxxx
统计人数
例:select count(0) from student;
以第一个字段作为汇总
四、DCL语句
DCL 语句主要是 DBA 用来管理系统中的对象权限时所使用
创建python用户 密码 123 对数据库school,具有插入,查询的权限。
例:
grant select,insert on school.* to 'python'@'localhost' identified by '123';
如果执行语句时报错
执行 :flush privileges; 然后再执行即可
退出数据库,重新使用python用户登录
插入、查询
试试更新
没有权限
修改python用户的权限
退出数据库,使用root用户登录,只有root用户有权限修改其他用户权限
移除 python对school的插入权限
重新登录:
插入:
没有权限
xxxx
grant 和 revoke 用于授出和收回了用户 的部分权限
xxxx