mysql数据库

来源:互联网 发布:用c语言编写爱心 编辑:程序博客网 时间:2024/06/10 07:48

数据库的分类

1.关系型数据库
orcale
oracle数据库系统是一个复杂的软件系统,如果不了解内部的结构原理及关系,就不可能设计和编写出高质量的应用软件系统,也不可能管理好一个复杂的应用系统。
MySQL:是一个关系型数据库系统,官方网址点击这里
sql server:
是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用
- 非关系型数据库
redis
Mongodb

数据库的组成

  • 数据库系统
  • 数据库
  • 数据表
  • 数据表字段
  • 数据

SQL的分类

DDL:数据定义语言(create,drop,alter等)
DML:数据操作语言(insert,delete,update等)
DQL:数据查询语言(select)
DCL:数据控制语言
DTL:事务处理

DDL的操作命令

查看数据库系统里面所有的数据库: show databases;
创建数据库: create database(数据库名);
使用数据库: use database(数据库名);
查看数据库里面的所有数据库表:show tables;
创建数据库表:create table 表名(字段1 字段类型1,字段2 字段类型2…);
删除数据库:drop database 数据库名;
删除数据表:drop table 表名;
删除数据表中的数据,但主键不会重置:delete;
删除数据表中的数据,主键会重置:truncate(从第一个开始);
查看创建数据库语句:show create database 数据库名;
查看创建数据表语句:show create table 数据表名;
查看数据表结构:desc 表名;
修改表字段的类型:alter table 表名 modify 字段名 字段类型;
修改表字段名:alter table 表名 change 原字段名 修改后的字段名 字段类型;
添加字段:alter table 表名 add 字段名 类型 after/first;
修改表名:alter table 表名 rename 新的表名;

DML操作命令

查看表里面所有的数据: select * from 表名;
指定字段查询:select 字段1,字段2… from 表名;

while相关条件的查询:select * from 表名 where 查询的条件,从哪里查询;
关系型相关查询: < > <= >= != <> =
逻辑型相关查询 :or and
区间:in() , between and
模糊:like ‘%要写入的字段或者字段的一部分%’;

数据类型

整型 字节
tinyint 1
smallint 2
int 4
bigint 8
浮点型 字节
float 4
double 8
decimal() 精确的
字符
varchar(10) 可变长度
char 定长
text
日期
date 年-月-日
datetime
time
year
timestamp 时间戳 不能单独赋值 默认找current_timestamp
blob 二进制

约束

主键约束 primary key 主键 auto_increment 自动增长 值不能重复,并且不能为null
唯一约束 unique key 保证数据不重复,null可以多个 not null
非空约束: not null
默认约束: default ‘值’
enum枚举: 值相互之前是互斥传值可以写整数 1,2,3,4… 通常使用性别
set集合: 值可以多选也可以写整数 1,2,4,8,16 3代表1+2
外键约束: foreign key(外键名) references 副表名(副表id)
添加约束:alter table 表名 add constraint unique key 约束表(属性)

排序

select * from 表名 order by 字段名 desc(降序)/asc(升序)

偏移

select * from 表名 limit 偏移量,偏移的个数;

关键字

zerofill 使用0去填充
unsigned 无符号
comment 解释说明

存储引擎

MyISAM 不支持事务 表锁 查看数据效率比较快
InnoDB 支持事务 行锁 对于数据的增删改效率很高
show engines; 查看数据库系统支持的存储引擎
show variables like ‘storage_engine%’; 查看当前系统默认的存储引擎
自己配置my.ini

相关函数

获取数据库表中的个数

SELECT COUNT(*) AS COUNT FROM student;
SELECT COUNT(0) FROM student;
SELECT COUNT(sNo) FROM student;

获取最大值

SELECT MAX(gradeId) AS MAX FROM student;

获取最小值

SELECT MIN(gradeId) AS MIN FROM student;

获取平均值

SELECT AVG(sNo) AS AVG FROM student;

获取和

SELECT SUM(sNo) AS SUM FROM student;

字符串连接

SELECT CONCAT(‘m’,’y’,’s’,’q’,’l’);

字符串的替换

SELECT INSERT(‘这是sql server系统’,3,10,’mysql’);

字符串的截取

SELECT SUBSTRING(‘这是mysql数据库’,3,);

字符串转换小写

SELECT LOWER(‘STYLE’);

字符串转换大写

SELECT UPPER(‘handsome’);

获取当前的日期

SELECT CURDATE();

获取当前的时间

SELECT CURTIME();

获取当前的时间和日期

SELECT NOW();

获取当前年的第几周

SELECT WEEK(NOW());

返回哪一年

SELECT YEAR(NOW());

返回当天的第几个小时

SELECT HOUR(NOW());

返回当天的第几分钟

SELECT MINUTE(NOW());

返回两个小时之间相差多少天

SELECT DATEDIFF(NOW(),’1994-11-29’);

向上取整

SELECT CEIL(3.3);

向下取整

SELECT FLOOR(3.9);

随机0-1 不包含1

SELECT RAND();

多表联合查询

内连接

显式链接:通过join on链接 [inner/cross]
SELECT studentName,gradeName FROM student AS s INNER JOIN grade AS g ON s.gradeId=g.gradeId;
隐式链接:通过where条件
SELECT studentName,gradeName FROM student AS s,grade AS g WHERE s.gradeId=g.gradeId;
三表查询:
SELECT studentName,studentResult,subjectName FROM student AS s INNER JOIN result AS r ON s.studentNo=r.studentNo INNER JOIN SUBJECT AS sub ON sub.subjectNo=r.subjectNo;

外连接

左连接:以左表为主表,主表里面的数据都显示,右表为副表 关键字:left join on
SELECT * FROM USER LEFT JOIN goods ON user.gid=goods.gid;
右链接: 以右表为主表,主表里面的数据都显示,左表为副表 关键字:right join onSELECT * FROM USER RIGHT JOIN goods ON user.gid=goods.gid;

联合查询

将左连接和有链接通过关键字 union链接起来
SELECT * FROM USER LEFT JOIN goods ON user.gid=goods.gid
union
SELECT * FROM USER RIGHT JOIN goods ON user.gid=goods.gid;

DCL

创建用户:create user ‘用户名’@’主机名’ identified by ‘密码’;
授权:grant all on 数据名.表名 to ‘用户名’@’主机名’;
取消权限:revoke all on . from ‘用户名’@’主机名’;
删除用户:drop user ‘用户名’@’主机名’;
查看用户的权限
如果for后面的内容不写,默认查看当前用户,写的话查看指定用户的权限
show grants [for ‘用户名’@’主机名’];
说明:
all:所有的权限
*:代表所有的库或表
%:模糊查询

数据库在dos命令中的导入和导出

导出:mysqldump -uroot -p 数据库名 > 文件名.sql
导入:mysql -uroot -p 数据库名 < 文件名.sql
说明:
1.需要在本地磁盘下或者根目录下操作
2.导入之前先创建一个空的数据库

原创粉丝点击