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-winx64\mysql-5.7.16-winx64\bin\mysql -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