MySQL基础
MySql基础
一个完整的查询语句:
select [字段列表]/* from 表名
[where 搜索条件]
[group by 分组字段 [having 子条件]]
[order by 排序 asc|desc]
[limit 分页参数]
一.什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
SQL ( Structure query language ) 结构化查询语言
SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制)
SQL语句中的快捷键
\G 格式化输出(文本式,竖立显示)
\s 查看服务器端信息
\c 结束命令输入操作
\q 退出当前sql命令行模式
\h 查看帮助
数据库作用:
1) 持久保存数据
2) 方便查询并提取满足条件的数据, 数据访问速度快
3) 处理并发访问
4) 权限管理
常见数据库:
关系型数据库 MySQL ->库->表->数据 MySQL Oracle PostgreSQL SQL Server
非关系型数据库 Redis ->数据 MongoDB
二.在Ubuntu下安装的MySQL
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
通过以下命令进入Mysql: mysql -uroot -p你的密码
①.设置mysql允许远程访问:
编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf:
注释掉bind-address = 127.0.0.1:
②.授权用户
grant all on *.* to root@'%' identified by '123456' with grant option;
grant 权限on 库名.表名 to 用户名@Ip地址 identified by “密码”;
刷新生效,否则就要重启MySQL服务才可以
flush privileges;
③.重启服务
service mysql restarty
MySQL基础知识
常用数据类型:
①.数值类型:int 4字节
②.日期和时间类型:datetime 8字节
③.字符串类型:
char 定长字符串 char(7) 不管实际插入多少字符, 它都会占用7个字符位置(中文一个汉字也是一个位置)
varchar 变长字符串 varchar(7) 如果实际插入4个字符, 那么它只占4个字符位置
text 这种类型用来存放超大文本
enum 枚举类型( 多选一 ) sex enum('w','m','x') 代表sex这个字段, 可以取 'w', 'm', 'x' 中的一个值
表字段约束:
unsigned 无符号
int(4) 显示宽度
zerofill 零填充, 位数不够的时候用前导零填充
not null 不能为空 在操作数据库时如果输入该字段的数据为NULL ,就会报错
default 设置默认值
primary key 主键 不能为空 且唯一
auto_increment 定义列为自增的属性,一般用于主键,数值会自动加1。
unique 唯一
MySQL的运算符:
算术运算符:+ - * / %
比较运算符:= > < >= <= <> !=
数据库特有的比较:in,not in, is null,is not null,like, between and
逻辑运算符:and or not
like: 支持特殊符号%和_ ; 其中 %表示任意数量的任意字符,_表示任意一位字符。
MySQL基础操作
1. 数据库操作
查看创建表的过程:show create table 表名
查看数据库 show databases;
创建数据库 create database 库名 default charset=utf8;
删除数据库 drop database 库名;
打开数据库 use 库名;
2.数据表操作
查看表: show tables;
创建表: create table 表名(字段名1 类型,字段名2 类型)engine=innodb default charset=utf8;
创建表: 如果表不存在,则创建, 如果存在就不执行这条命令
create table if not exists 表名(字段1 类型,字段2 类型);
删除表: drop table 表名;
表结构: desc 表名;
3. 数据操作 增删改查
查询数据:select * from 表名 where 条件
删除数据:delete from 表名 where 条件
更新数据:update 表名 set 字段 = 值,字段=值 where条件
增插数据: insert into 表名 (字段1,字段2,字段3)values(值1,值2,值3)
给表名起别名:
select * from Students [AS] s where s.gender = '女';
给字段名起别名:
select 字段名 [AS] 别名, 字段名 [AS] 别名 from 表名;
注意:表的别名只在执行查询的时候使用,并不在返回结果中显示;而列别名定义之后,将返回给客户端显示,显示的结果字段为字段列的别名。
表结构操作
①添加字段:
alter table 表名 add. 字段名 类型 约束 [after字段名];
②.删除字段:
alter table 表名 drop 字段名;
③.修改字段:
alter table 表名 modify/change 被修改后的字段信息
modify 只能修改字段信息 change 可以修改字段名
alter table 表名 change 旧表名 新表名 类型 约束
alter table 表名 change 表名 表名 类型 约束
④.添加索引:
索引类型:unique(唯一索引)、primary key 、index
alter table 表名 add 索引类型 索引名(字段名);
⑤.删除索引:
alter table 表名 drop index 索引名;
⑥.修改表名:
alter table 表名 rename as 新表名;
⑦.更改自增值:
alter table 表名 auto_increment = 新值;
delete删除数据不会重置自增值,truncate清空数据会重置自增值
简单的数据查询条件
where:给查询配置查询条件(查询结果返回之前的条件)
like:模糊查询,可配合%和_(任意多个任意字符和任意单个字符)
聚合函数:(配合group by使用)
max(): 最大 min(): 最小
count():统计数量 sum():总和 avg(): 平均值
group by:对查询后的数据进行分组(分组依据字段必须出现在select查询字段或者聚合函数中)
having:分组过滤后的条件(使用having必须用group by)
order by:排序 asc 升序(默认升序) desc 降序
limit:1个参数时表示显示的个数
2个参数时,第一个参数表示开始的索引值,第二个表示个数
distinct: 去重查询 select distinct 列名 from 表名
多表联查
where和inner join 只查询两个表相同字段的记录
left join和right join的作用相同
left join:获取左表所有记录,即使右表没有对应匹配的记录
right join:获取右表所有记录,即使左表没有对应匹配的记录
1、where 多表查询:
select * from 表1,表2 where 关联条件
2、inner join on 内联查询:
select * from 表1 inner join 表2 on关联条件
3、left join左联查询:
select * from 左表 left join右表 on 关联条件
数据库的导入和导出
导出(备份):
①.linux下输入mysqldump -uroot -p 库名 > 文件路径.sql
②.mysqldump -uroot -p 库名 表名 > 文件路径.sql
导入(还原):
①.先创建一个数据库
②.linux下输入mysql -u root -p 导入到的库名 < 文件路径
③.mysql -u root -p 库名 < 库名_表名.sql
重置mysql密码
1、修改配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]段后加上:skip-grant-tables后保存退出
2、重启mysqld服务 sudo /etc/init.d/mysqld restart
3、进入mysql后更改密码:use mysql;
update mysql.user set authentication_string=password(“新密码”)where user = “root” and Host = “localhost”;
4、flush privileges;
5、quit;
6、重新修改配置文件,将刚才在Linux中添加的一句注释掉
7、重启服务,用新密码进入mysql

浙公网安备 33010602011771号