数据库的基本使用(mysql)

MYSQL的使用方法

基本使用

;为语句结束语句

单行注释 :-- 注释了内容 或 #注释内容

多行 : /注释/

Show DATABASes :查询所有数据库名称

DDL 数据定义语言,操作数据库跟表

DML 数据操作语言,对数据进行增删改

DQL 对表中数据进行查询

DCL 对数据库进行权限控制

DDL---操作库

1·查询

Show databases;

2·创建数据库

Create DATABASES 库名;-- 有库就会报错
Create DATABASES if not exists 库名;-- 不会报错没有创建就进行创建

3·删除数据库

 Drop Databases 库名;
 DROP DATABASES if exists 库名;   -- 如果有数据库创建就进行删除
​
 

4· 使用数据库

 Use 库名;

DDL—操作表

1·查询表

Show tables;
​
查询表结构
​
Desc 表名称;

查询表名称

2·创建表

Create table 表名
​
( 字段1 数据类型1,
​
字段2 数据类型2,
​
 字段n 数据类型n,
​
);
​
-- 例:
​
Create table tb_user(
​
Id int,
​
Username varchar(20),
​
Password varchar(32)
​
); 
​
-- 数据类型
​
•                                 
 -- 例 :age int 
​
Score double(总长度,小数点后几位数)               
-- double 就是整数位数加小数点后几位 
​
-- 日期
​
Birthday data;
​
Name char (10)---存储性能高 浪费空间
​
Name varchar(10)--- 性能低节约空间
Create DATABASES if not exists 库名;
​
-- 没有创建就进行创建
​
-- 习题一
  
​
Create databases student;
​
Create table studentInformation(
​
Id int,
​
Name varchar(10),
​
Gender char(1),
​
Birthday date,
​
Grades  double(5,2),
​
e-mail varchar(64),
​
phone varchar(15),
​
state tinyint
​
);

 

数据类型

 

 

-- 例 :age int 
Score double(总长度,小数点后几位数) double 就是整数位数加小数点后-- 几位 
-- 日期
Birthday data;
Name char (10)---存储性能高 浪费空间
Name varchar(10)--- 性能低节约空间
​

3·删除表

 Drop table 表名;
 DROP table if exists 表名;
​
•       -- 如果有数据库创建就进行删除

4·修改表

 (1)修改表名
​
 Alter table 表名 rename to 新的表名;
 (2) 添加一列表
​
Alter table 表名 ADD 列名数据类型;
(3)修改数据类型
​
Alter table 表名 modify 列名 新数据类型;
Alter table studentInformation mondify address char(50);
(4)修改列名和数据类型
​
Alter table 表名 change 列名 新列名 新数据类行;
ALITER TABLE studentInformation CHANGE PHONE PHONES VARCHAR(30);
(5)删除列
​
Alter table 表名 drop 列名;

DML—操作数据

1·添加数据

给指定列表添加数据

​
Insert into 表名 (列名1,列名2….)values(值1,值2…);
​
Insert into stu (id,name) values(1,‘张珊’);-- 这样写给所有列添加属性的话可以无顺序添加 
Insert into stu (id,name) values(1,‘张珊’。。。。。。。。。);

​
-- 给所有列添加属性,列名列表是可以省略的
​
-- 多行添加只需将values 后值多几组数据 括号外加入逗号
​
Insert into stu (id,name) values(1,‘张珊’。。。。。。。。。),(1,‘张珊’。。。。。。。。。),(1,‘张珊’。。。。。。。。。),(1,珊’。。。。。。。。。);

 

2·修改数据

Update 表名 set 列名1=值1,列名2=值2,。。。。[where 条件];
​
Update stu set sex=’女’ where name =’张三‘;
​
Updata stu set Birthday=’1999-12-12’ score=99.99 where name =’张三’
​
-- 注意 :如果语句后边没有加where 条件就会将表中所有数据修改

3·删除数据

删除 
delete from 表名 [where 条件];
​
Delete from STU WHERE NAME=’ZHANSGAN’;
​
-- 注意 :如果语句后边没有加where 条件就会将表中所有数据删除
​
 

DQL—表中数据进行查询

查询数据

Select

字段列表

From

表名列表

Where

条件查询

GrouP by

分组字段

Having

分组后条件

Order by

排序字段

Limit

分页限定

1·基础查询

建表

CREATE TABLE stu(
​
id INT, -- 编号
​
NAME VARCHAR(20), -- 姓名
​
age INT,   -- 年龄
​
sex VARCHAR(5), -- 性别
​
address VARCHAR(100), -- 地址
​
math DOUBLE(5,2), -- 数学成绩
​
english DOUBLE (5,2),-- 英语成绩
​
hire_date DATE -- 入学时间
​
);
​
INSERT into stu(ID ,name,age,sex,address, math, english, hire_date)
​
VALUES
​
(1,'马云',55,'男','杭州',66,78,'1995-09-01'),
​
(2,'马华腾',45,'女','深圳',98,87,'1998-09-01'),
​
(3,'马克斯',55,'男','香港',56,77,'1999-09-02'),
​
(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),
​
(5,'柳青',20,'男','湖南',86,NULL,'1998-09-01'),
​
(6,'刘德华',57,'男','香港',99,99,'1998-09-01'),
​
(7,'张学友',22,'女','香港',99,99,'1998-09-01'),
​
(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');
​
 

查询指定列

Select 列名,列名 from 表名;
​
所有列查询(不建议写)
​
Select * from 表名;

除重

Select distinct 列名 from 表名;

展示是起别名

As

Select 列名as 别名,列名 别名 from 表名;
-- As   -- 不写as 用空格

2·条件查询

Select 字段名 from 表名 where 条件

SELECT * FROM stu WHERE age>20,
​
SELECT * FROM stu WHERE age>=20,
​
-- 并且用and链接
​
SELECT * FROM stu WHERE age>=20 AND age<=30,
​
-- 限制范围查询用 between ‘‘and’‘
​
SELECT * FROM stu WHERE hire_date BETWEEN '1998-09-01' and '1999-09-01',
​
-- 相等
​
SELECT * FROM stu WHERE age=20,
​
-- 不等
​
SELECT * FROM stu WHERE age!=20,
​
SELECT * FROM stu WHERE age<>20,
​
-- 或 用or
​
SELECT * FROM stu WHERE age=18 OR age=20,
​
-- 或者用 列名 in (数据,数据)表示值为什么的时候
​
SELECT * FROM stu WHERE age in (18,20,22,),
​
-- 数据为null时用is或is not
​
SELECT * FROM stu WHERE english is NULL,

3·模糊查询

Where 列名 like ’**’;

利用通配符查询

_:代表单个任意字符

%:代表任意数字符

排序查询

排序方式

Select 字段名称 from 表名 order by 排序字段名 [排序方式1], 字段名[排序方式2]…;

Asc: 升序排列(默认值)

Desc: 降序排列

4·分组查询

聚合函数

Null不参与聚合函数

Count 统计数量 取值1、主键(非空且唯一)

Max 最大值

Min 最小值

Sum 求和

Avg 平均值

将一列数据作为一个整体进行纵计算

 

Select 聚合函数名(列名) from 表;

Select count(id) from stu; -- 统计的类名不能为空。

分组查询

Select 字段泪飙 from表名[where 分组前条件限定 group by 分组字段名 【having 分组后条件过滤】;

分组时之后,查询的字段为聚合函数和分段函数,查询其他字段无任何意义

执行顺序 where >聚合函数>having >

Select *被分组列名*,avg(math)from stu group by 被分组列名;
​
Select sex ,avg(math) from stu group by sex;

查询男同学和女同学各自的数学平均分,及各自人数,需求:分数低于70分的不要参与分组

Select sex ,avg(math) from stu where math >70 group by sex;

查询男同学和女同学各自的数学平均分,及各自人数,需求:分数低于70分的不要参与分组,分组之后人数大于2;

Select sex ,avg(math) from stu where math >70 group by sex having count(*)>2;
​

分页查询

Select 字段列表from 表名 limit 起始索引,查询数目
​
Select * from stu limit 0,3;
​
-- 第一页
​
Select * from stu limit 0,3;
​
-- 第二页
​
Select * from stu limit 3,3;
​
-- 第三页
​
Select * from stu limit 6,3;
​
-- 起始索引 =(当前页码-1)*每页显示条数 

5·数据库约束

非空约束

DROP TABLE IF EXISTS emp;

CREATE TABLE emp(

id int PRIMARY KEY auto_increment,外键非空且自增

ename VARCHAR (50) NOT NULL UNIQUE,非空且唯一

joindate DATE NOT NULL,

salary DOUBLE(7,2) not NULL,

donus DOUBLE(7,2) DEFAULT 0 );非空且有默认值

INSERT INTO emp(id,ename,joindate,salary,bonus)VALUE (1,'张三','1999-11-11',8800,5000);

-- 演示主键

-- 非空且唯一

INSERT INTO emp(id,ename,joindate,salary,donus)VALUES

(null,'张三','1999-11-11',8800,5000);

INSERT INTO emp(id,ename,joindate,salary,donus)VALUES (1,'张三','1999-11-11',8800,5000);

INSERT INTO emp(id,ename,joindate,salary,donus)VALUES (2,'李四','1999-11-11',8800,5000);

-- 非空

INSERT INTO emp(id,ename,joindate,salary,donus)VALUES(3,NULL,'1999-11-11',8800,5000);

-- 唯一约束

INSERT INTO emp(id,ename,joindate,salary,donus)VALUES (3,'李四','1999-11-11',8800,5000);

-- 默认约束

INSERT INTO emp(id,ename,joindate,salary,donus)VALUES (4,'张三','1999-11-11',8800);

-- 自增

INSERT INTO emp(ename,joindate,salary,donus)VALUES ('张就','1999-11-11',8800);

DCL —数据权限控制

1·外键约束

Create table表名(
列名 数据类型
[constraint] [外键名称] freign key (外键列名)references 主表(主表列名)。。。关系名

建表完成

 Alter table  表名 aDD constraint [外键名称] freign key (外键列名) references 主表(主表列名)。。。关系列名 

2·多表查询

内连接

隐式内连接

Select 字段列表 from 表**1,表2 .。。where** 条件;

Select 表名**.字段名FROM** where 条件

给表起别名

Select 别名**.字段名FROM** 别名 where 条件 别名**.字段名=别名2.字段名;**

显示内连接

Select 字段列表 from 表**1 [inner ]join** 表二 on 条件;

查询不同表的不同字段

Select * from emp inner join dept on emp.dep

内连接查∩

外连接

左外链接

Select 字段列表 from 表**1 left [inner ]join** 表二 on 条件;

取右集合所有数据跟交集

右外连接

Select 字段列表 from 表**1 right [inner ]join** 表二 on 条件;

取右集合所有数据跟交集

子查询

单行单列

Select 字段名 from**表** where 字段名 = (子查询**)**

多行单列

Select 字段名 from**表** where 字段名 in**(子查询)**

多行多列

Select 字段名 from**(子查询)** where 条件;

目录

MYSQL的使用方法

基本使用

DDL---操作库

DDL—操作表

DML—操作数据

DQL—表中数据进行查询

DCL —数据权限控制


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值