SQL学习笔记 -- DDL和DML语句

目录

一、MySQL数据类型

二、DDL(数据定义语言)

1、表的创建 create

2、删除表 drop

3、修改 alter

4、快速删除表中数据 truncate

delete 和 truncate 删除数据的区别

三、DML(数据操作语言)

1、插入数据 insert

① 数字格式化:format

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

③ date_format:

insert 可以一次添加多条数据

2、删除数据 delete

3、修改 update

四、快速建立新表

1、复制表格

 2、将查询结果存储为新表


一、MySQL数据类型

二、DDL(数据定义语言)

1、表的创建 create

建表的语法形式:

        create table 表名(
                字段名1 数据类型,
                字段名2 数据类型,
                字段名3 数据类型
         );

案例:建立一张学生表(学号、姓名、性别、年龄、邮箱)

create table t_student(
        no int,
        name varchar(32),
        sex char(1),
        age int(3),
        email varchar(255)
);

2、删除表 drop

如果不存在该表,会报错;如果要删除的表存在,则会删除。

drop table t_student;

3、修改 alter

(测试不需要学习修改表的结构,工作量大,属于开发的工作范畴)

4、快速删除表中数据 truncate

(属于DDL操作)

删除表:drop (删除整个表)

删除数据:delete,truncate  (只删除数据,表还存在)

delete 和 truncate 删除数据的区别

delete:

  • 表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!!!
  • 优点:支持回滚,后悔了可以再恢复数据!!!
  • 缺点:删除效率比较低

truncate:

  • 效率比较高,删除数据是物理删除。
  • 优点:快速。
  • 缺点:不支持回滚
truncate table dept_bak;

三、DML(数据操作语言)

1、插入数据 insert

语法格式:

                insert into 表名(字段名1,字段名2,字段名3...) values(值1,值2,值3);

注意:

  • insert语句但凡是执行成功了,那么必然会多一条记录。
  • 没有给其它字段指定值的话,默认值是NULL
insert into t_student(no,name,sex,age,email) values(1,'zhangfei','m',20,'zhangfei@123.com');
insert into t_student(no,name,sex,age,email) values(2,'xiaojuan','w',19,'xiaojuan@123.com');
insert into t_student(name) values('xiaoming');
insert into t_student(no) values(4);

 注意:insert语句前面的字段名可以省略,字段名省略代表都写上了,所以值也要都写上。

insert into t_student value(5,'lily','w',18,'lily@123.com');

① 数字格式化:format

语法:format(数字, '格式')

select ename,format(sal, '$999,999') as sal from emp;

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

注意:数据库中的有一条命名规范:
        所有的标识符都是全部小写,单词和单词之间使用下划线进行衔接。

mysql的日期格式:

  • %Y    年
  • %m   月
  • %d    日
  • %h    时
  • %i     分
  • %s    秒

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

mysql> create table t_user(
    -> id int,
    -> name varchar(32),
    -> birth date);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into t_user(id,name,birth) values(1,'lily','2022-01-01');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t_user(id,name,birth) values(1,'lisa','01-02-2022');
ERROR 1292 (22007): Incorrect date value: '01-02-2022' for column 'birth' at row 1

mysql> insert into t_user(id,name,birth) values(1,'lisa',str_to_date('01-02-2022','%d-%m-%y'));
ERROR 1292 (22007): Truncated incorrect date value: '01-02-2022'

mysql> insert into t_user(id,name,birth) values(1,'lisa',str_to_date('01-02-2022','%d-%m-%Y'));
Query OK, 1 row affected (0.00 sec)

查询的时候可以以某个特定的日期格式展示吗?可以

③ date_format:

  • 将date类型转换成具有一定格式的varchar字符串类型。
  • 这个函数通常使用在查询日期方面。设置展示的日期格式。
  • 语法格式:date_format(日期类型数据, '日期格式')
mysql> select id,name,date_format(birth,'%d/%m/%Y') as birth from t_user;
+------+------+------------+
| id   | name | birth      |
+------+------+------------+
|    1 | lily | 01/01/2022 |
|    1 | lisa | 01/02/2022 |
+------+------+------------+
2 rows in set (0.00 sec)

date 和 datetime 两种类型的区分

  • date 是短日期类型  (默认格式:%Y-%m-%d)
  • datetime 是长日期类型  (默认格式:%Y-%m-%d %h:%i:%s)

在mysql当中怎么获取系统当前时间?
        now() 函数,而且获取时间类型是datetime类型的。

insert into t_user(id,name,birth,nowtime) values(1,'lily','2019-01-01',now());

insert 可以一次添加多条数据

insert into t_user(id,name,birth,nowtime) values
(2,'jay','2017-11-12',now()),
(3,'amy','2018-06-10',now()),
(4,'john','2020-07-09',now());

2、删除数据 delete

语法格式:

delete from 表名 where 条件;

delete from t_user where id=2;

3、修改 update

语法格式:

update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3... where 条件;

注意:没有条件限制会导致所有数据都更新。

update t_user set name='john',birth='2012-10-1' where id=2;

四、快速建立新表

1、复制表格

create table t_emp as select * from emp;

 2、将查询结果存储为新表

create table mytable as select empno,ename from emp where job = 'MANAGER';

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值