MySQL基础学习6-表的操作

1、表的创建(建表)

语法格式:

creat table 表名(
字段名1  数据类型,
字段名2  数据类型,
字段名3  数据类型
);
表名以t_或者tbl_开始

2、mysql中的数据类型

varchar(最长255)
	可变长度的字符串,根据实际长度,动态分配空间(节省空间但速度慢)
char
	定长字符串
	不管实际的数据长度是多少,分配固定空间存储数据(使用不当浪费空间,但速度快)
varcharchar怎么选择?
    性别字段选char、姓名字段选varchar
int(最长11)
	数字中的整数型
bigint
	数字中的长整型,等同于long
float
	
double

data
	短日期类型
datatime
	长日期类型
clob
	字符大对象
	存储一篇文章、一个说明;超过255个字符的都要采用CLOB大对象来存储
blob
	二进制大对象
		专门用来存储图片、声音、视频等流媒体数据,需要用IO流

3、表的创建、删除、插入(增)

(1)创建表

create table t_student(
    -> Num int,
    -> name varchar(32),
    -> sex int(3),
    -> age int(3)
    -> );
Query OK, 0 rows affected (0.02 sec)
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| Num   | int(11)     | YES  |     | NULL    |       |
| name  | varchar(32) | YES  |     | NULL    |       |
| sex   | int(3)      | YES  |     | NULL    |       |
| age   | int(3)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

(2)删除表

drop table t_student;
drop table if exists t_student;

(3)插入数据

insert into t_student(Num,name,sex,age)
    -> values(1,'zhangsan',1, 26);
// 只插了一条数据

mysql> select * from t_student;
+------+----------+------+------+
| Num  | name     | sex  | age  |
+------+----------+------+------+
|    1 | zhangsan |    1 |   26 |
+------+----------+------+------+

		一顿insert之后
		
+------+----------+------+------+
| Num  | name     | sex  | age  |
+------+----------+------+------+
|    1 | zhangsan |    1 |   26 |
|    1 | zhangsan |    1 |   26 |
|    2 | lisi     |    0 |   86 |
|    3 | wangwu   |    1 |   27 |
+------+----------+------+------+

		非等值插入会怎么样
insert into t_student(Num)
    -> values(3);
    
mysql> select * from t_student;
+------+----------+------+------+
| Num  | name     | sex  | age  |
+------+----------+------+------+
|    1 | zhangsan |    1 |   26 |
|    1 | zhangsan |    1 |   26 |
|    2 | lisi     |    0 |   86 |
|    3 | wangwu   |    1 |   27 |
|    3 | NULL     | NULL | NULL |
+------+----------+------+------+

insert但凡执行成功,那么必然会多一条记录。

(4) 指定默认值

插入的时候,没有数据的值,都会被默认值**填充**。

(5) insert 语句中的"字段名"是可以省略的。注意:省略 == 都写上

insert into t_table values(2,'lisi','w',15,'[email protected]');

4、insert插入日期

format
select ename,format(sal,'$999,999') as sal from emp;
+--------+-------+
| ename  | sal   |
+--------+-------+
| SMITH  | 800   |
	  ......
| FORD   | 3,000 |
| MILLER | 1,300 |
+--------+-------+

str_to_date : 将字符串varchar类型转换成date类型

date_format :将date类型转换成具有一定格式的varchar类型

5.MySQL的日期格式:

%Y 年

%m 月

%d 日

%h 时

%i 分

%s 秒

(1) str_to_date :

str_to_date : 将字符串varchar类型转换成date类型数据,通常使用在插入insert方面,因为插入的时候需要一个日期类型的数据,需要通过该函数将字符串转换成date

在这里插入图片描述

好消息

如果你提供的日期字符串是这个格式,str_to_date函数就不需要了!!!

%Y-%m-%d
即:'1990-10-01'

(2) data_fromat:

查询的时候以某个特定的日期格式展示,这个函数可以将日期类型转换成特定格式的字符串。

date_format(日期类型数据, '日期格式')

在这里插入图片描述

6.date和datetime:

data 是短日期:只包括年月日信息
datetime 长日期类型:包含年月日、时分秒信息

mysql 短日期默认格式:%Y-%m-%d

mysql 长日期默认格式:%Y-%m-%d %h:%i:%s

create table t_user(
    -> id int,
    -> name varchar(32),
    -> birth date,
    -> creat_time datetime);
   
insert into t_user(id, name, birth, creat_time) values (1, 'zhangsan', '1990-10-01', '2023-7-5 20:06:15') ;
+------+----------+------------+---------------------+
| id   | name     | birth      | creat_time          |
+------+----------+------------+---------------------+
|    1 | zhangsan | 1990-10-01 | 2023-07-05 20:06:15 |
+------+----------+------------+---------------------+

insert into t_user(id, name, birth, creat_time) values (2, 'lisi', '1980-10-11', now() ;
+------+----------+------------+---------------------+
| id   | name     | birth      | creat_time          |
+------+----------+------------+---------------------+
|    1 | zhangsan | 1990-10-01 | 2023-07-05 20:06:15 |
|    2 | lisi     | 1980-10-11 | 2023-07-05 20:09:12 |
+------+----------+------------+---------------------+                                         

now() 函数可获得当前日期和时间,是datetime类型

7. updata(改):

语法格式:

​		update 表名 set 字段名1=1,   字段名2 =2, 字段名3 =3  ....  where 条件
注意:没有条件限制会全部更新
+------+----------+------------+---------------------+
| id   | name     | birth      | creat_time          |
+------+----------+------------+---------------------+
|    1 | zhangsan | 1990-10-01 | 2023-07-05 20:06:15 |
|    2 | lisi     | 1980-10-11 | 2023-07-05 20:09:12 |
+------+----------+------------+---------------------+

示例:把2的name改成jack,生日改成2000-01-11

update t_user set name='jack', birth='2000-01-11' where id = 2;

+------+----------+------------+---------------------+
| id   | name     | birth      | creat_time          |
+------+----------+------------+---------------------+
|    1 | zhangsan | 1990-10-01 | 2023-07-05 20:06:15 |
|    2 | jack     | 2000-01-11 | 2023-07-05 20:09:12 |
+------+----------+------------+---------------------+
// where好丝滑呀

8. delete(删除数据):

语法格式
	delete from 表名  where 条件;
注意:没有条件,整张表会全部删除!!!
delete from t_user where id = 3;

ack | 2000-01-11 | 2023-07-05 20:09:12 |
±-----±---------±-----------±--------------------+


#### // where好丝滑呀

### 8. delete(删除数据):

```sql
语法格式
	delete from 表名  where 条件;
注意:没有条件,整张表会全部删除!!!
delete from t_user where id = 3;

二、insert插入多条数据

1. insert插入多条数据

insert into t_user (id,name,birth,creat_time) values(3,'wangwu','1998-10-03',now()),(4,'zhaoliu','1987-12-13',now()),(5,'chenwu','2018-05-13',now());

+------+----------+------------+---------------------+
| id   | name     | birth      | creat_time          |
+------+----------+------------+---------------------+
|    1 | zhangsan | 1990-10-01 | 2023-07-05 20:06:15 |
|    2 | jack     | 2000-01-11 | 2023-07-05 20:09:12 |
|    3 | wangwu   | 1998-10-03 | 2023-07-06 17:03:44 |
|    4 | zhaoliu  | 1987-12-13 | 2023-07-06 17:03:44 |
|    5 | chenwu   | 2018-05-13 | 2023-07-06 17:03:44 |
+------+----------+------------+---------------------+

2. 快速创建一张完整表

create table  emp2 as select * from emp;
原理:
将第一个查询结果当做一张表新建!完成表的快速复制

3. 快速创建部分表

create table mytable as select empno,ename from emp where job = 'MANAGER';
+-------+-------+
| empno | ename |
+-------+-------+
|  7566 | JONES |
|  7698 | BLAKE |
|  7782 | CLARK |
+-------+-------+

4. 快速删除表中的数据

delete from mytable;

# Empty set (0.00 sec)

表中的数据被删除了,但是这个数据在硬盘上的空间不会被释放,还可以回滚。

物理删除

效率较高,删的彻底,但无法恢复。

truncate table 表名

大表非常大,上亿条记录,delete一小时,truncate一秒钟

和删除表的指令不一样,删除表是

drop table 表名

你可能感兴趣的:(MySQL学习笔记,mysql,学习,android)