環境:ubuntu16.04
Mysql搭建:https://dev.mysql.com/doc/
一、基本操作:
1、數據庫配置修改位置 :
vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改datadir位置:
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
2、連接數據庫
mysql -u root -p
3、創建用戶
mysql -u root -p #進入root下的mysql
create user 'name'@'localhost' identified by 'passwd'; #localhost表示本機訪問
create user 'name'@'localhost'; #可以不要密碼
create user 'name'@'%' identified by 'passwd'; #%表示可以遠程訪問
4、給新建用戶權限
mysql -u root -p #進入root下的mysql
create database example; #創建一個數據庫example
grant all privileges on 'example'.* to 'name'@'%' #把example權限給新建用戶(新建用戶是不能創建database的)
flush privileges #立即更新
5、在新的用戶上建立數據庫
mysql -u create_name -p #進入root下的mysql
use example; #用example數據庫(由root用戶授權)
drop example; #刪除數據庫
6、在數據庫中建表
use example; #用example數據庫建表
create table 表名 ( #創建表
屬性名 數據類型 [完整約束條件],
屬性名 數據類型 [完整約束條件],
...
...
屬性名 數據類型 [完整約束條件]
);
create table stu( #example
id int primary key,
name varchar(20) not null
);
desc stu; #查看錶結構
drop table stu; #刪除表
約束條件(constraint)說明:
PRIMARY KEY: 標識該屬性爲該表的主鍵,可以唯一的標識對應的元組(唯一unique,非空not null,便於查詢)
FOREIGN KEY: 標識該屬性爲該表的外鍵,是與之聯繫某表的主鍵
NOT NULL: 標識該屬性不能爲空
UNIQUE: 標識該屬性的值是唯一的,不可重複
AUTO_INCREMENT 標識該屬性的值是自動增加,這是MySQL的SQL語句的特色(配合主鍵用)
DEFAULT: 如果添加語句爲空,爲該屬性設置默認值
7、修改表的屬性
alter table stu add teacher_name varchar(20) not null after id; #添加表
alter table stu modify name varchar(80) after id; #修改表中name的屬性
alter table stu change name stu_name varchar(20); #改變表中name的名字及屬性
alter table stu drop teacher_name; #刪除表
desc stu; #查看錶結構
8、導入txt文檔
load data infile 'txt path' into table stu; #注意txt內容中兩個值之間默認爲一個tab鍵
load data infile 'txt path' into table stu fields terminated ','; #也可以爲','
select * from stu; #顯示錶內容
導入txt文檔遇到的錯誤:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot exec
錯誤原因:只能在規定的目錄下才能導入,我們需要通過下面命令查看 secure-file-priv 當前的值是什麼,進入mysql,執行:
show variables like '%secure%';
我們可以看到secure_file_priv的值爲/var/lib/mysql-files/
那麼我們把導入的路徑改爲上面的值就可以了
二、索引操作
1、爲什麼使用索引
數據庫的索引跟書的目錄一樣,,主要是爲了提高表中檢索數據的速度,由於數據存儲在數據庫表中,所以索引就是創建在數據庫表對象上,由表中的一個字段或多個字段生成的鍵組成,這些鍵存儲在數據結構(B-樹或哈希表)。所以索引的存儲類型分爲B型樹索引和哈希索引。
2、6種索引
索引的操作分爲創建索引、修改索引、刪除索引,Mysql支持6種索引:普通索引,唯一索引,全文索引,單、雙列索引,空間索引。
(1)普通索引
普通索引在創建時,不附加任何限制條件,也就是說可以創建在任何數據類型的字段上。
#創建普通索引方法1:
create table stu(
id int primary key,
name varchar(20) not null,
index index_id(id) #在id字段上創建索引
);
#創建普通索引方法2:
alter table stu add index index_id(id);
#創建普通索引方法3:
create index index_id on stu(id);
測試:
(2)唯一索引
所謂唯一索引就是在創建索引時,限制索引的值必須是唯一的,這樣可以更快速的查詢某條記錄。
#創建唯一索引方法1:
create table stu(
id int primary key,
name varchar(20) not null,
unique index index_id(id) #在id字段上創建唯一索引
);
#創建唯一索引方法2:
alter table stu add unique index index_id(id);
#創建唯一索引方法3:
create unique index index_id on stu(id);
(3)全文索引
全文索引主要關注在數據類型爲char、varchar、text數據類型上,
#創建全文索引方法1:
create table stu(
id int primary key,
name varchar(20) not null,
fulltext index index_name(name) #在name字段上創建全文索引
);
#創建全文索引方法2:
alter table stu add fulltext index index_name(name);
#創建全文索引方法3:
create fulltext index index_id on stu(name);
(4)多列索引
在創建索引時,所關聯的不是一個字段,而是多個字段(普通索引的增加版本)。
#創建多列索引方法1:
create table stu(
id int primary key,
name varchar(20) not null,
index index_id_name(id,name) #在name字段上創建多列索引
);
#創建多列索引方法2:
alter table stu add index index_id_name(id,name);
#創建多列索引方法3:
create index index_id_name on stu(id,name);
3、刪除索引
drop index index_id on stu;
三、數據操作
未完。。。。。。