標籤:
登入mysql mysql -h hostname -u username -p 密碼
mac下啟動mysql
在終端的本人使用者名稱下的 .bash_profile的檔案裡添加
export PATH=/usr/local/mysql/support-files/:$PATH path路徑
然後終端輸入sudo mysql.server (start 啟動 restart 重啟 stop停止)
\s 查看資料庫資訊
建立資料庫
不帶字元編碼的 create database 資料庫名稱 ;
帶字元編碼的 create database 資料庫名稱 charset=‘utf8‘;
查看資料庫
show databases;
查看一個已經建立的資料庫資訊
show create database 資料庫名稱;
修改資料庫編碼
alter database 資料庫名稱 default character set 編碼方式 collate 編碼方式_bin;
刪除資料庫
drop database 資料庫名稱;
登入資料庫
use 資料庫名;
-----------------------------------------
查看錶中的列
SHOW COLUMNS FROM 表名;
DESCRIBE 表名;
desc 表名;
查看資料庫中的表
show tables;
建表文法:
CREATE TABLE 表名(
欄位1 資料類型 約束,
欄位2 資料類型 約束,
...
欄位n 資料類型 約束
);
查看已建表的資訊
show create table 表名;
刪除表
drop table 表名;
約束:
表的約束
主鍵、外鍵、非空、唯一、預設
如果定義為主鍵,那它也一點唯一和非空
單欄位主鍵
欄位名 資料類型 primary key
多欄位主鍵
欄位名 資料類型 (欄位名1,欄位名2,欄位名3,欄位名4,欄位名5,....欄位名n)
非空約束
欄位名 資料類型 not null
唯一約束
欄位名 資料類型 unique;
預設約束
欄位名 資料類型 default 預設值;
表欄位的自動成長
欄位名 資料類型 auto_increment;
外鍵約束
FOREIGN KEY
建立在兩表或多張表中的關聯關係,以保證資料完整性
注意:1.子表參照的值必須在主表被參照欄位的值的範圍內
2.如果主表中有值被參照,那麼主表中的相應記錄不能被刪除
3.子表的外鍵參照的列只能是主表的主鍵列或唯一約束的列
CREATE TABLE class(
cid INT PRIMARY KEY auto_increment,
cname VARCHAR(20)
)ENGINE=INNODB;
CREATE TABLE student(
sid INT PRIMARY KEY auto_increment,
sname VARCHAR(20),
scid INT,
-- FOREIGN KEY (scid) REFERENCES class(cid)
CONSTRAINT fk_scid FOREIGN key(scid) REFERENCES class(cid)
)ENGINE=INNODB;
DROP TABLE student;
DROP TABLE class;
文法1: FOREIGN KEY (外鍵欄位) REFERENCES 主表(主鍵欄位);
文法2: CONSTRAINT 外鍵名 FOREIGN KEY (外鍵欄位) REFERENCES 主表(主鍵欄位);
(外鍵名:fk_欄位名)
建表後的操作:
修改表名:
alter table 舊錶名 rename to 新表名;
修改表裡欄位名
alter table 表名 change 舊欄位名 新欄位名 新資料類型;
修改欄位的資料類型
alter table 表名 modify 欄位名 資料類型;
添加欄位
alter table 表名 add 新欄位名 資料類型;-----約束
刪除欄位
alter table 表名 drop 欄位名;
修改欄位的排列位置
alter table 表名 modify 欄位名 1 資料類型 first|after 欄位名 2;
查表
select * from 表名;
1.DELETE
文法:delete FROM 表名 [where 條件]
注意:刪除都是指刪除整條資料
delete刪除資料不會徹底刪除,會保留表的結構以及資料空間結構
如果刪除時不指明條件,表示將整張表資料刪除
--刪除所有年齡為18歲的學生
DELETE FROM student where sage = 18;
--刪除所有年齡為17歲並且學習英語軟體專業的學生資訊
DELETE FROM student where sage = 17 AND szhuanye = ‘英語軟體‘;
DELETE FROM student where sage = 17 OR szhuanye = ‘英語軟體‘;
CREATE table test(
tid int PRIMARY KEY auto_increment,
ttt VARCHAR(10)
);
like not like ‘%字元‘ ‘字元%‘ ‘字%符’
INSERT INTO test(ttt) values("a");
INSERT INTO test(ttt) values("b");
INSERT INTO test(ttt) values("c");
DELETE FROM test WHERE tid = 5;
2.TRUNCATE
文法:truncate table 表名;
注意:truncate表示將整張的內容全部刪除,保留表結構,釋放資料空間
TRUNCATE TABLE test;
3.drop
文法:drop table 表名;
注意:慎用,將整張表全部刪除
UPDATE
文法:update 表名 set 列1 = 值1,列2 = 值2... [WHERE 條件]
注意:如果不跟where條件,那麼表示將表中的所有資料都進行修改
--修改學生表中的學員的年齡為20歲
UPDATE student SET sage = 20;
--修改學號為5的學生的姓名為‘lucy‘
UPDATE student set sname = ‘lucy‘ WHERE sid = 5;
--修改學號為2的學生的年齡為18歲,班級id改為1001
UPDATE student SET sage =18,cid = 1001 WHERE sid = 2;
INSERT
CREATE TABLE student(
sid INT PRIMARY KEY auto_increment,
sname VARCHAR(10),
sage int
);
不指定欄位添加資料,必須為表中的每個欄位都添加資料
注意:值的順序必須和表中欄位順序一致
INSERT INTO 表名 VALUES (值1,值2,...值n);
INSERT INTO student VALUES(101,‘lily‘,20);
指定欄位添加資料
注意:在指定欄位時,欄位順序必須和建表時一致
INSERT INTO student(sname,sage) values(‘lucy‘,20);
DROP TABLE student;
CREATE TABLE class(
cid INT PRIMARY KEY,
cname VARCHAR(10)
)ENGINE=INNODB;
CREATE DATABASE tt ENGINE=INNODB;
CREATE TABLE student(
sid INT PRIMARY KEY auto_increment,
sname VARCHAR(10),
sage int,
cid INT,
FOREIGN KEY(cid) REFERENCES class(cid)
)ENGINE=INNODB;
DROP TABLE student;
DROP table class;
INSERT INTO class(cid,cname) VALUES (1,"class1");
INSERT INTO class(cid,cname) VALUES (2,"class2");
INSERT INTO class(cid,cname) values(1001,"class3");
INSERT INTO student(sname,sage,cid) values(‘lily‘,19,2);
INSERT INTO student(sname,sage,cid) values("lucy",20,10001);
CREATE TABLE ttt(
ttt int
);
mysql的操作