mysql基础学习笔记

开始学习mysql了,记录下自己学习过程的笔记,如果有误还得回来修改

Mysql 配置信息

路径:/usr/local/mysql/bin/mysql

默认端口:3306

Localhost:127.0.0.1

Mysql 数据类型。约束

数据类型 说明。
int,bit(0,1) 整数
decimal 小数
char(固定),varchar(可变) 字符串
date,time,datetime 日期时间
enum(:性别,订单状态) 枚举类型
约束类型 说明
primary key(唯一值:姓名) 主键约束
not null 非空约束
unique 唯一约束
default 默认约束

终端命令

操作数据库

1.查看所有数据库

show databases;

2.创建数据库

create database 数据库名字 charset=utf8;

3.使用数据库

use 数据库名字;

4.删除数据库

drop database 数据库名;

5.查看当前数据库

select database()

操作数据表

1.查看当前库中所有表

Show tables;

2.创建表

-- 新建info表id, name,age

--具体字段:字段名称。数据类型。可选约束。无符号。主键。不为空 自增

 create table info(
   id int unsigned primary key not null auto_increment,
   name char(10) not null,
   age int 
 );
 CREATE table Student(
	SId INT PRIMARY KEY NOT NULL auto_increment,
	Sname varchar(10) NOT NULL,
	Sage datetime,
	Ssex varchar(10)
	);

3.修改表字段

--修改表的字段类型。name 类型 可变字符串varchar;

alter table info modify name varchar(200) not null;

4.删除表

drop table info;

5.查看表结构信息

desc info;

\c用来终止一条命令的输入

Mysql-CRUD操作

1.查询数据

查询表中所有列

select * from 表名字;
select * from student;
查询表中制定列
select 列名1,列名2,... from 表名;
select name,age from student;
查询不重复结果

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。

SELECT DISTINCT 列名称 FROM 表名称
查询列起别名

使用AS关键字起别名,只改变了查询结果中的列名展示,不会更改

AS关键字可以省略

select deptno,dname as depname_test from dept;
select deptno,dname depname_test from dept;
-- 省略ASselect deptno,dname 'depname test' from dept; 
-- 别名如果有空格用引号括起来,引号里可以填写中文

单引号是标准,双引号在oracle中用不了,但mysql可以

列名可以使用数学表达式进行计算
2.增加数据

全列单行插入:值的顺序必须和字段顺序一致

insert into 表名 values(...);

部分列单行插入:值的顺序和想要插入的部分列名顺序一致

insert into 表名(列名1,列名2,...) values(值1,值2,...)

全列多行插入:值的顺序必须和字段顺序一致

insert into 表名 values(...),(...),(...),....;
insert INTO 
	student 
VALUES
	('0' , '赵雷' , '1990-01-01' , '男'),
	('0' , '钱电' , '1990-12-21' , '男'),
	('0' , '孙风' , '1990-12-20' , '男'),
	('0' , '李云' , '1990-12-06' , '男'),
	('0' , '周梅' , '1991-12-01' , '女'),
	('0' , '吴兰' , '1992-01-01' , '女'),
	('0' , '郑竹' , '1989-01-01' , '女'),
	('0' , '张三' , '2017-12-20' , '女'),
	('0' , '李四' , '2017-12-25' , '女'),
	('0' , '李四' , '2012-06-06' , '女');

部分列多行插入:值的顺序和想要插入的部分列名顺序一致

insert into 表名(列名1,列名2,...) values(值1,值2,...),(值1,值2,...),(值1,值2,...),...
3.修改数据
update 表名 set 列1=值1,列2=值2 ... where 条件;
update students set age=18, gender="女", where id = 2;
4.删除数据
delete from 表名 where 条件;
delete from student where id = 2 ;
5.条件where
条件查询
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
SELECT name FROM info WHERE age=77
条件符

等于 = ; 不等于 != 或<>;

大于 > 大于等于 >= ;小于 < 小于等于 <= ;

between ... and .... 在 ... 和 ... 之间 ps:左小右大 且为包含关系

SELECT EMPNO,ENAME,SAL FROM EMP WHERE SAL BETWEEN 2450 AND 3000 ORDER BY SAL; 

is null 为null (is not null 不为null)

SELECT * from EMP WHERE COMM IS null OR COMM=0 -- null是么有值,0是一个数值

and 并且 or 或 ps: and优先级高于or,有括号则优先括号内

in 包含,相当于多个or (not in 不在这个范围中) in 不是一个区间,后面要跟具体的值 not in 相当于取其反

模糊查询 like 支持%或下划线""匹配(%:匹配任意个字符。下划线"":一个下划线之匹配一个字符)

SELECT * FROM EMP WHERE ENAME LIKE '%o%'
SELECT * FROM EMP WHERE ENAME LIKE 'S%'
SELECT * FROM EMP WHERE ENAME LIKE '_l%' -- 找出第二个字母是l的名字
SELECT * FROM EMP WHERE ENAME LIKE '__A%'-- 找出第三个字母是A的名字
SELECT * FROM EMP WHERE ENAME LIKE '%\_%'-- 找出名字中有下划线的名字,用\转译,其他特殊符号同理
关键字顺序 -1
select
	...
from
	...
where
	...
order by
	...
6.AND 和 OR 运算符

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

SELECT * FROM info WHERE age<=77 AND gender="男"
SELECT * FROM info WHERE age<=77 OR gender="男"

我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)

SELECT * FROM info WHERE (age=77 OR age=32) AND gender="男"

Mysql数据备份恢复

备份导出:

mysqldump -u用户名 -p密码 数据库名字 表名 > data.sql

恢复

cd  sql数据文件路径下mysql -u root -p密码use 数据库source data.sql
posted @ 2021-07-04 12:06  FANCYuuu  阅读(58)  评论(2)    收藏  举报