一、数据库模式定义

  1. mysql> CREATE DATABASE mydata; # 创建数据库
  2. Query OK, 1 row affected (0.04 sec)
  3. mysql> CREATE DATABASE mydata; # 创建数据库#
  4. ERROR 1007 (HY000): Can't create database 'mydata'; database exists
mysql> CREATE DATABASE mydata;                  # 创建数据库
Query OK, 1 row affected (0.04 sec)

mysql> CREATE DATABASE  IF NOT EXISTS mydata;   # 创建之前检查一下该数据库是否存在
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> USE mydata;                              # 切换数据库
Database changed
mysql> DROP DATABASE mydata;                    # 删除数据库
Query OK, 0 rows affected (0.10 sec)

mysql> DROP DATABASE IF EXISTS mydata;          # 删除之前检查一下该数据库是否存在
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> SHOW DATABASES;                          # 查看所有数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

从这里开始的

二、表定义

补充知识:MYSQL的数据类型

数值类型
整数类型 INT
浮点类型 FLOAT DOUBLE DECIMAL
日期和时间类型
日期类型 DATE (YYY-MM-DD) YEAR
日期时间类型 DATETIME TIME
时间戳类型 TIMESTAMP
字符串类型
固定长度类型 CHAR最大长度255
可变长度类型 VARCHAR,最大长度65535
文本类型TEXT

1、 创建表

# 创建表的语法
CREATE [TEMPORARY] TABLE tbl_name
(
  字段名1 数据类型 [列级完整性约束条件][默认值]
[,字段名2 数据类型 [列级完整性约束条件][默认值]]
[,......]
  [,表级完整性约束条件]
)[ENGINE=引擎类型];
CREATE DATABASE  IF NOT EXISTS mysql_test;
USE mysql_test;
CREATE TABLE customers (
    cust_id INT NOT NULL AUTO_INCREMENT,
    cust_name CHAR ( 50 ) NOT NULL,
    cust_sex CHAR ( 1 ) NOT NULL DEFAULT 0,
    cust_address CHAR ( 50 ) NULL,
    cust_contact CHAR ( 50 ) NULL,

PRIMARY KEY ( cust_id ) 
);
CREATE TABLE student (
    Sno CHAR ( 8 ) NOT NULL,
    Sname CHAR ( 12 ) NOT NULL,
    Ssex CHAR ( 1 ) NOT NULL DEFAULT 0,
Sage INT 
);

2、 更新表

数据语法
(1) 添加字段子句

ALTER TABLE tbl_name 
    ADD [COLUMN] 新字段名 数据类型 [约束条件] [FIRST|AFTER 已有字段名]

ADD [COLUMN]
“ADD”:可在ALTER TABLE语句中添加ADD [COLUMN]子句实现向表中增加新列,且其可同时增加多个列。
“AFTER”:可将新列插入指定的某列之后,如下列例子所示,将cust_city列插入cust_sex列之后。也可通过关键字“FIRST”将新列作为表的第一列。若不指定这两个关键字,系统默认将新列添加到原表的最后。
“zhangzhikai.customers”:此例中对表名的指定采用的是完全限定的表名方式,即“db_name.tbl_name”的表名格式。

举例:向数据库zhangzhikai的表customer中添加一列,并命名为cust_city,显示用户所在城市,要求其不能为NULL,默认值为字符串‘Wuhan’,且该列位与原表cust_sex列之后。
mysql> ALTER TABLE zhangzhikai.customers
-> ADD COLUMN cust_city char(10) NOT NULL
DEFAULT’Wuhan’ AFTER cust_sex;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

(2) 修改字段子句
CHANGE[COLUMN]
“CHANGE”:可同时表中指定列的名字和数据类型,且在ALTER TABLE语句中可以同时放入多个CHANGE[COLUMN]子句,只需用逗号分隔。

举例:将数据库zhanghzhikai中表customer的cust_sex列重命名为sex,且将其数据类型更改为长度为(1)的字符数据类型char(1),允许其为NULL,默认值为字符常量‘M’。
mysql> ALTER TABLE zhangzhikai.customers
-> CHANGE COLUMNcust_sex sex char(1) NULL DEFAULT’M’;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

(3) 修改或删除表中指定列的默认值
ALTER[COLUMN]
“ALTER”:可在ALTER TABLE语句中添加ALTER[COLUMN]子句,用来修改或删除表中指定列的默认值。
举例:将数据库zhangzhikai中表customer的city_city的默认值修改为字符常量‘Beijing’.
mysql> ALTER TABLE zhangzhikai.customers
-> ALTER COLUMN cust_citySET DEFAULT‘Beijing’;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

(4) 修改指定列的数据类型
MODIFY[COLUMN]
“MODIFY”:在ALTER TABLE语句中添加MODIFY[COLUMN]子句只会修改指定列的数据类型,而不会干涉他的列名。另外MODIFY[COLUMN]子句还可以通过关键字“FIRST”“AFTER”修改指定列表中的位置。
举例:将数据库zhangzhikai中表customer的city_name列的数据类型由之前的字符长度为50的定长字符数据类型char(50)更改为字符长度为20的定长字符数据类型char(20),并将此列设置成表的第一列。
mysql> ALTER TABLE zhangzhikai.customers
-> MODIFY COLUMN cust_namechar(20) FIRST;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

(5) 删除字段子句
DROP[COLUMN]
“DROP[COLUMN]”:在ALTER TABLE语句中添加DROP[COLUMN]子句操作卸除多余的列。
举例:删除数据库zhangzhikai中表customers的cust_conta列
mysql> ALTER TABLE zhangzhikai.customers
-> DROP COLUMN cust_contact;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

(6) 重命名表名
RENAME[TO]
“RENAME”:在ALTER TABLE语句中添加DROP[COLUMN]子句为表重新赋予一个表名。
举例:使用RENAME[TO]子句,重命名数据库zhangzhikai中表customers的表名为zzk。
mysql> ALTER TABLE zhangzhikai.customers
-> RENAME TO zhangzhikai.zzk;
Query OK, 0 rows affected (0.01 sec)

3.重命名表语法
RENAME TABLE tbl_name TO new_tbl_name
[,tbl_name2 TO new_tbl_name2]…
“RENAME TABLE”:可同时重命名多个表
举例:将表zzzk重新命名为ak,zzzzk重新命名为aak
mysql> RENAME TABLE zhangzhikai.zzzk TO zhangzhikai.ak
-> ,zhangzhikai.zzzzk TO zhangzhikai.aak;
Query OK, 0 rows affected (0.01 sec)


4.删除表语法
DROP[TEMPORARY] TABLE [IF EXISTS]
tbl_name[,tbl_name]…
[RESTRICT|CASCADE]
“DROP[TEMPORARY]”:可以同时删除多个表(包括临时表)
举例:同时删除ak,aak。
mysql> drop table zhangzhikai.ak
-> ,zhangzhikai.aak;
Query OK, 0 rows affected (0.01 sec)

5.查看表语法

(1) 显示表名称
SHOW[FULL]TABLES[{FROM|IN}db_name]
“SHOW[FULL]TABLES”:可以查看指定数据库的所有表名
举例:
mysql> show tables;
+———————————-+
| Tables_in_zhangzhikai |
+———————————-+
| aaa |
| bbb |
| ccc |
+———————————-+
3 rows in set (0.00 sec)




(2) 显示表的结构
SHOW[FULL] COLUMNS{FROM|IN} tbl_name [{FROM|IN} db_name]
[LIKE’PATTERN’|WHERE expr]
或者
{DESCRIBE|DESC} tbl_name [col_name|wild]
“SHOW[FULL] COLUMNS{FROM|IN}”:用来显示指定数据表的结构
“{DESCRIBE|DESC}”:DESCRIBE语句作为SHOW COLUMNS FROM语句的一种快捷方式。
举例:查看zhangzhikai数据库中的aaa表
mysql> desc zhangzhikai.aaa;
+———-+————-+———+——-+————-+———-+
| Field | Type | Null | Key | Default | Extra |
+———-+————-+———+——-+————-+———-+
| 11 | int(11) | NO | | NULL | |
| 22 | int(11) | NO | | NULL | |
| 33 | int(11) | NO | | NULL | |
| 44 | int(11) | NO | | NULL | |
+———-+————-+———+——-+————-+———-+
4 rows in set (0.01 sec)
mysql> desc zhangzhikai.kehuxinxi;
+————-+—————+———+——-+————-+————————+
| Field | Type | Null | Key | Default | Extra |
+————-+—————+———+——-+————-+————————+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(50) | NO | | NULL | |
| sex | char(1) | NO | | 0 | |
| address | char(50) | YES | | NULL | |
| contact | char(50) | YES | | NULL | |
+————-+—————+———+——-+————-+————————+
5 rows in set (0.01 sec)

mysql> SHOW TABLES FROM mysql;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| component                 |
| db                        |
| default_roles             |
| engine_cost               |
| func                      |
| general_log               |
| global_grants             |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| password_history          |
| plugin                    |
| procs_priv                |
| proxies_priv              |
| role_edges                |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
33 rows in set (0.00 sec)
mysql> desc user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | 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                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| File_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                     |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N                     |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_client_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                     |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N                     |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |                       |       |
| ssl_cipher             | blob                              | NO   |     | NULL                  |       |
| x509_issuer            | blob                              | NO   |     | NULL                  |       |
| x509_subject           | blob                              | NO   |     | NULL                  |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0                     |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0                     |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0                     |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0                     |       |
| plugin                 | char(64)                          | NO   |     | caching_sha2_password |       |
| authentication_string  | text                              | YES  |     | NULL                  |       |
| password_expired       | enum('N','Y')                     | NO   |     | N                     |       |
| password_last_changed  | timestamp                         | YES  |     | NULL                  |       |
| password_lifetime      | smallint(5) unsigned              | YES  |     | NULL                  |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
| Create_role_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_role_priv         | enum('N','Y')                     | NO   |     | N                     |       |
| Password_reuse_history | smallint(5) unsigned              | YES  |     | NULL                  |       |
| Password_reuse_time    | smallint(5) unsigned              | YES  |     | NULL                  |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
49 rows in set (0.01 sec)