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

浙公网安备 33010602011771号