mysql學習筆記(4)建立數據表

1.查看錶結構
mysql中能夠用describe查看錶的基本定義,包括字段名,字段數據類型,主鍵,默認值等,describe能夠用desc來簡寫,效果是同樣的,語法結構爲:
desc table_name;
eg:mysql

  
  
  
  
  1. 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:數據庫

  
  
  
  
  1. show create table host; 

 

2.建立數據表
看到表的基本結構,咱們就能夠根據需求建立相應的表,其語法形式爲:
create table table_name (屬性名 數據類型 [完整性約束條件],
                                       .
                                       .
                                       .
                                       屬性名 數據類型 [完整性約束條件]);
其中表名不能爲sql語言的關鍵字。
eg:ide

  
  
  
  
  1. create table example0(id int 
  2.                       ,name varchar(20)  
  3.                       ,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

  
  
  
  
  1. create table example1(stu_id int primary key 
  2.                       ,stu_name varchar(20)  
  3.                       ,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

  
  
  
  
  1. create table example2(stu_id int,
  2. course_id int,
  3. grade float,
  4. 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

設置表的外鍵
原則:必須依賴於數據庫中已經存在的父表的主鍵。
語法:
 

  
  
  
  
  1. constraint foregin_key_alias foreign key (attribute1.1 ...,attribute1.n)  
  2. references table_name(attribute2.1...,attribute2.n) 

eg:在example3中設置stu_id,course_id爲外鍵,關聯example1中的主鍵stu_id,course_id:

  
  
  
  
  1. create table example3(id int primary key,   
  2.                       stu_id int,   
  3.                       course_id int,   
  4.                       constraint c_fk foreign key(stu_id,course_id)   
  5.                       references example1(stu_id,course_id)); 

設置表的非空約束:
attribute data_type not null
eg:設置example4表中的id和name爲非空約束

  
  
  
  
  1. create table example4(id int primary key not null,   
  2.                       name varchar(20) not null,  
  3.                       stu_id int,  
  4.                       constraint d_fk foreign key(stu_id)   
  5.                       references example1(stu_id));  

設置表的惟一性約束:
attribute data_type unique
eg:在example5表中設置id,stu_id 惟一性約束

  
  
  
  
  1. create table example5(id int primary key,  
  2.                       stu_id int unique,  
  3.                       name varchar(20) not null); 

設置表的屬性值自動增長,其主要做用是爲表中插入的新記錄自動生成惟一的id。一個表只有一個字段能使用auto_increment約束,且必須爲主鍵的一部分。
attribute data_type auto_increment
eg:在example6表中,這是id的值自動增長
 

  
  
  
  
  1. create table example6(id int primary key auto_increment,  
  2.                       stu_id int unique,  
  3.                       name varchar(20) not null);      

設置表的默認值
attribute data_type default default_value
eg:

  
  
  
  
  1. create table example7(id int primary key auto_increment,  
  2.      stu_id int unique,  
  3.      name varchar(20) not null,  
  4.      english varchar(20) default 'zero' 
  5.      ,math float default 0,  
  6.      computer float default 0); 
相關文章
相關標籤/搜索