一、SQL介绍
SQL是我们进行存取数据,删除数据,查询数据以及管理数据库系统的语言,主要有3中类型:
DML(data manipulation language):用来对数据库里的数据进行操作的语言,主要增加数据INSERT,修改数据UPDATE,删除数据DELETE,查看数据SELECT
DDL(data definition language):主要用来定义或改变表(TABLE)的结构,数据类型。创建表CREATE,查看表信息DESC,修改表的结构ALTER,删除表DROP
DCL(Data Control Language):是数据库控制功能。比如设置用户的访问权限
在学习一种新语言的时候,首先要知道语言的一下规范,SQL语言的语言规范如下:
(1) SQL语句不区分大小写,但字符串常量区分大小写。建议命令大写,表名库名小写;
(2) SQL语句允许单行或多行书写,以分号“;”为结尾。关键词不能跨多行或简写。
(3)为了提高语句的可读性,SQL可以 用空格和缩进。
(4)每种语言都有注释,在SQL语句中注释:
单行注释:--
多行注释:/*
建立数据库
*/
(5)SQL语句可以折行操作
二、数据库操作:
1、创建数据库
CREATE DATABASE 数据库名字 [character set xxx][collate xxx]
也可以通过在数据库所在的文件夹中直接创建一个文件夹,这也是创建数据库的方式。但是如果数据库已存在,就会报错
例如:
创建一个使用utf8字符集,并带有校队规则的J1数据库
create database J1 character set utf8 collate utf8
2、查看数据库
show databases; 查看所有数据库
show create database 数据库名字; 查看数据库的创建方式
3、修改数据库
alter database 数据库名字 [character set xxx][collate xxx]
4、删除数据库
drop database 数据库名字 // 但是数据库不存在,将会报错
5、使用数据库
use 数据库名字 //进入数据库之后不能退出,只能进行通过use进行切换
三、数据表的操作
1、建表
create table 表名(
filed1 type,
.....
)
其中:primary key (非空且唯一) :能够唯一区分出当前记录的字段称为主键!
auto_increment:主键字段必须是数字类型。
2、查看表的信息
(1)desc 数据表的名字; 查看表结构
(2)show tables; 查看当前数据库中的所有的表
(3) show create table 表的名字; 查看表的建表语句
3、修改表结构
(1)增加一条记录
(a)insert into 表名字 (field1,field2) values(value1,value2);
(b)insert into 表名字 values(value1,value2);
(c)增加多行数据
insert into 表名字 (field1,field2) values(value1,value2),
(value3,value4);
(2)修改表记录
update 表名 set field1=value1,field2=value2..... [where语句];
update语法可以用新值更新原有表行中的各列,set语句句指示要修改哪些列和要给予哪些值,where句指定应更新哪些行。如没有WHERE子句,则更新所有的行。
(3)删除表操作
(a)delete from 表名[where语句];
若不跟where语句则删除整张表中的数据,delete只能用来删除一行记录,不能只删除一行记录中的某一列值。
delete语句只能删除表中的内容,不能删除表本身,想要删除表,用drop。
(4)查找数据
select [distinct] *| filed1,field2,.... from 表名 ;
(a)dinstinct 用来剔除重复的行,from语句表示从那张表查找,*表示查找所有列。
(b)select 也可以使用表达式,使用as将列名临时改成别的名字,这种操作不会修改表中的原始数据。
(c)select可以使用where语句进行过滤查询,在where语句中可以使用比较运算符。
比较运算符:
大于号>,小于号 <,大于等于 >=,小于等于<=, 不等号<>, between a and b 值在a到b之间, in(a,b,c)值是a或b或c
like(ki%) 表示已ki开头的。
逻辑运算符:
and , or, not
(4)Order by 指定排列的列(表中的列名)
select [distinct] *| filed1,field2,.... from 表名 order by 列名 [ASC];
ASC 升序(默认),DESC降序,ORDER BY语句应位于select语句的末尾
(5)聚合函数
在sql中的聚合函数主要有:
sum(列名):统计在该列的所有行的内容的和。
count(列名):统计行的个数。
AVG(列名):统计在该列的所有行的内容的平均值。
Max,Min:最大值和最小值
注意:在表中若有的地方是空的,将入在表中显示NULL,所以再进行运算的时候需要使用ifnull将所有的null转化为0.
(6)group by 分组查询
gruop by后面跟上可以跟上多个列名进行分组,亦可以跟上having语句对gruop by的结果进行筛选。
where语句有筛选的功能,having语句也有这个功能,但是两种有一些差别:
(a)使用where语句的地方都可以用having进行替换
(b)having语句中可以用聚合函数,where中就不行。
(c)where语句只能用在分组之前的筛选,having可以用在分组之后的筛选;
(7)MySQL执行SQL语句的顺序(直接使用>表示优先级)
from > where > select > group by > having > order by.
原文:https://www.cnblogs.com/xiaoqi521/p/11050085.html