MySQL学习总结-关系型数据库

MySQL学习总结-关系型数据库

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();

查询

MySQL学习总结-关系型数据库

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 操作;

MySQL学习总结-关系型数据库

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: