首页 > 其他 > 详细

Myql

时间:2019-07-17 16:50:18      阅读:114      评论:0      收藏:0      [点我收藏+]

一、数据库分类:

网状数据库

层次型(树状)数据库
关系型数据库(RDBMS)
Relational database manage system
MySQL SQL server oracle


非关系型数据库(NoSQL)

MongoDB

使用shell登录mysql
h – host 主机
P – port 端口
u -user 用户
p - password 密码
mysql.exe -h127.0.0.1 -P3306 -uroot -p
简写形式: mysql -uroot

数据完整结构

Server -> Database -> Table ->Row(行)->Column(列)

二、数据库命令

(1) 查看当前数据库服务器中所有的数据库

show databases;

(2) 使用数据库

use 数据库名称;

(3) 查看当前数据库中所有的数据表

show tables;

(4) 查看数据表中有多少列(表头)

desc 表的名称;

-----------------------脚本中常用的------------------------

(5) 删除数据库

drop database if exists 数据库名称;

(6) 创建数据库

create database 数据库名称;

(7) 创建数据表

create table 表名称 (

eid int,

name varchar(8),

….列名称

);

(8) 插入数据

insert into 表名称 values(列数据1, 列数据2…);

(9) 查询数据

select * from 表名称;

1. mysql命令执行方式
(1) 命令行 – 写一行,执行一行(通过shell)。
(2) 脚本形式 – 把所有要执行的命令写入到一个文件中,然后执行整个文件。
① 创建 .sql文件;
② 打开shell终端
mysql -uroot < 拖拽sql文件到这位置
注释:
单行注释 # 注释的内容
多行注释 /* 注释的内容 */
需求:保存员工的信息(编号eid、姓名name、性别sex、电话 phone)
创建数据库
创建数据表
往数据表中插入数据
--1

1. Sql语句
SQL(structured query language),结构化查询语言,用于操作数据库的语言,绝大多数的关系型数据都支持。

三、列约束

主键约束 只能使用在整型数据,从小到大排序,不能为空NULL,不能重复; PRIMARY KEY

非空约束: 列不能为空,可以插入重复的数据 NOT NULL

唯一约束: UNIQUE 不能插入重复的数据,可出现重复NULL

默认约束: DEFAULT

1.外键约束

当前表的中值,要在另一个表中存在; 但是允许使用NULL

foreign key(列名称) references 表名称(列名称)

2.检查约束

student( age tinyint check(age >18 and age>24) )

mysql不支持检查约束。

3.项目中如何存储日期时间数据

2018-06-05 2018/06/05 05/06/2018

性别 男/女 F/M BOY/GIRL

date

BOOL 1/0

internationalzation i18n

计算机元年 1970-1-1,通常记录一个时间,用某个时间与计算机元年之间的毫秒差

1s = 1000ms 1m = 60s 1h=60m 1d=24h

1y = 2460601000365

1000 1970-1-1 0:0:1

1000*60 1970-1-1 0:1:0

10006060 1970-1-1 1:0:0

10006060*24 1970-1-2 0:0:0

开发中存储时间使用 BIGINT

存储性别使用 BOOL

四、MySQL中使用自增列

AUTO_INCREMENT 自动增长,如果声明一个列为自增列,无需手动赋值,只需要指定为NULL,就会自动在当前数据中最大的值的基础上 +1 插入。

注意:用于整型 PRIMARY KEY 的列,允许手动赋值。

五、查询:简单查询和复杂查询

1.简单查询 —— 只查询特定的列

select eid,ename,salary from emp;

2.简单查询 —— 查询所有的列

select * from emp;

3.简单查询 —— 只显示不同的记录/合并相同的记录

示例:查询员工都在哪些部门;

SELECT DISTINCT(deptId) FROM emp;

4.简单查询 —— 条件查询

示例:查询出编号为5的员工所有信息

SELECT * FROM emp WHERE eid=5;

 

复杂查询

1.复杂查询 —— 聚合/分组查询

聚合函数:

count( ) 计算数量

sum( ) 计算总量

max() 计算最大

min() 计算最小

avg() 计算平均

GROUP BY 分组查询

示例:查询出所有员工的总数量

SELECT COUNT(*) FROM emp; #15

SELECT COUNT(eid) FROM emp; #15

SELECT COUNT(deptId) FROM emp; #14

2.复杂查询 —— 跨表/多表查询

  示例:查询出每个员工的姓名及其所在部门的名称

       SELECT ename,dname FROM emp,dept; #错误

       SELECT ename,dname FROM emp,dept WHERE deptId=did;

       (1)内连接查询 - 等同于SQL-92多表查询

       SELECT ename,dname FROM emp  INNER JOIN dept ON deptId=did;

      (2)左外连接查询  

       SELECT ename,dname FROM emp LEFT OUTER JOIN dept ON deptId=did;

     左侧表中所有的记录,即使右侧没有对应记录也会显示出来。

      (3)右外连接查询 

      SELECT ename,dname FROM emp RIGHT JOIN dept ON deptId=did;      

     右侧表中所有的记录,即使左侧没有对应记录也会显示出来。

     注意:在左(右)外连接中,OUTER关键字可以省略。

      (4)全连接查询 - FULL JOIN 显示左侧和右侧所有的记录——MySQL不支持

 

  (5)全连接解决方案

  UNION(合同相同项)/UNION ALL(不合并相同项)

  (SELECT ename FROM emp_cn)

  UNION

 (SELECT ename FROM emp_us)

 

  (SELECT ename FROM emp_cn)

  UNION ALL

  (SELECT ename FROM emp_us)

 

  合并左外连接 和 右外连接

  (SELECT ename,dname FROM emp LEFT OUTER JOIN dept ON deptId=did)

  UNION

  (SELECT ename,dname FROM emp RIGHT OUTER JOIN dept ON deptId=did);

Myql

原文:https://www.cnblogs.com/jingjing-2019/p/11201397.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!