4.1创建数据库

4.1.1创建数据库

  1. 我们可以使用以下命令来创建数据库<br /> **语法:**
create database  数据库名;

4.2.1确认创建的数据库

     我们可以通过show 命令来查看创建的数据<br />      语法:

show databases;

4.1.3指定使用的数据库

mysql中并不是启动后就能立即使用数据库,还需要显示的声明使用什么数据库<br />    **  语法:**

use 数据库名

 ** 显示当前使用的数据库:**<br />      我们可以通过select database();来查看当前使用的数据库

4.2 创建表

4.2.1创建数据表:

  我们可以通过create table 命令来创建表<br />** 语法:**

create table 表明(列名1 数据类型1,列名2 数据类型2.。。。);

示列:创建员工信息表tb1:

mysql> create table tb1(empid varchar(10),name varchar(10),age int)charset=utf8;
Query OK, 0 rows affected (0.02 sec)

注意:当存在同名的表时会发送错误 ,不会替换之前存在的表

4.2.2显示所有表

显示数据库中所有的表需要使用show tabels;

4.2.3确认表的列结构

用于显示表的接口的命令是desc或describe,使用前者即可
语法:

desc 表名

示列:显示tb1表的列结构

mysql> desc tb1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| empid | varchar(10) | YES  |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql>

4.2.4设置主键

    1.**主键**:<br />         是在多条记录中确定唯一一条记录的标识符<br />         2.**主键需具备一下特征:**<br />             1.没有重复的值<br />              2.不允许空值<br /> 3.**创建主键:**<br />      在创建表的时候创建主键<br />**    语法:**

create tbale 表名 (列名 数据类型 primary key…)

示列:创建带主键的表

mysql> ;create table t_pk(a int primary key,b varchar(10));
ERROR:
No query specified

Query OK, 0 rows affected (0.01 sec)

mysql> desc t_pk;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a     | int(11)     | NO   | PRI | NULL    |       |
| b     | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql>
  在设置为主键的列中,不能使用insert update 命令输入已经存在的值

4.2.5设置唯一键

 我们还可以使用unique来设置具有不重复限制性质的唯一键,虽然不允许有重复,但允许输入null;<br /> **  示列:**
mysql> create table t_uniq(a int unique,b varchar(10));
Query OK, 0 rows affected (0.03 sec)
mysql> desc t_uniq;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a     | int(11)     | YES  | UNI | NULL    |       |
| b     | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql>


4.3向表中插入数据

4.3.1插入数据

    我们可以使用下面的命令来向表中插入数据<br />      **语法**

insert into 表名 (列1,列2)values (数据1,数据2,数据3);

 **  示列一:向tb1表中插入数据**<br /> 
mysql> insert into tb1 values('A1004','渡边',23);
Query OK, 1 row affected (0.00 sec)
mysql>
   <br />      ** 示列二:一次性输入多行记录**
mysql> insert into tb1 (empid,name,age)values('A101','佐藤',40),('A102','高桥',28),('A103','中川',20),('A104','渡边',23),('A105','西泽',35);
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select *from tb1;
+-------+------+------+
| empid | name | age  |
+-------+------+------+
| A101  | 佐藤 |   40 |
| A102  | 高桥 |   28 |
| A103  | 中川 |   20 |
| A104  | 渡边 |   23 |
| A105  | 西泽 |   35 |
+-------+------+------+
5 rows in set (0.00 sec)

mysql>

4.4显示数据

使用select命令能让列的数据显示出来
语法:

select 列名1,列名2…from 表名

一个个的指定列名有点麻烦,通常会用*来代表全部列名。

使用select输出指定的值

select命令还能用于显示与数据库无关的值,这种方法通常用来确认函数的值或计算结果
示列:

mysql> select '测试';
+------+
| 测试 |
+------+
| 测试 |
+------+
1 row in set (0.00 sec)
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2021-05-31 14:19:26 |
+---------------------+
1 row in set (0.00 sec)
mysql>

4.5使用列具有自动连续编号功能

4.5.1具有自动连续编号功能列的定义:

    要使列具有自动连续编号功能,就得在定义列的时候进行3项设置<br />       1.数据类型为int等整数类型<br />       2.加上 AUTO_INCREMENT<br />       3.设置 Primary key,使列具有唯一性<br />**   示列:创建具有自动连续编号的列**<br />  
mysql> create table t_series (a int auto_increment primary key,b varchar(10));
Query OK, 0 rows affected (0.01 sec)

mysql> desc t_series;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| a     | int(11)     | NO   | PRI | NULL    | auto_increment |
| b     | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql>

4.5.2设置连续编号的初始值

         拥有自动连续编号功能的列还可以设置任意的值<br />            1.初始化AUTO_INCREMENT的值<br />              如果向有自动连续便号的列中添加了值,当把这些值删除之后,如果在重写输入数据呢,则编码不会从1开始分配,而是从已有的最大值+1开始     
mysql> insert into t_series (b)values('aa'),('bb'),('cc');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select* from t_series;
+---+------+
| a | b    |
+---+------+
| 1 | aa   |
| 2 | bb   |
| 3 | cc   |
+---+------+
3 rows in set (0.00 sec)
mysql> delete from t_series;
Query OK, 3 rows affected (0.00 sec)
mysql> insert into t_series (b) values ('cc');
Query OK, 1 row affected (0.00 sec)
mysql> select* from t_series;
+---+------+
| a | b    |
+---+------+
| 4 | cc   |
+---+------+
1 row in set (0.00 sec)
mysql>
  如果想让编号重1开始就要初始化Auto_inccrement的值<br />        语法

alter table 表明 AUTO_INCREMRNT=1;

示列:

mysql> delete from t_series;
Query OK, 2 rows affected (0.00 sec)
mysql> alter table t_series auto_increment=1;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> insert into t_series (b) values ('cc');
Query OK, 1 row affected (0.00 sec)

mysql> select* from t_series;
+---+------+
| a | b    |
+---+------+
| 1 | cc   |
+---+------+
1 row in set (0.00 sec)

mysql>

4.6设置列的默认值

       在设置列的默认值时只需要给列加上default关键字<br />     **语法**

create table 表名(列名 数据类型 default 默认值);

示列:想tb1中name列设置默认值

mysql> alter table tb1 modify name varchar(10) default  '未输入名字';
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> insert into tb1 (empid ,age)values('N110',25);
Query OK, 1 row affected (0.00 sec)

mysql> select * from tb1;
+-------+------------+------+
| empid | name       | age  |
+-------+------------+------+
| A101  | 佐藤       |   40 |
| A102  | 高桥       |   28 |
| A103  | 中川       |   20 |
| A104  | 渡边       |   23 |
| A105  | 西泽       |   35 |
| N110  | 未输入名字 |   25 |
+-------+------------+------+
6 rows in set (0.00 sec)

mysql>