MySQL的基本操做-增刪改創

一、MySQL的登陸

語法:mysql  -h ip地 -u用戶名 -p密碼html

例:mysql -h 59.34.56.11 -u root -p rootmysql

 

二、查看全部的表

語法:SHOW [FULL] TABLES [{FROM|IN} 數據庫名] [LIKE 規則 | WHERE 條件];sql

full:以完整格式顯示錶的名稱和類型數據庫

例:show full tables from neusoft1 where tables_in_neusoft1 = 'student1';spa

show tables like '%s%';日誌

 

三、查看錶結構

語法:DESC 表面 [列名];htm

DESC:DESCRIBE對象

例:DESC student1 stuno;blog

 

四、查看錶的詳細定義

語法:SHOW CREATE TABLE student1;ip

 

五、表的修改

a).添加列

語法:ALTER TABLE 表名 ADD ([column]列名1 類型1,列名2 類型2,......,列名n 類型n);

在某一列的前/後添加:ALTER TABLE 表名 ADD [column] 列名 類型 [first|after] 指定列名;

first是添加爲首列,如:alter student1 add sex char(2) first;

alter student1 add (sex char(2) after stuname);

b).刪除列

語法:alter table 表名 drop [column] 列名;

例:ALTER TABLE student DROP asid;

c). 修改列定義

語法:alter 表名 modify [column] 列名 數據類型;

[column]可寫可不寫,不可一次修改多個列屬性

如修改後的長度<原定義的長度,可能形成精度損失/數據更改(如小數位數減小,數據截斷)

d).修改列名

語法:Alter table 表名 change 原列名 新列名 數據類型;

alter table student1 change adress newadress char(10);

alter table student1 change newadress newadress varchar(20);

在修改列名的時候,也能夠修改屬性,或者只修改屬性不修改列名

e).修改表名

語法:Alter table 原表名 rename [to] 新表名;

To可寫可不寫,沒有影響

 

六、添加數據

a).插入單條數據

語法格式:insert [into] 表名(列名1,列名2,…)values(值1,值2,…);

1) 當插入數據爲日期或者字符串時,須要加上單引號

2) 列與值須要一一對應,不插入值時輸入null’’

3) into能夠省略,但因爲MySQL是不規範的語法格式,省略可能在後續進行數據遷移時會形成錯誤

例:CREATE TABLE emp(

         empno int(4),

         ename varchar(5),

         job varchar(10),

         mgr int(4),

         hiredate date,

         sal float(9,2),

         comm float(9,2),

         deptno int(3));

Insert into emp(empno,ename,hiredate,sal) values(7788,’TOM’,’2019-12-12’,3456);

b).插入多條數據

1) 利用values子句插入多條記錄

語法:insert  into 表名 (列1,列2…)  values  (列1值1,列2值1…), (列1值2,列2值2…) ,...;

例:insert into emp(empno.ename) values(1234,'allen'),(2345,'pirce'),(3456,'carte');

2) 利用select子句插入多條數據(複製)

語法:insert into 表名(列1,列2,…..)  select  列1,列2,….. from 表名;

例:Insert into emp(empno) select stuno from student;

3) 利用load子句批量錄入數據

語法:load data infile 文件地址 into table 表名;

 

例:

mysql> load data infile "I:\a.txt" into table t1;

 

 a、在製表符處把行分解爲列;

b、在新行處尋找行的邊界

c、不跳過任何行前綴

 

七、插入數據的擴展

a).利用set插入數據

語法格式:Insert into 表名 set 列名1=值1, 列名1=值1,…;

insert into emp set empno=1111,ename=KOBE0,job=MANAGER,MGR=1000,HIREDATE=2019-01-01,SAL=2000,DEPTNO=10;

b).使用replace插入單條記錄

Replace into 表名(列1,列2)  values(值1,值2);

replace into student(stuno,stuname) values(1002,'allen');

c).使用replace插入多條記錄

Replace into 表名(列1,列2…)  values  (列1值1,列2值1…), (列1值2,列2值2…) ,...;

replace into student(stuno,stuname) values(1002,'allen'), (1003,'carte');

 

八、數據修改

語法格式

所有修改

Update 表名 set 列名1=值1, 列名2=值2,……;

局部修改

Update 表名 set 列名1=值1, 列名2=值2,……where 條件;

update student set stuno=0001;

update student set stuno=1001 where stuname='carte';

 

九、刪除/截斷

a).delete語法格式

所有刪除

Delete from 表名;

局部刪除

Delete from 表名 where 條件;

b).truncate語法格式

語法格式

Truncate [table] 表名;         →相似於所有刪除

Qdelete語句和truncate語句的區別

Y:均能實現刪除表中的所有數據

N1:delete語句能夠實現帶條件的部分刪除,而truncate只能清除全部記錄

N2:truncate清除數據後,再向表中插入記錄時,自動增長的字段默認從1開始;而使用delete語句刪除記錄後,再向表中插入記錄時,自增字段的值會從(以前該字段的最大值)+1

N3:使用delete語句每刪除一行記錄,都會記錄在系統操做日誌中;而truncate語句清除數據時,不會在日誌中記錄刪除內容。若要清除表中全部的數據,truncate語句效率高於delete語句。

 

十、建立表

Create table [if not exists] 表名(

         列名1  數據類型1  列屬性1,

         列名2  數據類型2  列屬性3,

         ……

);

列屬性

1)、默認值:default 默認值

2)、註釋:commend 註釋內容

3)、自動增序:auto_increment(只對整數類型有效,且要和主鍵一塊兒使用

4)、約束

範例:

Create table if not exists t1(

         age char(3) default 23,

      Sid int comment'用戶編號',

         Sname varchar(10) default'無名氏'

);

 

十一、約束

約束是對錶的強制規定

數據完成性:實體完整性、域完整性、參照完整性

實體完整性:保證表中的每一數據在表中是惟一的

域完整性:數據庫中的必須知足某種特定的數據類型或約束。約束又分爲強制域完整性越蘇、限制格式或限制可能值得範圍。

參照完整性:在輸入/刪除記錄時,包含主關鍵字的主表 和 包含外關鍵字的外表

 

約束的分類:

完整性類型

約束類型

描述

約束對象

 

域完整性

Not null

列的值不能爲空

 

Auto_increment

列值自動增長

Default

默認值

實體完整性

Primary key

主鍵約束,表示惟一,不能爲空

Unique

惟一鍵,表示惟一,可爲空

參照完整性

Foreign key

外鍵約束

表與表之間

 

a).非空約束

1)、建表時建立非空約束

Create table if not exists t3(

         age char(3) not null,

         Sid int comment'用戶編號',

         Sname varchar(10) default'無名氏'

);

插入值:

mysql> insert into t3(sid,sname) values(1001,'byd');

ERROR 1364 (HY000): Field 'age' doesn't have a default value

mysql> insert into t3(age,sid,sname) values(null,1001,'byd');

ERROR 1048 (23000): Column 'age' cannot be null

mysql> insert into t3(age,sid,sname) values(105,1001,'byd');

Query OK, 1 row affected (0.01 sec)

 2)、增長非空約束

語法:alter table 表名 modify 列名 數據類型 not null;

Create table if not exists t4(

    Sid int comment'用戶編號',

         Sname varchar(10) default'無名氏'

);

alter table t4 modify Sid int not null comment '用戶編號';

3)、刪除非空約束

語法:Alter table 表名 modify 列名 數據類型 null;

 

 b).主鍵約束

一個表中通常只有一個主鍵,主鍵約束不可爲空,自增序必須和主鍵一塊兒使用

Create table if not exists t6(

    Sid int primary key auto_increment comment'用戶編號',

    Sname varchar(10) default'無名氏',

    age char(3) not null

);

mysql> insert into t6(sname,age) values('BRA',26);

1)、建立聯合主鍵約束

Create table if not exists s6(

    Sid int,

    Sname varchar(10) default'無名氏',

    age char(3) not null,

constraint pk_s6 primary key (Sid,Sname)

);

2)、添加主鍵約束

語法格式:alter table 表名 add constraint 約束名 primary key(列名1,列名2,…);

alter table emp add constraint pk_emp primary key (empno,ename);

alter table emp add constraint uk_emp unique key (mgr);

3)、刪除主鍵約束

語法:Alter table 表名 drop primary key;

Alter table emp drop primary key;

 

做者:kerwin-chyl

文章連接:https:////www.cnblogs.com/kerwin-chyl

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索