命令使用
1.命令结束符号
在书写完一个命令之后可以用以下符号结尾
- ; 或 \g
- \G
select * from student;
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 07 | 郑竹 | 1989-01-01 00:00:00 | 女 |
| 09 | 张三 | 2017-12-20 00:00:00 | 女 |
+------+-------+---------------------+------+
//是以垂直的形式展现查询数据
select * from student \G
*************************** 2. row ***************************
SId: 02
Sname: 钱电
Sage: 1990-12-21 00:00:00
Ssex: 男
*************************** 3. row ***************************
SId: 03
Sname: 孙风
Sage: 1990-12-20 00:00:00
Ssex: 男
*************************** 4. row ***************************
SId: 04
Sname: 李云
Sage: 1990-12-06 00:00:00
Ssex: 男
2. 命令可以随意换行
只要按回车键的时候输入的语句里没有 ; 或者 \g 或者 \G 就算是语句没结束
mysql> SELECT
-> NOW()
-> ;
+---------------------+
| NOW() |
+---------------------+
| 2018-02-06 17:57:15 |
+---------------------+
1 row in set (0.00 sec)
mysql>
3. 可以一次提交多个命令
可以在一条语句里写多个命令(命令之间用上面说的结束符分隔)
mysql> SELECT NOW(); SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2018-02-06 18:00:05 |
+---------------------+
1 row in set (0.00 sec)
+---------------------+
| NOW() |
+---------------------+
| 2018-02-06 18:00:05 |
+---------------------+
1 row in set (0.00 sec)
+---------------------+
mysql>
4. 使用\c清除本次操作
mysql> select now()
-> \c
mysql>
5. 大小写问题
MySQL默认对命令的大小写并没有限制
但按照一般的代码规范,命令、函数等都要大写的,而一些名称类的东西,比如数据库名,表名、列名等都是建议小写
6. 字符串的表示
在命令里有时会使用到字符串,我们可以使用单引号''或者双引号""把字符串内容引起来
mysql> SELECT 'aaa';
+-----+
| aaa |
+-----+
| aaa |
+-----+
1 row in set (0.00 sec)
mysql> SELECT "aaa";
+-----+
| aaa |
+-----+
| aaa |
+-----+
1 row in set (0.00 sec)
mysql>
数据库相关操作
展示数据库: SHOW DATABASES;
创建数据库: CREATE DATABASE 数据库名;
切换当前数据库: USE 数据库名
删除数据库: DROP DATABASE 数据库名
数据表的基本操作
创建表
MySQL中创建表的基本语法
列之间用逗号隔开,属性之间用空格隔开
CREATE TABLE 表名 (
列名1 列的类型 [列的属性],
列名2 列的类型 [列的属性],
...
列名n 列的类型 [列的属性]
);
为避免创建已经存在的表而报错,一般用IF NOT EXISTS
CREATE TABLE IF NOT EXISTS 表名(
各个列信息的定义 ...
);
CREATE TABLE student_info (
number INT,
name VARCHAR(5),
sex ENUM('男', '女'),
id_number CHAR(18),
department VARCHAR(30),
major VARCHAR(30),
enroll DATE
);
展示当前数据库中的表
SHOW TABLES;
删除表
DROP TABLE 表1, 表2, ..., 表n;
//为避免删除不存在的表而报错,用IF EXISTS
DROP TABLE IF EXISTS 表名;
列的属性(约束条件)
- 默认值
列名 列的类型 DEFAULT 默认值
- 非空约束
列名 列的类型 NOT NULL
- 主键
主键的列默认是NOT NULL,
列名 列的类型 PRIMARY KEY
或将主键单独声明 (多个列联合做主键时只能用这种方式)
PRIMARY KEY (列名1, 列名2, ...)
- 唯一性约束
对于非主键如果想让MySQL校验数据的唯一性,可以把列或列组合声明为UNIQUE的,表明该列或者列组合的值是不允许重复的,这种列的属性叫做唯一性约束
列名 列的类型 UNIQUE
列名 列的类型 UNIQUE KEY
或者
UNIQUE (列名1, 列名2, ...)
UNIQUE KEY (列名1, 列名2, ...)
主键跟唯一性约束的区别
- 一张表中只能定义一个主键,但可以多个唯一约束的键
- 主键不允许NULL值,而唯一约束的键可以为NULL.
- 自增
自增值从1开始
列名 列的类型 AUTO_INCREMENT
注意
- 一个表中最多一个递增列
- 一般整数类型定义为递增,最好用UNSIGNED修饰,浮动型不能递增
网友评论