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

 
 

 

 
posted @ 2018-12-06 10:16  心做し·  阅读(181)  评论(0)    收藏  举报