数据库

作者: 山野过客 | 来源:发表于2018-08-21 09:40 被阅读0次

mysql服务相关

sudo service mysql start

sudo service mysql stop

sudo service mysql restart

客户端连接

mysql -u 用户名 -p

mysql -h IP -u 用户名 -p

1.创建数据库开始

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

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

CREATE DATABASE IF NOT EXISTS 数据库名称 CHERSET=utf8/gbk/gb2312 .....

3.修改数据库

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

4.删除数据库

DROP DATABASE 数据库名

5.查看当前选择的数据库

SELECT DATABASE()

6.切换数据库

USE 数据库名

9.查看数据库中的表

show tables;

表的创建

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

数据库字段:

三大类:

字符串:char、varchar、longtext、mediumtext、text

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

数值:int、smallint、tinyint、mediumint

#约束:

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

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

不给当前列设置值,就会使用默值,如果设置了值,就会使用

设置的值。

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

unique:唯一,可以为null

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

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

属性:

auto_increment 自增

可以指定指定步长和起始值

会话级步长:

set session auto_increment_increment = 步长

set session auto_increment_offset=10; 会话级别的起始值

全局的步长设置

set global auto_increment_increment = 步长

set global auto_increment_offset=10;全局级别的起始值

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

ALTER TABLE 表名 auto_increment = 起始值

#一个表里面自能有一个自增,并且都是给主键设置自增.

ERROR 1075 (42000): Incorrect table definition; there

can be only one auto column and it must be defined as a key

CREATE TABLE IF NOT EXISTS 表名(

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

字段名 类型 auto_increment primary key,

字段名 类型 not null unique key,

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

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

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

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

constraint FK_XX foreign key(XX) references 主表(primary key))

)engine=数据库引擎 default charset=字符集(utf8 ....);

#查看表的创建语句

show create table tablename;

show create table tablename \G;

#查看表的结构

DESC tablename;

#修改表

ALTER TABLE 表名 charset=...;

#(重命名)

RENAME TABLE 旧表名 TO 新表名;

#修改表名

ALTER TABLE 旧表名 RENAME AS 新表名;

#修改表中的字段旧字段名

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

#在不改变的情况下修改(类型、约束等)

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

#修改表中内容

UPDATE class SET 要改后的 where 条件;

#删除表中全部内容

DELETE FROM 表名;

TRUNCATE TABLE 表名;

#添加新的列

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

#删除某一列

ALTER TABLE 表名 DROP IF EXISTS 字段名;

#删除表

DROP TABLE 表名;

CURD

增:

#全列插入(注意:我们插入的数据顺序必须要跟列对应)

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;

#去重DISTINCT

select distinct 列 from tablename;

#whereselect * from tablename where 列=值;select * from tablename where 列>值;select * from tablename where 列<值;select * from tablename where 列<=值;select * from tablename where 列>=值;# 不等于select * from tablename where 列<>值;select * from tablename where 列!=值;#is nullselect * from tablename where 列 is null;#orselect * from tablename where 列=值 or 列!=值;#inselect * from tablename where 列 in(值,值,值,值,..);#and(同时满足条件)select * from tablename where 列=值 and 列!=值;#notselect * from tablename where 列 not in(值,值,值,值,..);select * from tablename where 列 not is null;#BETWEEN...AND... 在某一个范围(左右都闭合)select * from tablename where 列 between 值 and 值;#排序 order by#升序(ASC)select * from tablename order by 列 (默认是升序)select * from tablename order by 列 ASC;#降序(DESC)select * from tablename order by 列 DESC;#多个列做排序select * from tablename order by 列 (ASC|DESC),列 (ASC|DESC);#聚合函数COUNT(*)|COUNT(1):计算所有行AVG():计算列的平均值SUM():求和,计算列的值的和MAX():计算列的最大值MIN():计算列的最小值#通配符%:匹配任意字符,任意次数_:匹配任意字符,必须有且仅有一次一般跟LIKE配和使用select 列,列 from tablename where 列 like '条件%'select 列,列 from tablename where 列 like '条件_'正则:. \d \D \s \S \w \W [0-9] [0-56-9] [^0-9] ^[0-9]$ ^ \A \Z * + ? {m,n} {n} {n,} {,m}非贪婪: *? +? ?? {m,n}?| () (|) (?P) (?P=name1) \num

python re模块

complie

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

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

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

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

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

sub:替换

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

finditer:跟findall功能一致,返回结果有区别,返回的是一个可迭代的对象

r:原始字符串

\:转义符

##分组:

group by

#单个去做分组,只能返回分组的名称

#group by 跟聚合函数使用

select count(1),列 from tablename group by 列;

select count(1),列,列 from tablename group by 列,列;

#group_concat()

select count(1),列,group_concat(非分组的某个列) from tablename group by 列;

#with rollup

select count(1),列 from tablename group by 列 with rollup;

#HAVING:过滤分组

HAVING后面跟条件,过滤分组的结果

select count(1),列 from tablename group by 列 HAVING count(1) > 2;

#LIMIT

select * from tablename limit 6;

select * from tablename limit 7,6;

总结:

select 列,...

from tablename

where 条件

group by 分组

having 过滤分组

order by 排序(ASC|DESC)

limit 限制返回条数(设置起始位置和返回条数)

#创建计算字段

使用函数或者运算符去计算出一个结果,把这个结果作为一个列返回

select sum(age)/count(1) as avg_age from tablename

select 函数() as 别名 from tablename

数学函数

字符串函数

日期函数

条件判断函数(

    IF(条件,r1,r2)、

    IFNULL(r1,r2)、

    case when 条件 then 结果1 else 结果2 end

    )

加密函数 (PASSWORD()、MD5())

表的设计:

范式:

1nf:列不可再分

2nf:一个表必须要有一个主键(可以由单个列或多个列构成),

非主键的列必须完全依赖于主键,而不是部分依赖于主键

3nf:非主键的列,必须直接依赖主键,不能出现传递关系

(非主键的列A,依赖与非主键的列B,非主键的列B依赖于主键)

E-R模型:

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

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

一对一:

一对多:

多对多:

相关文章

  • MySQL数据库day01

    系统数据库 ​​​ 创建数据库 ​​​ ​​​ ​​​ ​​​ 查看所有数据库 使用数据库 修改数据库 删除数据库...

  • 数据库操作

    创建数据库: 选择数据库: 查看数据库: 修改数据库: 删除数据库:

  • Ubuntu操作mysql数据库命令

    一、连接数据库 连接本地数据库 退出数据库 二、操作数据库 创建数据库 显示数据库 删除数据库 连接数据库 查看状...

  • 4-14

    创建数据库 createdatabase数据库名称; 删除数据库 dropdatabase数据库名称; 查看数据库...

  • [后端开发] Mysql学习笔记

    1.0 数据库 创建数据库 查看所有数据库 删除数据库 切换数据库名 查看正在使用的数据库 2.0 数据库表 创...

  • 2020最新最全数据库系统安全

    数据库标识与鉴别 数据库访问控制 数据库安全审计 数据库备份与恢复 数据库加密 资源限制 数据库安全加固 数据库安...

  • 2020-01-05 sql基本概念

    数据库用来储存数据。 数据库的种类大致有:层次数据库、关系数据库、面向对象数据库、XML数据库、键值数据库。 关系...

  • Mysql数据库基本操作

    连接数据库 退出数据库 查看数据库版本 显示数据库时间 查看当前使用的数据库 查看所有数据库 数据库备份 导入数据...

  • mysql命令行操作

    准备 登陆 数据库操作 查看现有数据库 创建数据库 删除数据库 查看数据库 使用数据库 查看当前数据库 表操作 新...

  • 1.7.1 MySQL数据库学习

    1. 数据库命令行学习 进入数据库 创建数据库 查看数据库列表 删除数据库 使用数据库 查看当前数据库 2. 表 ...

网友评论

      本文标题:数据库

      本文链接:https://www.haomeiwen.com/subject/qdldiftx.html