《深入浅出MySQL》读书笔记(一)

第二章 SQL基础

2.1 SQL简介

SQL:Structure Query Language(结构化查询语言)的缩写

2.2 MySQL的使用入门

2.2.1 SQL分类

  • DDL(Data Definition Languages)语句: 数据定义语言,这些语句定义了不同的数据段、 数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 createdropalter 等。
  • DML(Data Manipulation Language)语句: 数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insertdeleteupdateselect 等。
  • DCL(Data Control Language)语句: 数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grantrevoke 等。

2.2.2 DDL语句

启动MySQL服务后用mysql -u[username] -p命令连接MySQL服务器
连接到MySQL服务器
在以上命令行中,mysql 代表客户端命令,-u 后面跟连接的数据库用户-p 表示需要输入密码

  1. 创建数据库CREATE DATABASE dbname;
    创建数据库
    “Query OK”表示上面的命令执行成功
    “1 row affected”表示操作只影响了数据库中一行的记录
    “0.00 sec”则记录了操作执行的时间
    如果已经存在这个数据库,系统会提示:重复创建报错
    查询系统中有哪些数据库:SHOW DATABASES;
    查询系统中的数据库
    选择要操作的数据库:USE dbname;
    在这里插入图片描述
    查询数据库中哪些表:SHOW TABLES;查询表信息

  2. 删除数据库DROP DATABASE dbname;
    删除数据库
    p.s. 数据库删除后,下面的所有表数据都会全部删除,所以删除前一定要仔细检查并做好相应备份.

  3. 创建表CREATE TABLE tablename (column_name_1 column_type constraints, column_name_1 column_type constraints ... column_name_n column_type constraints)
    MySQL 的表名是以目录的形式存在于磁盘上,所以表名的字符可以用任何目录名允许 的字符;
    column_name 是的名字;
    column_type 是列的数据类型
    contraints 是这个列的约束条件
    创建emp表:
    创建表emp
    查看表的定义:DESC tablename;
    查看emp表的定义
    查看创建表的SQL语句:SHOW CREATE TABLE tablename;
    查看创建表emp的SQL语句
    除了可以看到表定义以外,还可以看到表的 engine (存储引擎) 和 charset(字符集)等信息。

  4. 删除表DROP TABLE tablename;
    删除表emp

  5. 修改表
    (1) 表结构的更改一般都使用 alter table 语句:ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
    修改表 emp 的 ename 字段定义,将 varchar(10)改为 varchar(20):修改表中ename字段定义
    (2)增加表字段:ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]
    表 emp 上新增加字段 age,类型为 int(3):
    新增age字段
    (3)删除表字段:ALTER TABLE tablename DROP [COLUMN] col_name
    将字段 age 删除掉:
    删除age字段
    (4)字段改名:ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition[FIRST|AFTER col_name]
    在这里插入图片描述
    (5)修改字段排列顺序:
    默认 ADD 增加的新字段是加在表的最后位置
    CHANGE/MODIFY 默认都不会改变字段的位置;
    将新增的字段 birth date 加在 ename 之后:
    新增birth字段在ename字段后面
    修改字段 age,将它放在最前面:
    将age字段
    (6)改表名:ALTER TABLE tablename RENAME [TO] new_tablename
    修改表名

2.2.3 DML 语句

  • 插入记录:INSERT INTO tablename (field1,field2,......fieldn) VALUES(value1,value2,......valuesn);
    批量插入:

    INSERT INTO tablename (field1, field2,......fieldn) VALUES
    (record1_value1, record1_value2,......record1_valuesn), 
    (record2_value1, record2_value2,......record2_valuesn), 
    ......
    (recordn_value1, recordn_value2,......recordn_valuesn) ;
    

    批量插入

  • 更新记录:UPDATE tablename SET field1=value1,field2.=value2,......fieldn=valuen [WHERE CONDITION]
    批量更新多个表的字段:UPDATE t1,t2...tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION]
    批量更新
    p.s. 多表更新的语法更多地用在了根据一个表的字段,来动态的更新另外一个表的字段

  • 删除记录:DELETE FROM tablename [WHERE CONDITION]
    批量删除多个表的数据:DELETE t1,t2...tn FROM t1,t2...tn [WHERE CONDITION]
    如果 from 后面的表名用别名,则 delete 后面的也要用相应的别名,否则会提示语法错误。
    批量删除
    p.s. 不管是单表还是多表,不加 where 条件将会把表的所有记录删除,所以操作时一定要小心。

  • 查询记录:SELECT * FROM tablename [WHERE CONDITION]
    其中“*”表示要将所有的记录都选出来。
    (1)查询不重复记录:distinct
    (2)条件查询:where
    (3)排序和限制:SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC] , field2 [DESC|ASC],......fieldn [DESC|ASC]]
    DESC 和 ASC 是排序顺序关键字,DESC 表示按照字段进行降序排列,ASC 则表示升序列,如果不写此关键字默认是升序排列。
    如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,以此类推。如果只有一个排序字段,则这些字段相同的记录将会无序排列。
    对于排序后的记录,如果希望只显示一部分,而不是全部,这时,就可以使用 LIMIT 关键字来实现:SELECT ......[LIMIT offset_start,row_count]
    (4)聚合:

    SELECT [field1,field2,......fieldn] fun_name FROM tablename
    [WHERE where_contition]
    [GROUP BY field1,field2,......fieldn
    [WITH ROLLUP]]
    [HAVING where_contition]
    

    HAVING 关键字表示对分类后的结果再进行条件的过滤
    p.s. having 和 where 的区别在于 having 是对聚合后的结果进行条件的过滤,而 where 是在聚合前就对记录进行过滤,如果逻辑允许,我们尽可能用 where 先过滤记录,这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用 having进行再过滤。
    (5)表连接:inner join、left join、 right join
    (6)子查询:用于子查询的关键字主要包括 in、not in、=、!=、exists、not exists 等
    表连接在很多情况下用于优化子查询
    (7)记录联合:

    • union:是将 UNION ALL 后的结果进行一次 DISTINCT,去除重复记录后的结果
    • union all:把结果集直接合并在一起

2.2.4 DCL语句

DCL 语句主要是 DBA 用来管理系统中的对象权限时所使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值