2021-07-20 mysql


1.概述

常用的大型数据库:oracle
小型数据库:mysql sqlserver
开源的
支持php
查询速度快

2. 开启和关闭mysql服务

1)界面化开启关闭 右击我的电脑–》管理–》服务–》mysql
2)cmd命令中开启关闭
开启:net start mysql
关闭:net stop mysql

3. 登录mysql

前提是开启mysql服务才能登录
登录命令:mysql -u root -p 回车 输入密码

4. 查看数据库

show databases;
在这里插入图片描述

5. 创建数据库

create database 数据库名;
在这里插入图片描述

6. 切换数据库

use 数据库名;
在这里插入图片描述

7. 查看数据库中的表

show tables;
在这里插入图片描述

8. 删除数据库

drop database 数据库名;
在这里插入图片描述

9. 创建表

create table 表名(
字段名1 数据类型1,
字段名2 数据类型2,
… ,
字段名n 数据类型n);
在这里插入图片描述
在这里插入图片描述
1)如果想要起名使用特殊的关键词字符,可以使用`引起来
2)不要起名使用中文

10. 删除表

drop table int;
在这里插入图片描述

11.查看表结构

1)show columns from 表名;
在这里插入图片描述
2)show create table 表名;
在这里插入图片描述
3)describe 表名;
在这里插入图片描述

12.安装可视化工具

这里是引用

13.Sql语句的分类

1.DDL(数据定义语言)用来创建删除存储数据用的数据库以及数据库中的表等对象。包含以下几种指 令:

CREATE 创建数据库和表等对象
DROP 删除数据库和表等对象
ALTER 修改数据库和表等对象的结构

2.DML(数据操作语言)用来查询或者变更表中的记录。包含以下以下几种指令:

SELECT 查询表中的数据 INSERT 向表中插入新的数据
UPDATE 变更表中的数据 DELETE 删除表中的数据

3.DCL(数据控制语言)用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对RDBMS的用户是否有权限操作数据库中的对象(数据库表)进行设定。包含以下几种指令:

COMMIT 确认对数据库中的数据进行的变更
ROLLBACK 取消对数据库中的数据进行的变更

14.DDL

创建数据库:create database 数据库名
创建表格:create table 表名(字段);
删除数据库:drop database 数据库名
删除表格对象:drop table 表名 不是删除表中的数据

  1. 修改表格
增删改
alter table 表名 add|drop|modify|change 列...

**
alter table 表名 add 列名 类型

#增加列名
ALTER TABLE USER ADD height DECIMAL(5,2);
ALTER TABLE USER ADD age INT;

**
alter table 表名 drop 列名

#删除列名
ALTER TABLE USER DROP age;

**
-- 修改列的类型
alter table 表名 modify 列名 新的数据类型

#修改列类型
ALTER TABLE USER MODIFY height DECIMAL(5,3);

-- 修改列名和列类型
alter table 表名 change 旧列名 新列名 列类型

#修改列名和列类型
ALTER TABLE USER CHANGE height ht DECIMAL(5,1);

-- 修改表名
alter table 表名 rename to 新表名

#修改表名
ALTER TABLE USER RENAME TO u;
  1. 注释

起解释说明作用的,不参与执行的
. --空格 注释内容
. # 注释内容
. – 添加一个字段
. # 添加一个字段

15.约束

1)主键约束:一行记录的唯一标记 primary key 主键约束 = 唯一约束+非空约束
2)默认约束:设置一个默认值 default
3)唯一约束:该字段的所有字段值都不相同 unique
4)非空约束:该字段的值不能为空 not null
5)外键约束 foreign key

设定约束:
1)在创建表格时设置
create table 表名(
id INT PRIMARY KEY, -- 主键约束 不能为空
NAME CHAR(20) NOT NULL,-- 非空约束
age INT ,
sex CHAR(2) DEFAULT '男', -- 默认约束 可以修改
num INT UNIQUE -- 唯一约束 可以有多个空值
);

CREATE TABLE student(
id INT PRIMARY KEY, -- 主键约束 不能为空
NAME CHAR(20) NOT NULL,-- 非空约束
age INT ,
sex CHAR(2) DEFAULT '男', -- 默认约束 可以修改
num INT UNIQUE -- 唯一约束 可以有多个空值
);

2)追加约束
-- 追加主键
alter table 表名 add constraint 主键名 primary key(主键列名);
alter table 表名 modify 列名 数据类型 primary key

ALTER TABLE student ADD CONSTRAINT pk_stuid PRIMARY KEY(id);
ALTER TABLE student MODIFY id INT PRIMARY KEY;

-- 删除主键
alter table 表名 drop primary key

ALTER TABLE student DROP PRIMARY KEY;
mysql有个特殊的功能,叫主键自增长,oracle没有该功能
关键词: auto_increment
作用:如果不添加主键值,系统会默认使得主键每次设置自动增加一个值
1) 创建表格时设置:
CREATE TABLE student(
id INT PRIMARY KEY auto_increment,
...
);
2) 追加主键自增长:
alter table 表名 modify 列名 数据类型 primary key auto_increment;

ALTER TABLE student MODIFY id INT PRIMARY KEY AUTO_INCREMENT;

16.***DML语言

  1. **增
insert into 表名(1 ,列2 ...) values(1,值2...)
简化:如果表中的所有列都添加数据,并且添加顺序和表中列的顺序一致,才能简化
insert into 表名 values(1,值2...)

#增加数据
INSERT INTO student(id,NAME,age,sex,num) VALUES(NULL,'ywj',18,'女',2);
INSERT INTO student VALUES(NULL,'bjxhh',28,'男',3);
  1. **删
delete from 表名 清空表中所有数据,但是表还在
drop table 表名 表不存在
DELETE FROM student;

表中的列是有顺序的,可以修改表中列的顺序
alter table 表名 modify 列 类型 after|first
-- 设置某列为第一列
alter table 表名 modify 列 类型 first
-- 修改某列在另一列后面
alter table 表名 modify1 类型 after 列名2

ALTER TABLE student MODIFY sex CHAR(10) FIRST;
ALTER TABLE student MODIFY sex CHAR(10) AFTER age;
  1. ***查

select 列1,列2,… from 表名
– 查询学生的姓名和年龄
SELECT NAME,age FROM stu
如果想要全部查询所有列,可以使用*通配符来简化命令
– 查询所有列
SELECT * FROM stu

条件查询

select ... from 表名 where 条件筛选
条件:
比较 > < >= <= =(判断是否相同) 不等于判断:有两个 != <>
空值判断 is null is not null
逻辑判断: 与andornot

eg:
-- 查询学生的姓名和年龄
SELECT stu_id,NAME,age FROM stu
-- 查询所有学生中成年学生
SELECT * FROM stu WHERE age>=18
-- 查询所有男学生
SELECT * FROM stu WHERE sex = '男'
-- 查询所有年龄不为20的学生年龄和姓名信息
SELECT NAME,age FROM stu WHERE age != 20
SELECT NAME,age FROM stu WHERE age <> 20
-- 查询身高是空的学生信息
SELECT * FROM stu WHERE height IS NULL
-- 查询身高不为空的学生信息
SELECT * FROM stu WHERE height IS NOT NULL
-- 查询年龄为成年的男学生信息
SELECT * FROM stu WHERE age>=18 AND sex= '男'
-- id大于4的身高大于160的女生信息
SELECT * FROM stu WHERE stu_id>4 AND height>160 AND sex='女'
-- 查询所有成绩合格的男生信息
SELECT * FROM stu WHERE ma_score>=60 AND ch_score>=60 AND sex='男'
-- 有一门优秀成绩的女生信息
SELECT * FROM stu WHERE (ma_score>=90 OR ch_score>=90) AND sex='女'
-- 查询身高大于160的女生和身高大于175的男生
SELECT * FROM stu WHERE (height>160 AND sex='女') OR (height>175 AND sex='男'
-- 查询1班中所有成绩优秀(没有不合格的,并且有一门是90以上的)的女生信息
SELECT * FROM stu WHERE sex='女'
AND (ma_score>=60 AND ch_score>=60 AND (ma_score>=90 OR ch_score>=90)) AND class
=1
聚合函数

在查询结果的基础上进行计算,计算结果进行显示
count(列名) 计算记录的条数
sum(列名) 计算该列中所有列值的和
max(列名) 最大值
min(列名) 最小值
avg(列名) 平均值

eg:
-- 查詢1班的學生有多少個 null值是不参与运算的
select count(age) from stu where class=1
-- count可以使用通配符*
SELECT COUNT(*) FROM stu WHERE class = 1
-- 求全班女生的个数以及年龄总和
SELECT SUM(age),COUNT(*) FROM stu WHERE sex='女'
-- 求男生中语文成绩最高的成绩
SELECT MAX(ch_score) FROM stu WHERE sex='男'
-- 求语文成绩最高的男生信息 查询是错误的,因为多行查询和单行查询不能一起select
-- 如果想要查询男生信息,需要使用子查询或者级联查询
SELECT MAX(ch_score),NAME,age FROM stu WHERE sex='男' ×
-- 查询1班中女生的最小年龄
SELECT MIN(age),COUNT(*),MAX(age),MAX(ch_score) FROM stu WHERE sex='女' AND class
= 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值