MySQL学习笔记 -- 数据表的基本操作
数据库是一个可以存放数据库对象的容器,数据库对象包括:表、视图、存储过程、函数、触发器、事件。其中,表是数据库最基本的元素,是其他数据库对象的前提条件。
表中的一列称为一个字段,一行称为一条记录。
1.数据表的创建、查看数据表、查看数据表结构
mysql> CREATE DATABASE test1;
Query OK, 1 row affected (0.02 sec)
mysql> USE test1;
Database changed
mysql> CREATE TABLE table1(
-> id SMALLINT UNSIGNED,
-> username VARCHAR(20),
-> age TINYINT
-> );
Query OK, 0 rows affected (0.40 sec) mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test1 |
+--------------------+
5 rows in set (0.00 sec) mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| test1 |
+------------+
1 row in set (0.00 sec) mysql> SHOW TABLES;
+-----------------+
| Tables_in_test1 |
+-----------------+
| table1 |
+-----------------+
1 row in set (0.00 sec) mysql> SHOW COLUMNS FROM table1;
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+----------+----------------------+------+-----+---------+-------+
3 rows in set (0.00 sec) mysql> DESCRIBE table1;
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+----------+----------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
2.数据表的删除 DROP TABLE table_name;
mysql> USE test1;
Database changed
mysql> SHOW TABLES;
+-----------------+
| Tables_in_test1 |
+-----------------+
| table1 |
| tb2 |
+-----------------+
2 rows in set (0.00 sec) mysql> DROP TABLE tb2;
Query OK, 0 rows affected (0.20 sec) mysql> DESCRIBE tb2;
ERROR 1146 (42S02): Table 'test1.tb2' doesn't exist
3.插入记录、查看记录 INSERT table_name [(col_name, ...)] VALUES(...);
mysql> SHOW COLUMNS FROM table1;
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+----------+----------------------+------+-----+---------+-------+
3 rows in set (0.00 sec) mysql> INSERT table1 VALUES(5,'Tom',22);
Query OK, 1 row affected (0.05 sec) mysql> INSERT table1 (id,username) VALUES(5,'Tom');
Query OK, 1 row affected (0.10 sec) mysql> SELECT * FROM table1;
+------+----------+------+
| id | username | age |
+------+----------+------+
| 5 | Tom | 22 |
| 5 | Tom | NULL |
+------+----------+------+
2 rows in set (0.00 sec)
4.字段的空值与非空 NULL,NOT NULL
mysql> CREATE TABLE table2(
-> username VARCHAR(20) NOT NULL,
-> #NULL可加可不加,不加默认可以为空#
-> age TINYINT
-> );
Query OK, 0 rows affected (0.25 sec) mysql> SHOW COLUMNS FROM table2;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | NO | | NULL | |
| age | tinyint(4) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec) mysql> INSERT table2 VALUES(NULL,25);
ERROR 1048 (23000): Column 'username' cannot be null
5.主键约束与自动编号 PRIMARY KEY,AUTO_INCREMENT
※ 一张数据表只能存在一个主键
※ 主键能保证记录的唯一性
※ 主键自动为NOT NULL
※ AUTO_INCREMENT只能配合PRIMARY KEY使用,不能单独使用。PRIMARY KEY可以单独使用。
mysql> CREATE TABLE table3(
-> id SMALLINT PRIMARY KEY AUTO_INCREMENT,
-> username VARCHAR(20)
-> );
Query OK, 0 rows affected (0.32 sec) mysql> DESCRIBE table3;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | smallint(6) | NO | PRI | NULL | auto_increment |
| username | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec) mysql> INSERT table3 (username) VALUES('XingyaZhao');
Query OK, 1 row affected (0.05 sec) mysql> INSERT table3 (username) VALUES('XuebiBaby');
Query OK, 1 row affected (0.06 sec) mysql> INSERT table3 VALUES(4,'David');
Query OK, 1 row affected (0.07 sec) mysql> INSERT table3 (username) VALUES('Somebody');
Query OK, 1 row affected (0.09 sec) mysql> SELECT * FROM table3;
+----+------------+
| id | username |
+----+------------+
| 1 | XingyaZhao |
| 2 | XuebiBaby |
| 4 | David |
| 5 | Somebody |
+----+------------+
4 rows in set (0.00 sec)
mysql> CREATE TABLE table4(
-> id SMALLINT UNSIGNED PRIMARY KEY,
-> username VARCHAR(20)
-> );
Query OK, 0 rows affected (0.30 sec) mysql> SHOW COLUMNS FROM table4;
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | NO | PRI | NULL | |
| username | varchar(20) | YES | | NULL | |
+----------+----------------------+------+-----+---------+-------+
2 rows in set (0.00 sec) mysql> INSERT table4 VALUES(6,'ChuanDao');
Query OK, 1 row affected (0.07 sec) mysql> INSERT table4 VALUES(3,'Pigiu');
Query OK, 1 row affected (0.04 sec) mysql> INSERT table4 VALUES(3,'York');
ERROR 1062 (23000): Duplicate entry '' for key 'PRIMARY'
mysql> SELECT * FROM table4;
+----+----------+
| id | username |
+----+----------+
| 3 | Pigiu |
| 6 | ChuanDao |
+----+----------+
2 rows in set (0.00 sec)
6.唯一约束 UNIQUE KEY
※ 唯一约束可以保证某个字段中每个记录的唯一性
※ 唯一约束的字段可以为空值
※ 每张数据表可以存在多个唯一约束
mysql> CREATE TABLE table5(
-> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> username VARCHAR(20) NOT NULL UNIQUE KEY,
-> age TINYINT UNSIGNED NOT NULL
-> );
Query OK, 0 rows affected (0.60 sec) mysql> SHOW COLUMNS FROM table5;
+----------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+----------------+
| id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(20) | NO | UNI | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
+----------+----------------------+------+-----+---------+----------------+
3 rows in set (0.02 sec) mysql> INSERT table5 (username,age) VALUES('XingyaZhao',22);
Query OK, 1 row affected (0.05 sec) mysql> INSERT table5 (username,age) VALUES('XuebiBaby',21);
Query OK, 1 row affected (0.07 sec) mysql> INSERT table5 (username,age) VALUES('XingyaZhao',18);
ERROR 1062 (23000): Duplicate entry 'XingyaZhao' for key 'username' mysql> SELECT * FROM table5;
+----+------------+-----+
| id | username | age |
+----+------------+-----+
| 1 | XingyaZhao | 22 |
| 2 | XuebiBaby | 21 |
+----+------------+-----+
3 rows in set (0.00 sec)
7.默认约束 DEFAULT
mysql> CREATE TABLE table6(
-> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> username VARCHAR(20) NOT NULL UNIQUE KEY,
-> age TINYINT UNSIGNED DEFAULT 20
-> );
Query OK, 0 rows affected (0.29 sec) mysql> DESCRIBE table6;
+----------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+----------------+
| id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(20) | NO | UNI | NULL | |
| age | tinyint(3) unsigned | YES | | 20 | |
+----------+----------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec) mysql> INSERT table6 (username) VALUES('Xingya');
Query OK, 1 row affected (0.08 sec) mysql> INSERT table6 (username) VALUES('Jude');
Query OK, 1 row affected (0.05 sec) mysql> INSERT table6 (username,age) VALUES('Tom',21);
Query OK, 1 row affected (0.08 sec) mysql> SELECT * FROM table6;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | Xingya | 20 |
| 2 | Jude | 20 |
| 3 | Tom | 21 |
+----+----------+------+
3 rows in set (0.00 sec)
8.外键约束 FOREIGN KEY
※ 父表和子表必须使用相同的存储引擎 InnoDB
※ 外键列和参照列必须具有相似的数据类型。其中数字的长度和是否有符号位必须相同;而字符的长度可以不同。
※ 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
mysql> CREATE TABLE provinces(
-> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> pname VARCHAR(20) NOT NULL
-> );
Query OK, 0 rows affected (0.49 sec) mysql> CREATE TABLE users(
-> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> username VARCHAR(20) NOT NULL,
-> pid SMALLINT UNSIGNED,
-> FOREIGN KEY (pid) REFERENCES provinces (id)
-> );
Query OK, 0 rows affected (0.34 sec) mysql> SHOW INDEXES FROM provinces\G
*************************** 1. row ***************************
Table: provinces
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.00 sec) mysql> SHOW INDEXES FROM users\G
*************************** 1. row ***************************
Table: users
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: users
Non_unique: 1
Key_name: pid
Seq_in_index: 1
Column_name: pid
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
2 rows in set (0.00 sec)
MySQL学习笔记 -- 数据表的基本操作的更多相关文章
- MySQL学习3 - 数据表的操作
本节掌握 一.存储引擎(了解) 二.mysql支持的存储引擎 1.InnoDB 存储引擎 2.MyISAM 存储引擎 3.NDB 存储引擎 4.Memory 存储引擎 5.Infobright 存储引 ...
- mysql学习笔记02 表的操作
创建数据表create table table_name(//定义表的列的结构)创建表 先分析需要保存的实体数据,荣有哪些属性,这些属性应该有哪些属性列的定义 列名 列的数据类型 {} 进行表操作时 ...
- Mysql——数据库和数据表的基本操作
/*创建数据库--- CREATE DATABASE 数据库名;*/ CREATE DATABASE itschool; /*查看已经存在的数据库*/ SHOW DATABASES; /*查看某个已创 ...
- mysql学习笔记-- 多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
- MySQL学习笔记——多表连接和子查询
多表连接查询 # 返回的是两张表的乘积 SELECT * FROM tb_emp,tb_dept SELECT COUNT(*) FROM tb_emp,tb_dept # 标准写法,每个数据库都能这 ...
- mysql学习笔记--数据操作
一.插入数据 1. 语法:insert into 表名 (字段名.字段名,...) values (值1,值2...) 2. 注意: a. 插入字段的个数和顺序与值的个数和顺序必须一致 b. 通过de ...
- MySql 学习笔记 (派生表)
派生表也是一种子查询那么它出现在 select * from ( select * from b <--这个就是派生表啦 )派生表其实不是个好东西,在生产的时候他是可以通过索引来过滤的,但是一但 ...
- mysql学习笔记--数据库内置函数
一.数字类 1. 生成随机数:rand() a. 随机抽取2位 select * from stuinfo order by rand() limit 2 2. 四舍五入:round(数字) 3. 向 ...
- MySQL学习笔记02_数据库和表的基本操作
02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...
随机推荐
- 数据库中GETDATE()函数格式化时间
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2016 10:57AM SELECT CONVERT(varchar(100), GETDATE( ...
- ECMAScript6学习笔记 ——let、const、变量解构赋值
let 不存在变量提升 通过let声明的变量仅在块级作用域内有效 不允许在同一个作用域内重复声明一个变量 防止值公用 var oUl = document.querySelectorAll('ul&g ...
- Wireshark图解教程(简介、抓包、过滤器)
开篇语 Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息.与很多其他网络工具一样,Wireshark也使用pcap netw ...
- centos6.5 下搭建lamp环境
一直以为很麻烦,实际操作起来并没有遇到什么问题,yum源是163,php版本是5.3(有点老,以后再更新吧):详细步骤如下: 第一步:安装php mysql apache yum -y install ...
- 前端学php之常量
× 目录 [1]定义常量 [2]常量检测 [3]系统常量[4]魔术常量 前面的话 常量在javascript中并不存在,在php中却是与变量并列的重要内容.常量类似变量,但常量一旦被定义就无法更改或撤 ...
- 深入理解this机制系列第三篇——箭头函数
× 目录 [1]痛点 [2]解决 [3]基本用法[4]回调函数[5]注意事项 前面的话 this机制与函数调用有关,而作用域则与函数定义有关.有没有什么是可以将this机制和作用域联系起来的呢?本文将 ...
- 简单java在线测评程序
简单java程序在线测评程序 一.前言 大家过年好!今年的第一篇博客啊!家里没有网,到处蹭无线!日子过得真纠结!因为毕设的需求,简单写了一个java程序在线测评程序,当然也可以在本地测试. 二.思路 ...
- Web前端上万字的知识总结
下面是自己学HTML+DIV+CSS+JS时的学习笔记,给大家分享以下,相互学习.大二时候寒假在家无聊的时候想做点事,总结了一下web前端基础的东西,下面的每个字都是自己手敲的. 1.<html ...
- 扩展KMP算法
一 问题定义 给定母串S和子串T,定义n为母串S的长度,m为子串T的长度,suffix[i]为第i个字符开始的母串S的后缀子串,extend[i]为suffix[i]与字串T的最长公共前缀长度.求出所 ...
- 如何利用脚本实现MySQL的快速部署以及一机多实例的部署
MySQL有三个版本:二进制,源码包,RPM. 下面讲讲二进制包的安装过程 下载地址: http://dev.mysql.com/downloads/mysql/ 选择Linux-Generic 我这 ...