mysql总结

2018-08-27  本文已影响0人  末版车

1.创建数据库开始

CREATE DATABASE 数据库名称 (这样会使用mysql默认的字符集)

2.创建指定字符集的数据库

CREATE DATABASE 数据库名称 CHARSET=utf8/gbk/gb2312

3.修改数据库

ALTER DATABASE 数据库名称 CHARSET=字符集

表的创建

数据库的三大引擎Innodb、MYSIAM、MEMARY

数据库字段:

三大类:

    字符串:char、varchar、longtext、mediumtext

    日期:date、year、time、datetime、timestamp ...

    数值:int、smallint、tinyint、mediumint

约束:

not null:设置制定的列不能为null !=>空字符

default : 给指定的列设置一个默认值,如果插入数据的时候不给

当前列设置值,就会使用默认值,如果设置了值,就会使用设置的值。

primary key:主键,不能为空、唯一

unique:唯一,可以为null

foreign key:外键,外键是摸一个表的主键,不为null,

加强表与表之间的数据lianxi(关系)

属性:

auto_increment 自增:

可以指定步长和起始值

会话级步长:

set session auto_increment_increment = 步长

全局的步长设置:

set global auto_increment_increment = 步长

给一个表指定一个起始的自增的值

ALTER TABLE 表名 auto_increment = 起始值

一个表里面只能有一个自增,并且都是给主键设置的。

创建表:

CREATE TABLE 表名(

    字段名 类型 约束 属性 (自增),

    字段名 类型 not null,

    字段名 类型 nti null default 默认值,

    primary key(列名)/primary key(列名,列名)

    unique key(列名)/unique key(列名、列名)

    constraint FK_ID foreign key(列名) references 主表(primary key)

)engine=数据引擎 default CHARSET=utf8;

修改表

ALTER TABLE 表名 charset= ...

重命名

RENAME TABLE 旧表名 TO 新表名

修改表名

ALTER TABLE 旧表名 RENAME AS 新表名

修改表中的字段

ALTER TABLE 表名 change 字段名 新字段名 类型 约束 属性;

不改变旧字段名的情况下修改(类型、约束等)

ALTER TABLE 表名 change modify 字段名 类型 约束 属性

添加新的列

ALTER TABLE 表名 ADD 字段名 类型 约束 属性

删除某一列

ALTER TABLE 表名 drop 字段名

删除表

DROP table 表名

删除数据库

DROP DATABASE 数据库名

查看当前选择的数据库

select DATABASE()

切换数据库

use 数据库名

增:

全列插入

insert into tablename values()

非完全插入

insert into tablename() values()

多行插入

insert into tablename() values(),()

删:

删除指定数据

DELETE FROM tablename where 条件

删除全部数据

DELETE FROM tablename

改:

修改表中某一列的全部值(不要这么去做)

UPDATE tablename set 列明=值

根据条件修改数据

UPDATE tablename set 列名=值 where 条件

UPDATE tablename set 列名=值 列名=值...where 条件

查:

select * from tablename

select 列,列,列... from tablename

select * from tablename where 列=值

select * from tablename where 列>值

select * from tablename where 列<值

is null:

select * from tablename where 列 is null

or:

select * from tablename where 列=值 or 列!=值

in:

select * from tablename where 列 in (值,值,值...)

and

select * from tablename where 列=值 amd 列=值

not:

select * from tablename where 列 not in(值。值,值...)

select * from tablename where 列 not is null

between and

select * from tablename where 列 between 值 and 值

排序

select * from tablename order by 列

select * from tablename order by 列 desc

多个列排序

select * from tablename order by 列 desc,列

聚合函数

count(*):计算所有行

avg():计算列的平均值

sum():求和,计算列的值的和

max():计算列的最大值

min():计算列的最小值

通配符

%:匹配任意字符,任意次数

_:匹配任意字符,必须有且仅有一次

一般跟LiKE匹配使用

select 列,列 from tablename where 列 like '条件%'

select 列,列 from tablename where 列 like '条件_'

python re模块:

complie

match:从开头匹配,如果开头就不符合直接返回None,如果匹配到

立即返回结果,单次匹配,取值使用group()

search:从头开始匹配,在整个字符串中查询,只要又符合规则的就立即返回

单词匹配,如果没有符合规则的就返回None

findall:在整个串中,返回所有符合规则的结果,是一个列表

sub:替换

split:分割字符串,返回列表

finditer:跟findall功能一致,返回结果有区别,返回的是一个可选的值

r:原始字符串

\:转义符

表的设计:

范式:

1nf:

列不可再分

2nf:

一个表必须要有一个主键(可以由单个列或多个列构成),非主键的列必须完全依赖于主键,而不是部分依赖于主键

3nf:

非主键的列,必须直接依赖主键,不能出现传递关系(非主键的列A,依赖与非主键的列B,非主键的列B依赖于主键)

E-R模型:

E: 实体,一个实体其实就是指一张表

R: 关系,表与表之间一个数据的联系

一对一:

一对多:

多对多:

查询语句的顺序:

SELECT、列,列、FROM、表名、WHERE、条件、GROUP BY、列,列、HAVING、条件、ORDER BY、列 (ASC|DESC)、LIMIT start,count

修改表名:alter table t_book rename to bbb;

添加列:alter table 表名 add column 列名 varchar(30);

删除列:alter table 表名 drop column 列名;

修改列名MySQL: alter table bbb change nnnnn hh int;

修改列名: SQLServer:exec sp_rename't_student.name','nn','column';

修改列名: Oracle:lter table bbb rename column nnnnn to hh int;

修改列属性: alter table t_book modify name varchar(22);

修改表: ALTER TABLE 表名 charset= ...

上一篇下一篇

猜你喜欢

热点阅读