MySQL学习总结-关系型数据库
mysql
概念
SQL (Structured Query Language)结构话查询语言。
-
作用:数据库的增加、更新、删除、查询。
例如:select * from 表名、delete from 表名 where 列名称=值等。
MySQL是关系型数据库,类似的数据库还有Oracle、SQL Server、DB2。
-
最大的优势:开源。
windows下运行
-
cmd连接
bin目录运行cmd;
连接数据库 mysql -uroot -proot (p后面是安装mysql时设置的mysql的密码);
-
客户端连接
Navicat for MySQL、SQLyog或者Oracle SQL Developer软件。
配置
my-default.ini中修改配置文件 :
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
数据库(DB)操作
-
操作命令
查看数据库:show databases;
创建数据库:create database 库名;
删除数据库:drop database 库名;
使用数据库: use database 库名;
数据类型
文本类
char(size)保存固定长度的字符串。最多255个字符;
varchar(size)保存可变长度的字符串。最多255个字符;注:如果值的长度大于255,则被转换为text类型;
tinytext最大长度255;
text最大长度65535;
mediumtext 最大长度16777215;
longtext最大长度4294967295;
enum(x,y,z,etc)允许输入可能值得列表,最大65535个值;
set与enum类似,最多包含64个列表项
数字类
tinyint(size) 1(1byte=8bit);
smallint(size)2;
mediumint(size)3;
int(size)4;
bigint(size)8;
float(size,d);
double(size,d);
decimal(size,d);
日期类型
date()YYYY-MM-DD;
datetime()YYYY-MM-DD HH:MM:SS;
timestamp()使用Unix纪年(YYYY-MM-DD HH:MM:SS UTC);
time()HH:MM:SS;
year()2位或4位格式的年;
表操作
create table 表名();
drop table 表名;
show tables;
describe 表名;
列操作
alter table 表名 add 字段名 字段类型;
alter table 表名 drop 字段名;
alter table 表名 change 字段a 字段b 字段类型;
alter table 表名 rename 新表名;
约束
非空约束: not null;
唯一约束: unique key;
默认约束:default;
主键约束:primarky key auto_increment 主键自增;
外键约束:foreign key;
行操作
insert into 表名 values();
insert into 表名()values();
查询
sql
select * from 表名 where 字段 运算符 值 (between(之间) like(模糊查询) and(和) or(或者));
in
select * from 表名 where 列名 in (value1,value2...);
select * from 表名 where 列名 in (select 列名 from 表名);
between
select * from 表名 where 列名 between 值1 and 值2;
select * from 表名 where 列名 not between 值1 and 值2;
like
select * from 表名 where 列名 [not] like %abc%;%是一个通配符,代表任意字符;
null的判断 -is/is not
select * from 表名 where 字段 is null;
select * from 表名 where 字段 is not null;
order by (排序) asc/desc不写默认asc
单列排序
select * from 表名 [where 子句] order by 字段 asc/desc;
多列排序
select * from 表名 [where 子句] order by 字段1 asc/desc,字段2 asc/desc;
limit(分页查询)
select * from 表名 [where 子句] [order by 子句] limit m,n;从m 开始查,查n条记录;
子查询,主要用于数据迁移
insert into 表名1 select 列1,列2 from 表名2;
insert into 表名 (列1,列2) select 列3,列4 from 表名2;
更新数据
update 表名 set 列名 = xxx [where 子句];
update 表名 set 列名1=xxx,列名2 = xxx [where 子句];
数据库查询函数(from 前面设置)
单行函数:upper()、lower()、lnitcap()(mysql不可用,lnitcap是oracle的)、length()、trim()、substr();
聚合函数:count(*)(结果集);
统计函数:max()、min()、sum()、avg();
事务处理
set autocommit=0;//将事务处理设置为手动
更新操作;//将数据存储到缓冲区
Rollback;//事务回滚
更新操作;//将数据存到缓冲区
commit;//事务提交(将缓冲区的数据删除)
视图
create view or replace unreal_table as select ...
视图可以查询和修改(只是单表的情况下可以修改数据,一般是不会做视图的修改操作的,如果修改的话都是关联表的数据的修改的),不支持delete、insert into 操作;
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-