一、SQL介绍
SQL是Structured Query Language(结构化查询语言)SQL是数据库语言,通过SQL可以实现与MySql服务器的通信。表是主要的数据库对象,用于存储数据。
-
常用sql命令
查看所有的数据库
show databases;创建/删除数据库
create database 库名;
drop database 库名;使用数据库
use 库名;查看本数据库下有多少表
show tables;查看数据库,表的创建过程
show create database 库名;
show create table 表名; -
SQL支持下列类别的命令
数据定义语言(DDL)
CREATE ALTER DROP创建表
create table 表名(字段名 类型);
eg:
create table stu(id int, name varchar(20), age int(3));删除表
drop table 表名修改表
添加列 alter table stu add(stuAddress varchar(20));
修改列 alter table stu modify name char(30);
删除列 alter table stu drop (name ,stuAddress);DDL主要是用在定义或改变TABLE的结构,一张表对应一个实体(类)
数据操纵语言(DML)
INSERT SELECT DELETE UPDATE
插入指定字段数据
insert into stu(name,age) values(‘dd’,‘23’);
插入所有字段数据
insert into stu values(xxx,xxx,xxx,xxx)update单列
update stu set age=26 where name=‘dd’;
update多列
update stu set age=26,name=gg where id=‘1’;删除id为1的学生记录
delete from stu where id=‘1’;查询所有记录
select * from stu;
查询指定位置
select * from stu where id=‘1’;
select name,age from stu;
去重查询
select distinct * from stu;事务控制语言(TCL)
COMMIT SAVEPOINT ROLLBACK数据控制语言(DCL)
GRANT REVOKE
用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。
二、常见数据类型
-
整数
tinyint smallint mediumint int integer bigint
各占字节数是1、2、3、4、8
最常用的是int -
浮点数、定点数、位类型
float:4
double:8
decimal或dec:更精准
bit -
字符串类型
char 0-255
varchat 0-65535:长度可变 -
日期和时间类型
data
time
datatime
timestamp -
text系列字符串:文章内容的纯文本
tinytext
text
mediumtext
longtext
三、MySQL函数和查询
-
数学函数
ABS(X) 返回x的绝对值
#SELECT ABS(-1)
SIN(X) 求正弦值(x为弧度)
#SELECT SIN(RADIANS(30))
PI() 返回圆周率
#SELECT PI() -
日期时间函数
CURDATE(),CURRENT_DATE()
#返回当前日期
CURTIME(),CURRENT_TIME()
#返回当前时间
NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP()
#返回当前日期和时间
eg:
select now(); -
分组 group by
分组前限定用where,分组后限定用having
对查询结果排序 order by
与或非 and or not -
内链接
select * from 表1 inner join 表2 on 表1.id=表2.id;
外链接
左外链接
select * from 表1 left join 表2 on 表1.id=表2.id;
右外链接
select * from 表1 right join 表2 on 表1.id=表2.id; -
分页查询
#只看前5行数据
select * from 表名 limit 5;
#看6-8行(第五行开始)
select * from 表名 limit 5,3; -
模糊查询
#查询名字中带a的人
select * from 表名 where name like ‘%a%’;
#查询名字中以a开头的人
select * from 表名 where name like ‘a%’;
#查询名字长度为2而且以a结尾的人
select * from 表名 where name like binary ‘_a’;
四、MySQL索引和事物
-
索引分类
非空约束:字段不能为空
主键索引:唯一,一般为自增
唯一索引:字段数据是唯一的
组合索引建表时添加索引
非空约束:create table pers(name varchar(20) not null,age int(5));
主键约束:create table pers(name varchar(20) primary key,age int(5));
主键自增约束:create table pers(id int(5) primary key auto_increment,name varchar(20));建表后添加索引
非空约束:alter table pers modify name varchar(20) not null;
主键约束:alter table pers add constraint primary key(name);
唯一约束:alter table pers add constraint unique(name);
主键自增:alter table pers modify id int(5) auto_increment查看索引
show index from 表名删除索引
alter table 表名 drop index index_name -
事物
就是业务上的一个逻辑单元(例如转账业务),他能保证其中对数据所有的操作要么全部成功,要么全部失败。事务特性
原子性:整体性,不能分开
一致性:状态一致
隔离性:同时存在很多事物,互不影响
持久性:事务提交,数据修改永久生效;如果回滚,相当于没有发生这件事SQL操作
savepoint a; 设置回滚点a
rollback to savepoint a; 回滚到回滚点
rollback; 回滚到初始点
submit; 提交事物