SQL入门详解(上)

        如今SQL的应用不仅在互联网公司,在各行各业中的生产研发等岗位几乎是一个必备技能,如果不会 SQL 的话,可能什么都做不了。你可以把 SQL 当做是一种工具,利用它可以帮助你完成你的工作,创造价值,是每一个程序员和学生必须掌握的技能.

一、SQL语句的分类

1.DDL: 数据定义语言, 主要是操作: 数据库, 数据表, 列名.
关键字: create, drop, alter, show...

2.DML: 数据操作语言, 主要是操作: 表数据, 更新操作(增删改)
关键字: insert, delete, update

3.DQL: 数据查询语言, 主要是操作: 表数据, 查询操作.
关键字: select, from, where

4.DCL: 数据控制语言, 主要是操作: 用户, 设置权限, 隔离级别.

二、SQL语句的解释

1.DDL语句-操作数据库

# -------------------- DDL语句 操作数据库 --------------------
-- 1. 查看所有的数据库
show databases;

-- 格式: create database if not exists 数据库名 charset '码表名';
-- 2. 创建数据库, 采用默认码表.
create database testdb;                  -- 默认码表: utf8

-- 3. 创建数据库, 采用: 指定码表.
create database testdb charset 'gbk';    -- 指定码表: gbk


-- 4. 创建数据库, 如果数据库不存在. 
create database if not exists testdb;    -- testdb数据库不存在就创建, 存在就: 啥也不做.

-- 5. 查看(单个)数据库的详细信息(码表)
show create database testdb;

-- 6. 修改数据库的(码表).
alter database testdb charset 'utf8';

-- 7. 删除指定的数据库.
-- 格式: drop database 数据库名;
drop database testdb;

-- 8. 切库.    (掌握)
use testdb;

-- 9. 查看当前使用的是哪个数据库.
select database();

2.DDL语句-操作数据表

# -------------------- DDL语句 操作数据表 --------------------
-- 0. 切库.
use testdb;

-- 1. 查看(当前数据库中)所有的数据表
show tables;

-- 2. 创建数据表.   
/*
格式:
    create table [if not exists] 数据表名(
        列名1 数据类型 [约束],
        列名2 数据类型 [约束],
        列名3 数据类型 [约束],
        ...
        列名n 数据类型 [约束]       # 最后1个列名的结尾, 没有逗号.
    );
 */
-- 需求: 创建学生表student, 字段(学生编号, 姓名 非空约束, 性别, 年龄)
create table if not exists student(
    id int,                      # 学生编号
    name varchar(20) not null,   # 学生姓名, 非空
    gender varchar(10),          # 学生性别
    age int                      # 学生年龄
);

-- 3. 查看(单个)数据表的详细信息(码表)
show create table student;

desc student;       # 查看表的字段(有哪些字段, 字段的数据类型, 约束等...),  describe: 描述.
desc stu;

-- 4. 修改数据表的(表名).
-- 格式: rename table 旧表名 to 新表名;
rename table student to stu;

-- 5. 删除指定的数据表.
drop table stu;

3.DDL语句-操作字段

# -------------------- DDL语句 操作字段 --------------------
-- 1. 查看表的所有(列)
desc student;

-- 2. 给表 新增列.
-- 格式: alter table 表名 add 列名 数据类型 [约束];
alter table student add hobby varchar(20) not null;

-- 3. 修改列, 数据类型 和 约束.    hobby列, varchar(20) -> int
-- 格式: alter table 表名 modify 列名 数据类型 [约束];
alter table student modify hobby int ;      -- 不加约束, 则会取消之前的约束.

-- 4. 修改列, 列名, 数据类型 和 约束.   hobby-> hb varchar(10) 非空
-- 格式: alter table 表名 change 旧列名 新列名 数据类型 [约束];
alter table student change hobby hb varchar(10) not null;

-- 5. 删除指定的列.
-- 格式: alter table 表名 drop 列名;
alter table student drop hb;

4.DML语句-操作表数据

-- DML语句: 数据操作语言, 主要是对表数据进行更新操作的, 即: 增删改.
-- 关键字: insert, delete, update


# -------------------- 案例1: DML语句 操作数据表 增 --------------------
/*
格式:
    insert into 表名(列名1, 列名2...) values(值1, 值2...);
    insert into 表名 values(值1, 值2...);
    insert into 表名 values(null, 值2...);

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

细节:
    1. 添加表数据的时候, 值的个数和类型, 要和 列名保持一致.
    2. 如果不写列名, 则默认是全列名, 即: 必须给所有的列依次赋值.
    3. 如果是主键列且配合有自增, 则: 传值的时候, 可以直接传入null, 系统会根据最大主键值 +1, 然后存储.
    4. 如果同时添加多行值, 多组值之间用逗号隔开, 最后一组值的后边写分号.
*/
-- 1. 添加单条数据.
insert into student(id, name, gender, age) values(1, '李', '男', 33);
insert into student(name, age) value('孟', 30);
insert into student(gender, age) value('男', 21);    -- 报错, 姓名不能为空
insert into student(name,gender, age) value('宋', '女', 21);    -- 正确

-- 2. 同时添加多条数据.
insert into student values
    (1, '朱', '女', 30),
    (2, '林', '女', 24),
    (3, '赵', '女', 19);

-- 注意: 在进行修改或者删除操作的时候, 一定要加where条件.
# -------------------- 案例2: DML语句 操作数据表 改 --------------------
-- 格式: update 表名 set 字段名1=新值, 字段名2=新值... where 条件;
update student set id=10, name='萧' where id = 1;

-- 如果不写where条件, 一下子改变所有.
update student set id=1, name='崖';


# -------------------- 案例3: DML语句 操作数据表 删 --------------------
-- 格式: delete from 表名 where 条件;
delete from student where age > 25;

-- 不写where条件, 一次删除所有.
delete from student;


# -------------------- 扩展: DQL语句 操作数据表 查 --------------------
-- 简单查询, 查询表中所有的数据.
-- select * from testdb.student;        # 数据库名.数据表名
select * from student;              # 如果直接写数据表用, 默认用的是 当前库中的表.

未完待续

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值