1.查看錶結構
mysql中能夠用describe查看錶的基本定義,包括字段名,字段數據類型,主鍵,默認值等,describe能夠用desc來簡寫,效果是同樣的,語法結構爲:
desc table_name;
eg:mysql
- desc host;
mysql> desc host;
+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| Db | char(64) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
+-----------------------+---------------+------+-----+---------+-------+
20 rows in set (0.00 sec)sql
查看錶結構的詳細語句:
show create tabel table_name;
eg:數據庫
- show create table host;
2.建立數據表:
看到表的基本結構,咱們就能夠根據需求建立相應的表,其語法形式爲:
create table table_name (屬性名 數據類型 [完整性約束條件],
.
.
.
屬性名 數據類型 [完整性約束條件]);
其中表名不能爲sql語言的關鍵字。
eg:ide
- create table example0(id int
- ,name varchar(20)
- ,sex boolean);
mysql> desc example0;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | tinyint(1) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)spa
表的完整性約束條件
ci
約束條件 | 說明 |
primary key | 主鍵 |
foreign key | 外鍵 |
not null | 非空 |
auto_increment | 惟一 |
default | 設置 |
設置表的單字段主鍵,語法以下:
屬性名 數據類型 primary key
eg:在example1中,設置stu_id爲主鍵rem
- create table example1(stu_id int primary key
- ,stu_name varchar(20)
- ,stu_sex boolean);
mysql> desc example1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| stu_id | int(11) | NO | PRI | NULL | |
| stu_name | varchar(20) | YES | | NULL | |
| stu_sex | tinyint(1) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)string
設置表的多字段主鍵:
primary key (屬性名1,屬性名2,...屬性名n)
eg:
it
- create table example2(stu_id int,
- course_id int,
- grade float,
- primary key(stu_id,course_id));
mysql> create table example2(stu_id int, course_id int, grade float, primary key(stu_id,course_id));
Query OK, 0 rows affected (0.00 sec)table
設置表的外鍵
原則:必須依賴於數據庫中已經存在的父表的主鍵。
語法:
- constraint foregin_key_alias foreign key (attribute1.1 ...,attribute1.n)
- references table_name(attribute2.1...,attribute2.n)
eg:在example3中設置stu_id,course_id爲外鍵,關聯example1中的主鍵stu_id,course_id:
- create table example3(id int primary key,
- stu_id int,
- course_id int,
- constraint c_fk foreign key(stu_id,course_id)
- references example1(stu_id,course_id));
設置表的非空約束:
attribute data_type not null
eg:設置example4表中的id和name爲非空約束
- create table example4(id int primary key not null,
- name varchar(20) not null,
- stu_id int,
- constraint d_fk foreign key(stu_id)
- references example1(stu_id));
設置表的惟一性約束:
attribute data_type unique
eg:在example5表中設置id,stu_id 惟一性約束
- create table example5(id int primary key,
- stu_id int unique,
- name varchar(20) not null);
設置表的屬性值自動增長,其主要做用是爲表中插入的新記錄自動生成惟一的id。一個表只有一個字段能使用auto_increment約束,且必須爲主鍵的一部分。
attribute data_type auto_increment
eg:在example6表中,這是id的值自動增長
- create table example6(id int primary key auto_increment,
- stu_id int unique,
- name varchar(20) not null);
設置表的默認值
attribute data_type default default_value
eg:
- create table example7(id int primary key auto_increment,
- stu_id int unique,
- name varchar(20) not null,
- english varchar(20) default 'zero'
- ,math float default 0,
- computer float default 0);