您好,登录后才能下订单哦!
本篇文章给大家主要讲的是关于linux下mysql数据库模型, 管理表和索引的内容,感兴趣的话就一起来看看这篇文章吧,相信看完linux下mysql数据库模型, 管理表和索引对大家多少有点参考价值吧。
1.linux下mysql数据库及其模型
1.1.SHOW TABLE STATUS LIKE 'user'\G #查看表的存储引擎
SHOW ENGINES; #查看数据库支持的存储引擎
客户端工具:mysql、mysqladmin、mysqldump、mysqlimport、mysqlcheck
云服务器端工具:mysqld, mysqld_safe, mysqld_multi
1.2.my.cnf检查顺序:
/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf -->
--default-extra-file=/路径文件 --> ~/.my.cnf
# mysqld --help --verbose
1.3.hostname.err,错误日志:此前服务未关闭,数据初始化失败,数据目录位置错误,数据目录权限问题
1.4.数据类型:存入的值类型;占据的存储空间;定长或变长;比较及排序;是否能够索引;
1.5.查看字符集和排序规则命令:
mysql> SHOW CHARACTER SET;
mysql> SHOW COLLATION;
1.6.AUTO_INCREMENT: 整型 非空 无符号 主键或惟一键
CREATE TABLE test(ID INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, Name CHAR(20))
mysql> SELECT LAST_INSERT_ID();
1.7.MySQL云服务器变量按作用域:分为全局变量和会话变量
SHOW GLOBAL VARIABLES #查看全局变量
SHOW [SESSION] VARIABLES #查看会话变量
MySQL云服务器变量按生效时间分为两类:动态和静态
动态:可即时修改
静态:写在配置文件中,通过参数传递给mysqld
动态调整参数的生效方式:
全局变量:对当前会话无效,只对新建立会话有效;
会话变量:即时生效,但只对当前会话有效;
1.8.云服务器变量:@@变量名
显示:SELECT @@global.sql_mode;
SELECT @@session.sql_mode;
设定:SET GLOBAL|SESSION 变量名='value'
2.管理表:
2.1.创建数据库:
CREATE DATABASE IF NOT EXISTS students CHARACTER SET 'gbk' COLLATE 'gbk_chinese_ci';
2.2.删除数据库:
DROP DATABASE [IF EXISTS] db_name
2.3.创建表:
CREATE TABLE [IF NOT EXISTS] tb_name (col_name col_defination, constraint )
2.3.1.直接创建一张空表:
CREATE TABLE tb1 (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL) ENGINE [=] engine_name
CREATE TABLE tb2 (id INT UNSIGNED NOT NULL AUTO_INCREMENT, Name CHAR(20) NOT NULL, Age TINYINT NOT NULL, PRIMARY KEY(id),UNIQUE KEY(name),INDEX(age))
CREATE TABLE courses(ID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,Course VARCHAR(50) NOT NULL);
2.3.2.插入表数据:
INSERT INTO courses (Course) values ('CCNA'),('CCNP'),('RHCA');
2.3.3.显示表的索引:
SHOW INDEXES FROM tb_name;
2.4.从其它表中查询出数据,并以之创建新表:(注意此类方法表格式定义与源表不同)
CREATE TABLE courses_new SELECT * FROM courses WHERE ID <=2;
2.5.以其它表为模板创建一个空表;(此类方法表格式定义与源表一模一样)
CREATE TABLE Courses_good LIKE courses;
3.索引
3.1.添加索引:
ALTER TABLE Courses_good ADD UNIQUE KEY (Course);
3.2.修改字段名称:
ALTER TABLE courses_good MODIFY CID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE courses_good CHANGE Couse Course VARCHAR(50) NOT NULL;
3.3.增加字段名称:
ALTER TABLE courses_good ADD Startdate date default '2016-06-29';
3.4.修改表名称:
ALTER TABLE courses_good RENAME TO courses_new;
RENAME TABLE courses_new TO courses_good;
3.5.删除表:
DROP TABLE courses_new;
3.6.表之间建立关系:
CREATE TABLE cla***oom (SID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(30), CID INT NOT NULL);
INSERT INTO cla***omm (Name,CID) VALUES ('Jerry',3),('tom',1);
SELECT * FROM cla***omm;
SELECT * FROM courses;
SELECT Name,Course FROM cla***oom,courses WHERE cla***oom.CID=courses.ID;
在没有引用外键情况下:cla***oom表可任意插入数据如下:
INSERT INTO cla***oom (Name,CID) VALUES ('Willow',6);
DELETE FROM cla***oom WHERE CID=6;
引用外键情况下:cla***oom表只能对照引用表存在的数据进行插入,不能任意插入数据
外键必须是支持事务的存储引擎,如InnoDB,否则会报错
外键引用字段类型参数也需一致
ALTER TABLE courses ENGINE=InnoDB;
ALTER TABLE cla***oom ADD FOREIGN KEY foreign_cid (CID) REFERENCES courses(ID);
SHOW INDEXES FROM cla***oom;
此时对cla***oom表再插入引用的courses表中没有的数据,将会报错
INSERT INTO cla***oom (Name,CID) VALUES ('Willow',6);
3.7.创建索引:
CREATE INDEX index_on_name ON cla***oom (Name) USING BTREE;
CREATE INDEX index_on_name ON cla***oom (Name(5) DESC) USING BTREE;
3.8.删除索引:
DROP INDEX index_on_name ON cla***oom;
以上关于linux下mysql数据库模型, 管理表和索引详细内容,对大家有帮助吗?如果想要了解更多相关,可以继续关注我们的行业资讯板块。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。