1. 程式人生 > >Mysql-5-數據表的基本操作

Mysql-5-數據表的基本操作

報錯 reference 重復 語法 約束 實現 數據表 自動增加 create

1.創建表:之前需要use database database_name 然後create table 表名();

例:創建員工表tb_employee1,結構如下表所示

字段名稱

數據類型

備註

id

int11

員工編號

name

varchar25

員工名稱

depld

int11

所在部門編號

salary

float

工資

mysql> create database aa;
mysql> use aa;
mysql> create table tb_employee1(id int
(11),name varchar(25),depld int(11),salary float);

2.主鍵約束:主鍵又稱主碼,是表中一列或多列的組合。主鍵約束要求主鍵列的數據唯一,並且不能為空。主鍵能夠唯一標識表中的一條記錄,可以結合外鍵來定義不同數據表之間的關系,並且可以加快數據庫查詢速度。主鍵分為兩種類型:單字段主鍵和多字段聯合主鍵。

(1)單字段主鍵

mysql> create table tb_employee1(id int(11)primary key,name varchar(25),depld int(11),salary float);
mysql> create
table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id));

(2)多字段聯合主鍵

mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id,name));

3.外鍵約束:外鍵用來在兩個表之間建立聯系,它可以是一列或者多列。一個表可以有一個或者多個外鍵。外鍵對應的是參照完整性,一個表的外鍵可以是空值,若不為空值,則每一個外鍵必須等於另一個表中主鍵的某個值。

下面介紹幾個概念。是表中的一個字段,它可以不是本表的主鍵,但對應另外一個表的主鍵。外鍵的主要作用是保證數據引用的完整性,定義外鍵後,不允許刪除在另一個表中具有關聯關系的主鍵。例如:部分表的主鍵id,在表tb中有一個鍵deptld與這個id關聯。

主表(父表):對於兩個具有關聯關系的表而言,相關字段中主鍵所在的那個表就是主表。

從表(自表):對於兩個具有關聯關系的表而言,相關字段中外鍵所在的那個表就是從表。

例:定義數據表tb_employee5,並且在該表中創建外鍵約束

創建一個部門表tb_dept1,表結構如下表所示

字段名稱

數據類型

備註

id

int11

部門編號

name

varchar22

部門名稱

location

varchar50

部門位置

mysql> create table tb_dept1(id int(11)primary key,name varchar(22),location varchar(50));
定義數據表tb_employee5,讓它的deptld字段作為外鍵關聯到tb_dept1的主鍵id:
mysql> create table tb_employee5(id int(11)primary key,name varchar(25),deptld int(11),salary float,constraint fk_emp_dept1 foreign key(deptld) references tb_dept1(id));

4.非空約束(not null):是指字段的值不能為空。對於使用了非空約束的字段,如果用戶在添加數據時沒有指定值,數據庫系統會報錯。

語法規則:字段名 數據類型 not null

例:定義數據表tb_employee6,指定員工的名稱不能為空

mysql> create table tb_employee6(id int(11)primary key,name varchar(25)not null,deptld int(11),salary float);

5.唯一性約束:要求該列唯一,允許為空,但只能出現一個空值。唯一性約束可以確保一列或者多列都不能出現重復值。

(1)在定義完列之後直接指定唯一約束

語法規則:字段名 數據類型 unique

mysql> create table tb_dept2(id int(11)primary key,name varchar(22)unique,location varchar(50));

(2)在定義完所有列之後指定唯一約束

語法規則:constraint 約束名 unique(字段名)

mysql> create table tb_dept3(id int(11)primary key,name varchar(22),location varchar(50),constraint sth unique(name));

unique和primary key的區別:一個表中可以有多個字段聲明為unique,但只能有一個primary key聲明;聲明為primary key的列不允許有空值,但是聲明為unique的字段允許空值的存在。

6.默認約束:指定某列的默認值。如男性同學較多,性別就可以默認為“男”。如果插入一條新的記錄時沒有為這個字段賦值,那麽系統自動會為這個字段賦值為男。

語法規則:字段名 數據類型 default 默認值

例:mysql> create table tb_employee7(id int(11)primary key,name varchar(25)not null,deptld int(11)default 1111,salary float);

7.設置數據表的屬性值自動增加:在數據庫應用中,經常希望在每次插入新數據時,系統會自動生成字段的主鍵值。可以為表主鍵添加auto_increment關鍵字來實現。在mysql中,默認情況下auto_increment初始值為1,每新增一條記錄,字段自動加1.一個表只能有一個字段使用auto_increment約束,且每個字段必須為主鍵的一部分。auto_increment約束的字段可以是任何整數類型(tinyint/samllint/int/bigint)。

語法規則:字段名 數據類型 auto_increment

例:定義數據表tb_employee8,指定員工標號自動增加

mysql> create table tb_employee8(id int(11)primary key auto_increment,name varchar(25)not null,deptld int(11),salary float);

mysql> insert into tb_employee8(name,salary) values(lucy,1000),(lii,800),(cai,20000);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from tb_employee8;
+----+------+--------+--------+
| id | name | deptld | salary |
+----+------+--------+--------+
|  1 | lucy |   NULL |   1000 |
|  2 | lii  |   NULL |    800 |
|  3 | cai  |   NULL |  20000 |
+----+------+--------+--------+
3 rows in set (0.00 sec)

8.查看數據表的結構

查看表基本結構:describe 表名 或 desc 表名

mysql> desc tb_employee8;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| name   | varchar(25) | NO   |     | NULL    |                |
| deptld | int(11)     | YES  |     | NULL    |                |
| salary | float       | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+

(1)NULL:表示該列是否可以存儲null值

(2)key:表示該列是否已經編制索引。pri為該列主鍵的一部分;uni表示該列是unique索引的一部分;mul表示在列中某個給定值允許出現多次。

9.查看表詳細結構

語法規則:show create table 表名\G

mysql> show create table tb_employee8\G
*************************** 1. row ***************************
       Table: tb_employee8
Create Table: CREATE TABLE `tb_employee8` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `deptld` int(11) DEFAULT NULL,
  `salary` float DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

10.修改數據表:修改數據庫中已經存在的數據表結構。常用的修改表的操作有:修改表名,修改字段數據類型或字段名,增加和刪除字段,修改字段的排列位置,更改表的存儲引擎,刪除表的外鍵約束等。

(1)修改表名

alter table 舊表名 rename 新表名
例:mysql> alter table tb_dept3 rename tb_deptment3;

(2)修改字段數據類型

alter table 表名 modify 字段名 數據類型
例:mysql> alter table tb_dept1 modify name varchar(30);

(3)添加字段

alter table 表名 add 新字段名 數據類型
例1:mysql> alter table tb_dept1 add managerld int(20);(沒有完整性約束條件的字段)
例2:mysql> alter table tb_dept1 add column1 varchar(12) not null;(添加有約束條件)
例3:mysql> alter table tb_dept1 add column2 int(11) first;(添加到第一列)
例4:mysql> alter table tb_dept1 add column3 int(11) after name;(添加到name後一列)

(4)刪除字段

alter table 表名 drop 字段名
例:mysql> alter table tb_dept1 drop column3;

(5)修改字段排序

alter table 表名 modify 字段1 數據類型 first after 字段2
例1:mysql> alter table tb_dept1 modify id int(11) first;
例2:mysql> alter table tb_dept1 modify column2 int(11) after column1;

(6)更改表的數據引擎

alter table 表名 engine=更改後的存儲引擎
例:mysql> alter table tb_dept1 engine=innodb;

(7)刪除表的外鍵約束

alter table 表名 drop foreign key 外鍵約束名

(8)修改字段名

mysql> alter table customers change c_contact c_phone varchar(50);

11.刪除數據表

drop table 表1 表2 。。。

刪除被其他表關聯的主表:先刪除字表,再刪除主表(或取消外鍵約束,刪除主表)

Mysql-5-數據表的基本操作