mysql增删改查操作

数据库

1.库操作

查看数据库:

SHOW DATABASES;
SHOW CREATE DATABASE db1;
SELECT DATABASE();

使用数据库

USE db1;

创建数据库

CREATE DATABASE db1 CHARSET utf8;

修改数据库

ALTER DATABASE db1 CHARSET utf8;

删除数据库

DROP DATABASE db1;

2.表操作

创建表

CREATE TABLE t1(
    id INT,
    name CHAR(10),
);

删除表

DROP TABLE t1;

查询表

DESC t1;
SHOW CREATE TABLE t1;   查看表的结构,加\G

复制表

CREATE TABLE t2 SELECT * FROM t1;  复制整个表
CREATE TABLE t2 SELECT * FROM t1 where id = 5; 复制指定内容到新表,若没有符合条件的内容,则复制一个相同表结构的空表

重命名表

ALTER TABLE t1 RENAME t123;

添加表的字段

ALTER TABLE t1 ADD sex ENUM("male","female"),ADD age INT NOT NULL;
ALTER TABLE t1 ADD sex ENUM("male","female") FIRST;
ALTER TABLE t1 ADD sex ENUM("male","female") AFTER name;

修改表的字段

ALTER TABLE t1 MODIFY name CHAR(15);
ALTER TABLE t1 CHANGE name username CHAR(12);

删除表的字段

ALTER TABLE t1 DROP name;

3.字段

3.1 字段类型

数字

整数:int,tinyint,bigint
INT(4) 字符总宽度4个字节(数字4只表示数据显示格式)

浮点型:double,float,decimal
DECIMAL(8,2) 总位数8位,小数位2位

限定:unsigned无符号 zerofill少于指定宽度时,0填充

字符串

固定长度:CHAR CHAR(12)
可变长度:VARCHAR VARCHAR(18)

CHAR:定长,每条记录该字段长度相同,CHAR(12)代表存储小于12字节的字符会自动补空格到12字节,保存下来(但是不会显示后面空格)
VARCHAR:不定长,开头有1-2字节前缀用来记录字符串长度(一般是1字节),存储长度为字符长度+1
CHAR处理速度更快,VARCHAR存储更灵活,默认将CHAR字符串放在前面,VARCHAR字符串放在后面

TEXT:TINYTEXT TEXT(64KB) MEDIUMTEXT(16MB) LONGTEXT(4GB)
用来存储很长的字符串

BINARY:BINARY VARBINARY
存储二进制字符串

BLOB:TINYBLOB BLOB MEDIUMBLOB LONGBLOB
存储很长的二进制字符串(一般存储声音或图像)

处理速度比较:CHAR>VARCHAR>TEXT

时间

datatime 使用的多

  • YEAR: YYYY
  • DATE: YYYY-MM-DD
  • TIME: HH:MM:SS
  • DATETIME: YYYY-MM-DD HH:MM:SS
  • DATESTAMP: YYYYMMDD HH:MM:SS
DATETIME与TIMESTAMP区别
  1. 表示的范围不同
    DATETIME:1001-9999
    TIMESTAMP:1970-2038
  2. DATETIME与时区无关,TIMESTAMP与时区有关
  3. DATETIME存储8字节,TIMESTAMP存储4字节
  4. DATETIME默认为null,TIMESTAMP默认为当前时间
    注意:每次更新记录时,不指定TIMESTAMP数值时,TIMESTAMP数值也会自动更新为当前时间

枚举

ENUM(MALE,FEMALE) 从中选择一个

集合

SET(sing,jump,rap,backetball) 从中选择多个

约束条件

约束条件 作用
CONSTRAINT 约束 (前缀可加constraint,也可以不加)
PRIMARY KEYPRIMARY 主键 CONSTRAINT pk_id PRIMARY KEY(ID);设置id字段为主键,命名主键为pk_id
FOREIGN KEYFOREIGN 外键
UNIQUE KEYUNIQUE 值唯一CONSTRAINT index_age UNIQUE(age);‘ ;’UNIQUE(PORT,ID)联合唯一
NOT NULL 不为空 ;NULL 为空
DEFAULT 默认值
AUTO_INCREMENT 自增长
UNSIGNED 非负数
ZEROFILL 0填充(INT(4) 设置值为432,显示为0432)

注意:NOT NULL UNIQUE等价于 PRIMARY

3.2 字段操作

插入数据

INSERT INTO userinfo VALUES(1,"liwei",23);
INSERT INTO userinfo(id,name,age) VALUES(2,"xiaomi",22);
INSERT INTO userinfo(name,age) VALUES ("xiaofang",18),("lihua",33)  插入多条数据
INSERT INTO userinfo(id,name,age) 
       SELECT id,name,age FROM client WHERE sex="female";  从别的表中获取数据

更新数据

UPDATE userinfo SET age=22,sex="male" WHERE id=3;

删除数据

DELETE FROM userinfo WHERE id=3;

查询字段

单表查询
多表查询

4.权限操作

datebase数据库->table表->column列

授权表

可以查看用户相应权限的表
user:授权该用户下所有数据库,包括其中的表,字段权限
db:授权一个数据库下所有表,包括其中的字段权限
tables_priv:授权一个表下所有字段权限
columns_priv:授权该字段所有权限

创建用户

CREATE USER 用户 IDENTIFIED BY 明文密码    
CREATE USER "xiaoming"@"1.1.1.1" IDENTIFIED BY "123";  要求用户名:xiaoming 密码:123  主机地址:1.1.1.1   
CREATE USER "xiaoming"@"1.1.1.%" IDENTIFIED BY "123";  要求用户名:xiaoming 密码:123  主机地址:1.1.1.0-1.1.1.255  
CREATE USER "xiaoming"@"%" IDENTIFIED BY "123";        要求用户名:xiaoming 密码:123  主机地址:0.0.0.0-255.255.255.255    

%代表通配符
IDENTIFIED BY PASSWORD 后面是密文密码

授权GRANT

GRANT 权限 ON 数据表 TO 用户;
权限:SELECT,UPDATE,ALTER,DROP,DELETE
ALL代表除GRANT以外的所有权限

GRANT SELECT ON *.* TO "xiaoming"@"1.1.1.1" IDENTIFIED BY "123";
GRANT UPDATE(id,name) ON db1.t1 TO "xiaoming"@"1.1.1.1" IDENTIFIED BY "123";

撤销权限REVOKE

REVOKE 权限 ON 数据表 FROM 用户;
REVOKE SELECT ON userinfo.id FROM "xiaoming"@"%";

查看授权

SHOW GRANTS;
SHOW GRANTS FOR "xiaoming"@"123";
原创文章 88 获赞 66 访问量 6万+

猜你喜欢

转载自blog.csdn.net/xgy123xx/article/details/101317922