表数据类型及修饰符
整型:
INT:基本整型数据,4字节长度(包含正负数,以下均如此)
TINYINT:范围更小的整形数据,1字节
BIGINT:8字节长度整形数据
浮点型:
FLOAT:单精度浮点型,4字节
DOUBLE:双精度浮点型,8字节
字符型:
CHAR(#):长度为#的字符串,不区分大小写
BINARY(#):长度为#的字符产。区分大小写
VARCHAR(#):最大长度为#的变长字符串,不区分大小写
VARBINARY(#):最大长度为#的变长字符串,区分大小写
ENUM:枚举类型
SET:集合
TEXT,BLOB:存放大型字符文本,其不同在于TEXT不区分大小写,BLOB区分大小写
日期时间型:
DATE:日期,3字节
TIME:时间,3字节
DATETIME:日期时间
TIMESTAMP:时间戳,自1970-1-1 00:00:00到现在的秒数
YEAR(2):两位年份
YEAR(4):四位年份
常用的修饰符:
NOT NULL:不允许为空
DEFAULT:指定默认值,后跟值
PRIMARY KEY:设为主键
UNIQUE KEY:设为唯一键
UNSIGNED:无符号数值
常用命令
数据库相关:
MariaDB [(none)]> SHOW DATABASES; #显示所有数据库
MariaDB [(none)]> CREATE DATABASE db_name; #创建数据库
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS db_name; #增加了限定符,如果不存在则添加数据库
MariaDB [(none)]> SHOW CHARACTER SET; #显示当前使用的字符集
MariaDB [(none)]> CHARACTER SET utf8; #使用UTF-8字符集
MariaDB [(none)]> DROP DATABASE IF EXISTS db_name; #如果数据库存在则删除
MariaDB [(none)]> USE ‘db_nam’; #使用数据库,可理解为进入某个数据库视图,便于管理表单
表相关:
MariaDB [testdb]> SHOW TABLES; #使用USE命令后使用,显示当前数据库的所有表单
MariaDB [testdb]> DESC tb_name; #查看表单结构
MariaDB [testdb]> CREATE TABLE tb_name (col1 type1, col2 type2,...); #创建表单,同样可以配合限定符使用。之前提到的修饰符紧跟在type(字段数据类型)后面
MariaDB [testdb]> SHOW TABLE STATUS LIKE ’tb_name‘\G #竖行格式查看表单状态信息,注意此项格式
MariaDB [testdb]> DROP TABLE tb_name; #删除表单
MariaDB [testdb]> ALTER TABLE tb_name ADD col_add col_type AFTER col_naem; #在col_name字段后追加字段col_add,使用FIRST则表示在其前面追加字段
MariaDB [testdb]> ALTER TABLE tb_name DROP col_name; #删除表单某一字段
MariaDB [testdb]> ALTER TABLE tb_name CHANGE col_s_name col_d_name INT UNSIGNED #修改字段名,字段数据类型与修饰符与原来保持一致
MariaDB [testdb]> SHOW INDEXES FROM db_name.tb_name; #查看数据库某表单上的索引信息,查看当前数据库表单索引信息直接跟表单名即可
MariaDB [testdb]> CREATE INDEX index_name ON tb_name (col1,col2,...); #为某些字段创建索引
数据的增、删、查、改:
MariaDB [testdb]> INSERT tb_name col_name VALUE value; #插入表单一条信息,如果由多个字段,则使用下面命令
MariaDB [testdb]> INSERT tb_name (col1, col2,...) VALUES (value1, value2,...)
MariaDB [testdb]> SELECT * FROM tb_name; #产看表单所有信息
MariaDB [testdb]> SELECT * FROMtb_name WHERE id>5 LIMIT 10; #筛选出表中id>5的信息并输出头10行
MariaDB [testdb]> SELECT col1,col2,col3 FROM tb_name WHERE col_name1>10 ORDER BY col_name2 LIMIT 2,100; #获得col_name1字段值大于10的信息,并按col_name2字段进行排序,排序后从第2行开始输出,共100行中的col1,col2,col3字段的信息
//注:表中的数据行编号从0开始,排序后的编号亦是如此
MariaDB [testdb]> DELETE FROM tb_name WHERE id=5; #删除f符合条件的数据
MariaDB [testdb]> UPDATE tb_name SET col1=value1,col2=value2,... WHERE id=5; #更改符合条件的某些字段值
/*
WHERE的补充:
>, <, =, >=, <=, != #数值判断
WHERE LIKE col_name='_c%' #使用MariaDB的通配符
WHERE RLIKE 'Regexp' #调用正则表达式进行匹配,不建议使用
IS NULL:为空
IS NOT NULL:不为空
AND, OR, NOT:逻辑操作
*/
用户及权限管理:
MariaDB [(none)]> CREATE USER tuser@localhost IDENTIFIED BY 'testpasswd'; #创建用户tuser并设置密码
MariaDB [(none)]> SET PASSWORD FOR tuser@localhost=PASSWORD("newpasswd"); #修改用户密码
MariaDB [(none)]> DROP USER tuser@localhost; #删除用户tuser
MariaDB [(none)]> SHOW GRANTS FOR tuser@localhost; #查看tuser用户的权限
MariaDB [(none)]> SHOW GRANTS FOR CURRENT_USER; #查看当前用户权限信息
MariaDB [(none)]> GRANT privileges_list ON db_name.tb_name TO tuser@localhost; #对db_name数据库的tb_name表(使用db_name.*表示db_name数据库的所有表)授予用户tuser某些权限权限
//注:privilege:ALL, SELECT, CREATE, DELETE, UPDATE, INSERT等。
MariaDB [(none)]> REVOKE privileges_list ON db_name.tb_name FROM tuser@localhost; #删除某些权限
注: MariaDB服务启动时,会读取mysql数据库中的授权表(包含用户权限信息)到内存中,在对用户做权限更改后,有的命令仅会修改存储信息,不会同步到内存中,因此需要手动让MariaDB服务进程重读授权表,命令是:FLUSH PRIVILEGES;
示例:
创建数据库execdb,创建对该数据库具有一定的管理权限的用户euser。使用euser登录并在execdb数据库下创建表单stus,填入信息,修改信息。
最后逐步删除这些内容:删除表内数据–删除表–删除用户权限–删除用户–删除数据库
# systemctl start mariadb #确保mariadb服务正在运行,此处演示系统为CentOS7
# mysql -u root -p #root用户登录数据库
MariaDB [(none)]> CREATE DATABASE execdb; #创建数据库execdb
MariaDB [(none)]> CREATE USER euser@localhost IDENTIFIED BY 'passwd'; #创建用户euser并设置密码为passwd
MariaDB [(none)]> GRANT CREATE,SELECT,INSERT,DELETE,UPDATE ON execdb.* TO euser@localhost; #授权euser用户对execdb数据库所有表单对应的权限
MariaDB [(none)]> exit #退出数据库
# mysql -u euser -p #使用euser登录
MariaDB [(none)]> SHOW DATABASES; #查看数据库,如果前面正确配置,则会看到execdb数据库
MariaDB [(none)]> USE execdb; #使用execdb数据库
MariaDB [execdb]> CREATE TABLE stus (id INT UNSIGNED PRIMARY KEY, name CHAR(20), age TINYINT UNSIGNED); #创建并定义表stus
MariaDB [execdb]> INSERT stus (id, name, age) VALUES (0, 'Bob', 18); #对stus表新增一行数据
MariaDB [execdb]> SELECT * FROM stus; #查看表stus所有信息,正确配置可以看到Bob的信息
MariaDB [execdb]> UPDATE stus SET age=19 WHERE id=0; #修改id=0的行age字段值为19
MariaDB [execdb]> SELECT * FROM stus WHERE id=0; #查看Bob修改后的信息
//随后是删除等操作
MariaDB [execdb]> DELETE FROM stus WHERE id=0; #删除第刚才添加的信息
MariaDB [execdb]> exit #退出数据库
# mysql -u root -p #使用root用户登录
MariaDB [(none)]> DROP TABLE execdb.stus; #删除stus表,由于没有授权euser用户DROP权限,所以euser不能删除
MariaDB [(none)]> REVOKE ALL ON execdb.* FROM euser@localhost; #移除euser用户所有权限
MariaDB [(none)]> DROP USER euser@localhost; #删除euser用户
MariaDB [(none)]> DROP DATABASE execdb; #删除数据库
MariaDB [execdb]> exit