1、什么是表?
数据表是数据库最重要的组成部分之一,是其他对象的基础。
数据表示存储数据的数据结构。
数据表包含了特定·试题类型烦人的数据。
数据表有行(row)和列(column)构成烦人二维网络。
数据表一定现有表结构,再有数据。
数据表至少有一列,可以没有行或者多行。
数据表名称要求唯一,而且不要包含特殊字符。
2、创建数据表 详细语法:
1 2 3 4 CREATE TABLE [IF NOT EXISTS ] tbl_name(字段名称 字段类型 [完整性约束条件] ... )ENGINE =引擎名称 CHARSET ='编码方式' ;
完整性约束条件:
名称
含义
PRIMARY KEY
主键
AUTO_INCREMENT
自增长
FOREIGN KEY
外键
NOT NUL
非空
UNIQUE KEY
唯一
DEFAULT
默认值
注:MySQL中的注释: 1)# 我是注释 2)-- 我也是注释
我们创建一个学员表(user)其中包括:
编号 id
用户名 username
年龄 age
性别 sex
邮箱 email
地址 addr
生日 birth
薪水 salary
电话 tel
是否结婚 married
SQL语句:
1 2 3 4 5 6 7 8 9 10 11 12 CREATE TABLE IF NOT EXISTS `user` (id SMALLINT ,username VARCHAR (20 ), age TINYINT, sex ENUM('男' ,'女' ,'保密' ), email VARCHAR (50 ), ADDR VARCHAR (200 ), birth YEAR , salary FLOAT (8 ,2 ), tel INT , married TINYINT(1 ) COMMENT '0代表未结婚,非0代表已婚' )ENGINE =INNODB CHARSET =UTF8;
在我们创建表的时候必须先知道数据库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 mysql> USE demo1; Database changed mysql> CREATE TABLE IF NOT EXISTS `user`( -> id SMALLINT, -> username VARCHAR(20), -> age TINYINT, -> sex ENUM('男','女','保密'), -> email VARCHAR(50), -> ADDR VARCHAR(200), -> birth YEAR, -> salary FLOAT(8,2), -> tel INT, -> married TINYINT(1) COMMENT '0代表未结婚,非0代表已婚' -> )ENGINE=INNODB CHARSET=UTF8; Query OK, 0 rows affected (0.03 sec) mysql>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 # 创建一个新闻分类表 CREATE TABLE IF NOT EXISTS `cms_cate` (id TINYINT,cateName VARCHAR (50 ), cateDesc VARCHAR (200 ) )ENGINE =MyISAM CHARSET =UTF8; ``` ```SQL # 创建一个新闻表 CREATE TABLE IF NOT EXISTS `cms_news` (id INT , # 编号title VARCHAR (50 ), #标题 content TEXT , # 新闻内容pubTime INT , # 新闻发布时间 clickNum INT , # 点击量 isTop TINYINT(1 ) COMMENT '0代表不置顶,1代表置顶' #是否置顶 ); ``` 注:当需要输入中文时,要临时转换编码方式`SET NAMES GBK`,只对当前连接有效。 注:字段注释,通过` COMMENT `注释内容 给字段添加注释 ### 3、查看数据库下的表 ` `` SQL mysql> SHOW TABLES ; + | Tables_in_demo1 | + | user | + 1 row in set (0.00 sec) mysql>
4、查看指定表的表结构
DESC tab_name
DESCRIBE tbl_name
SHOW COLUMNS FROM tbl_name
1 2 3 4 5 6 7 8 9 10 11 12 13 14 mysql> DESC cms_news; mysql> # DESCRIBE cms_news; mysql> # SHOW COLUMNS FROM cms_news; + | Field | Type | Null | Key | Default | Extra | + | id | int(11) | YES | | NULL | | | title | varchar(50) | YES | | NULL | | | content | text | YES | | NULL | | | pubTime | int(11) | YES | | NULL | | | clickNum | int(11) | YES | | NULL | | | isTop | tinyint(1) | YES | | NULL | | + 6 rows in set (0.01 sec)
5、修改表 修改表内容略多,在下一篇文章介绍。
6、删除表 当某个表不想用的时候我们可以删除,但是删除表后数据就都没有了,所以做删除操作的时候要谨慎!
1 DROP TABLE [IF EXISTS ] tbl_name[,tbl_name...]
我们先创建一个test
表,再删除:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 mysql> CREATE TABLE test( -> id INT -> ); Query OK, 0 rows affected (0.04 sec) mysql> show tables; + | Tables_in_demo1 | + | cms_cate | | cms_news | | test | | user | + 5 rows in set (0.00 sec) mysql> DROP TABLE test ; Query OK, 0 rows affected (0.01 sec) mysql> show tables; + | Tables_in_demo1 | + | cms_cate | | cms_news | | user | + 4 rows in set (0.00 sec)
7、在登录时直接打开数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Sing-2:~ Sing$ mysql -uroot -p -D demo1 Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 27 Server version: 5.7.19 MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help ;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SELECT DATABASE (); + | DATABASE() | + | demo1 | + 1 row in set (0.00 sec)