- 1、在一个数据库中,不同的项目由不同的用户访问,每一个用户拥有自身创建的数据库对象,因此用户的概念在数据库中非常重要,可以用 create user命令来创建用户
用户管理特殊命令:
创建用户
create user '用户名'@'IP地址' identified by '密码';
删除用户
drop user '用户名'@'IP地址';
修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址'
修改密码
set password for '用户名'@'IP地址' = Password('新密码')
权限:
show grant for '用户'@'IP地址'
grant 权限 on 数据库.表 to '用户'@'IP地址'
revoke 权限 on 数据库.表 from '用户'@'IP地址'
数据库级别:
show databases; #查看数据库
create database 数据库名; #创建数据库
use 数据库名; #进入数据库
drop database 数据库名; #删除数据库
表级别:
show tables; #查看数据库表
desc tb1; #查看表结构
create table 表名(列1 数据类型,列2 数据类型。。。); #创建表
drop table 表名; #删除表
delete from 表名; #清空表内容
truncata table 表名; #清空表内容,不可以回滚
- 3、创建表
- 语法格式
- create table 表名(
列名1 类型 约束,
列名2 类型 约束,
....
)ENGINE=InnoDB DEFAULT CHARSET=utf8
- 数据类型
数值:
bit 二进制
tinyint
smallint
int
bigint ---范围不一样
decimal ---精确的
FLOAT
DOUBLE ---不靠谱的,浮点型
字符串:
char --定长 (最多255位) #查找速度快,浪费空间
varchar ---变长(最多255位) #查找速度相对慢,节省空间
text
mediumtext
longtext
二进制数据:
TinyBlob、BLob、MediumBlob、LongBlob
时间:
DATE:
YYYY-MM-DD(1000-01-01/9999-12-31)
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)
TIMESTAMP:
YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
枚举emun:单选
create table shirts(
name varchar(40),
size enum('S','M','L','XL')
);
insert into shirts(name,size) values('xwl','L');
集合:多选
create table myset(col set('a','b','c','d'));
insert into myset(col) values('a,b'),('a,d'),('a,b,d')
- 约束
- SQL 约束用于限制加入表的数据的类型
- 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)
- 主键、外键约束的创建
外键:两张表之间约束,userinfo表中的part_id字段必须属于part表中的nid字段
create table userinfo(
nid int not null auto_icrement primary key,
age int,
name varchar(20),
part_id int
#constraint fk_cc foreign key(part_id) references part(nid) 新增表的时候创建外键
);
create table part(
nid int,
deparment varchar(50)
);
alter table userinfo add constraint fk_cc foreign key userinfo(part_id) references part(nid);
- 3、表级别SQL命令
- 新增列
- 一列:alter table 表名 add 列名 列类型 列约束;
- 多列:alter table 表名 add(列名 列类型 列约束,列名2 列类型 列约束);
- 删除列:alter table 表名 drop column 列名
- 新增约束:ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束内容;
- 删除约束:alter table 表名 drop constraint 约束名;
- 修改表名
- alter table 表名 modify column 列名 类型; 修改类型
- alter table 表名 change 原列名 新列名 类型; 修改列名、类型
- 修改列