用戶授權
用戶管理特殊命令:
創建用戶
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