MYSQL用户授权以及SQL语句

用户授权
用户管理特殊命令:
创建用户
create user '用户名'@'IP地址' identified by '密码';
删除用户
drop user '用户名'@'IP地址';
修改用户
rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
修改密码
set password for '用户名'@'IP地址' = Password('新密码')

c:mysql-5.7.16-winx64mysql-5.7.16-winx64inmysql -u

权限:
默认,什么都没有

grant 权限 on 数据库.表 to '用户'@'IP地址' -- 授权

select,查

数据库.表
test.tb1
test.*
*.*

'用户'@'IP地址'
xiaohua@localhost

SQL语句

数据库级别
SHOW DATABASES;

CREATE DATABASE 数据库名称;
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

USE 数据库名称;

drop database 数据库名称;

表级表
show tables;
desc tb1;

*** create table tb1(nid int, name varchar(10));
# 事务,原子操作,回滚

a. 默认值
b. 是否可以为空
c. 自增列(一张表只能有一个,数字,必须是索引-主键)
d. 主键索引:

一张表只能有一个主键,唯一不能重复,不能为null,- 一般情况下,自增列设置主键
1,2,3,4,5,6
唯一索引:
可以为null,一张表可以有多个唯一列
1,2,3,4,5,6,null

-- 约束
-- 索引,加速查找

create table xxx(
nid.... primary key,
....
)

create table student(
name varchar(10) not null,
num int not null,
age int,
gender int,
primary key (name,num)
)
约束:
name num age
a 88 9
a 99 9
a 88 0

# 主键:
不能为null,
不能重复,
一张表只有一个主键(可以多列组成主键)
# 一般用法:
nid int auto_increment primary key,

# 请在本地创建表:
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
use 数据库名称;

create table tb5(
nid int not null auto_increment primary key,
name varchar(16),
age int default 19
)engine=innodb default charset=utf8;

e. 外键foreign key,一对多

两张表建立约束

-- 约束
-- foreign key,一对多



f. 数据类型:数值、时间和字符串
数值:
二进制:
bit 二进制
整数:
tinyint
smallint
int
bigint
- 范围不一样

小数:
decimal --精确的

-- 985412154521321.857541245421245845
FLOAT -- 98541215458798465465749465465465421321.857541245420000000
-- 985412154000000000000000000000000000000000000000000000000
DOUBLE -- 9854121544587984654657494654654654000000000000000000000000

字符串:
# 定长
char
create table tb13(n char(7),b int, c int)
insert ssss
# 查找速度快,浪费空间


# 变长
varchar
create table tb13(n varchar(7),b int, c int)
insert ssss
insert sssss
insert sssss5
# 查获找速度慢,节省空间
text
mediumtext
longtext
二进制数据:
TinyBlob、Blob、MediumBlob、LongBlob
# 上传文件
# Blob,强制二进制方式
# varchar(65), "D:av.avi" 将上传的文件保存在硬盘, D:av.avi ;

时间:
DATE
YYYY-MM-DD(1000-01-01/9999-12-31)
# 1996-12-12 18:45

TIME
HH:MM:SS('-838:59:59'/'838:59:59')

YEAR
YYYY(1901/2155)

DATETIME

YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)

TIMESTAMP

YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)

enum
单选

集合
多选

create table tb13(num decimal(6,2)) #8888.18

drop table tb1; # 直接表删除

delete from tb1; # 清空表内容
truncate table tb1; # 清空表内容,速度快,自增回到远点

select * from tbl;

数据行级别 *****

select * from tbl;



# 增
insert into tb1(name,age) values('alex', 18);
insert into tb1(name,age) values('alex', 18),('eric', 19),('eric', 19);
create

# 删

# 改

# 查

# 其他

连表操作:
# 连表
select * form a,b where a.x = b.o

# join, select
a. left join
select * from a LEFT OUTER JOIN b ON a.x = b.o

b. inner join ,永远不会出现Null
select * from a inner JOIN b ON a.x = b.o

原文地址:https://www.cnblogs.com/gerenboke/p/11761293.html