- 数据表
- 必须要有表结构,一定要有列.help +关键字 查找帮助
- 必须要有表结构,一定要有列.help +关键字 查找帮助
- 创建数据表
- CREATE TABLE [IF NOT EXISTS ] tbl_name(字段名称 字段类型 [完整的约束条件]...)ENGINE=引擎名称 CHARSET='编码方式';
- mysql中的数据类型
- 整数类型:TINYINT :1. SMALLINT :2.MEDIUMING:3.INT:4.BIGINT:8. BOOL,BOOLEAN.
- 浮点数:FLOAT;DOUBLE;DECIMAL;
- 字符串:CHAR(M);定长; VARCHAR(M):变长 ;,TINYEXT,TEX,ENUM('' '' ,'' '');SET(" "," ");//集合
- 日期时间:TIME;DATA;YEAR;
- 二进制类型。
- Mysql存储引擎
- 就是表的类型
- 查看存储引擎
- 查看存储引擎:SHOW ENGINES
- 查看显示支持的存储引擎:SHOW VARIABLES LIKE 'have%'
- 查看默认的存储引擎:SHOW VARIABLES LIKE 'storage_engine' Inno_db
mysql> SHOW ENGINES; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.00 sec) mysql> SHOW VARIABLES LIKE 'have%'; +------------------------+----------+ | Variable_name | Value | +------------------------+----------+ | have_compress | YES | | have_crypt | NO | | have_dynamic_loading | YES | | have_geometry | YES | | have_openssl | DISABLED | | have_profiling | YES | | have_query_cache | YES | | have_rtree_keys | YES | | have_ssl | DISABLED | | have_statement_timeout | YES | | have_symlink | YES | +------------------------+----------+ 11 rows in set, 1 warning (0.00 sec) mysql> SHOW VARIABLES LIKE 'storage_engine'; Empty set, 1 warning (0.00 sec)
- mysql常用的存储引擎
- InnoDB(默认)
- 事物,并发控制的安全,支持频繁删除,回滚
- 支持外键约束
- 创建表结构存储在一个.fim文件中
- 读取,读写效率低,占用空间大
- MyISAM(用于插入和读取,不支持事物)
- 表会变成三个文件。fim存储表结构,mid存储数据,myi存储索引。
- 支持动态,静态(默认的),压缩型。
- 占用存储空间小,处理速度快;没有事物处理,没有innode的第一个优点
- MEMORY(一般不用)
- InnoDB(默认)
- 创建数据表
-
创建数据表,首先得有一个数据库,然后再在里面建表
#注释 创建麦子数据库 mysql> CREATE DATABASE IF NOT EXISTS maizi DEFAULT CHARACTER SET 'UTF8'; Query OK, 1 row affected (0.02 sec)--创建学员表
--编号id
--用户名username
--年龄age
--性别sex
--邮箱email
--地址addr
--生日birth
--薪水salary
--电话tel
--是否结婚
--注意:当需要输入中文的时候,需要临时转换客户端的编码方式
-- SET NAMES GBK;从当前连接开始到关闭时都有效,这个编码方式--字段注释 :通过COMMENT+注释内容 给字段添加注释
USE maizi; 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, 1 warning (0.30 sec) - 查看数据表
-
mysql> SHOW TABLES; +-----------------+ | Tables_in_maizi | +-----------------+ | user | +-----------------+
-
USE maizi;//首先必须使用一个数据库来建立一个表 CREATE TABLE IF NOT EXISTS course( cid TINYINT, couseName VARCHAR(50), courseDesc VARCHAR(200) );
-
- 查看数据库中的数据表以及表结构
- 查看数据库下的表:SHOW TABLES
- 查看指定表的表结构
- 三种方式:
DESC cms_news;
DESCRIBE cms_news;
SHOW COLUMNS FROM 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 | | +----------+-------------+------+-----+---------+-------+
- 三种方式:
- 测试
- 测试整型
mysql> CREATE TABLE test1(--测试整型 -> num1 TINYINT, -> num2 SMALLINT, -> num3 MEDIUMINT, -> num4 INT, -> num5 BIGINT -> ); Query OK, 0 rows affected (0.38 sec) mysql> DESC test1;--显示表结构 +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | num1 | tinyint(4) | YES | | NULL | | | num2 | smallint(6) | YES | | NULL | | | num3 | mediumint(9) | YES | | NULL | | | num4 | int(11) | YES | | NULL | | | num5 | bigint(20) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+
- 插入数据检测数据
mysql> INSERT test1 VALUES(-128,-32768,-8388608,-213124124,-213123);--插入数据 Query OK, 1 row affected (0.19 sec) mysql> DESC test1;--查看表结构 +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | num1 | tinyint(4) | YES | | NULL | | | num2 | smallint(6) | YES | | NULL | | | num3 | mediumint(9) | YES | | NULL | | | num4 | int(11) | YES | | NULL | | | num5 | bigint(20) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 5 rows in set (0.00 sec) mysql> INSERT test1 VALUES(-129,-32768,-8388608,-213124124,-213123);--数据范围超出,失败 ERROR 1264 (22003): Out of range value for column 'num1' at row 1 mysql> SELECT * FROM test1;--搜索表数据 +------+--------+----------+------------+---------+ | num1 | num2 | num3 | num4 | num5 | +------+--------+----------+------------+---------+ | -128 | -32768 | -8388608 | -213124124 | -213123 | +------+--------+----------+------------+---------+
- 无符号和有符号笔较
CREATE TABLE test2(--无符号 UNSIGNED -> num1 TINYINT UNSIGNED, -> num2 TINYINT -> ); INSERT test2 VALUES(0,-12); SELECT * FROM test2; +------+------+ | num1 | num2 | +------+------+ | 0 | -12 | +------+------+
- 零填充 ZEROFILL tinyint(4)括号中的表示显示长度,我们在一个类型后面加上一个零填充,就会让该数据变成无符号的,而且它会自动的补充0
> CREATE TABLE test3( -> num1 TINYINT ZEROFILL, -> num2 SMALLINT ZEROFILL, -> num3 MEDIUMINT ZEROFILL, -> num4 INT ZEROFILL, -> num5 BIGINT ZEROFILL -> ); INSERT test3 VALUES(1,1,1,1,1); mysql> SELECT * FROM test3; +------+-------+----------+------------+----------------------+ | num1 | num2 | num3 | num4 | num5 | +------+-------+----------+------------+----------------------+ | 001 | 00001 | 00000001 | 0000000001 | 00000000000000000001 | +------+-------+----------+------------+----------------------+
- 浮点数的测试
- 都是四舍五入的数据。
> CREATE TABLE test4( -> num1 FLOAT(6,2),--前面两个都是四舍五入的 -> num2 DOUBLE(6,2), -> num3 DECIMAL(6,2)--这个是精度很高的,是用字符串保存的 -> ); INSERT test4 VALUES(3.1415,3.1415,3.1415); SELECT * FROM test4; +------+------+------+ | num1 | num2 | num3 | +------+------+------+ | 3.14 | 3.14 | 3.14 | +------+------+------+
- 都是四舍五入的数据。
- 字符串的测试
- CHAR(M):M表示的字符的存储数,范围0-255 定长字符串(占用大小固定),速度比较快
VARCHAR(M):变长的字符串(占用的空间小,速度比较慢)CREATE TABLE IF NOT EXISTS test5( str1 CHAR(5),5表示字符的长度,定长 str2 VARCHAR(5) 这是变长 ); INSERT test5 VALUES('1','1'); INSERT test5 VALUES('12345','12345'); INSERT test5 VALUES('123456','123456'); INSERT test5 VALUES('1 ','1 ');CHAR后面的空格会被去掉,VARCHAR会被去掉 INSERT test5 VALUES(' a ',' a ');字符串开始的空格都会被留下 INSERT test5 VALUES(' 付志强 ',' 哈哈哈 ');插入字符串 mysql> SELECT * FROM test5; +-------------+-------------+ | str1 | str2 | +-------------+-------------+ | 1 | 1 | | 12345 | 12345 | | 1 | 1 | | a | a | | 付志强 | 哈哈 | | 付志强 | 哈哈哈 | +-------------+-------------+
- TEXT不怎么使用,速度是最慢的和上面两个进行比较。
-
CREATE TABLE IF NOT EXISTS test8(--枚举可以有多个值,但是只能最多存储64个值 fav SET('a','b','c','d') ); INSERT test8 VALUES('a,b,c'); INSERT test8 VALUES('a,d,c'); mysql> SELECT * FROM test8; +-------+ | fav | +-------+ | a,b,c | | a,b,c | | a,c,d | +-------+
- CHAR(M):M表示的字符的存储数,范围0-255 定长字符串(占用大小固定),速度比较快
- 测试整型