MySQL 学习笔记

  • 一、使用终端操作数据库
    • (一)、基本语句
      • 1、登录数据库服务器
      • 2、查询数据库服务器中所有的数据库
      • 3、如何选中一个数据库进行操作
      • 4、查看数据库中的表(table)
      • 5、查看表中的数据结构
      • 6、查看表中的数据字段
      • 7、退出数据库服务器
      • 8、在数据库服务器里 创建/删除 一个数据库
      • 9、确认当前所处的数据库
      • 10、创建一个数据表(table)
      • 11、插入/修改/删除数据(增删改查CRUD)
      • 12、常用的数据类型
        • (1).总览
        • (2).整型
        • (3).浮点数
        • (4).字符型
        • (5).日期型
    • (二)、建表约束
      • 1、主键约束
      • 2、唯一主键
      • 3、非空约束
      • 4、默认约束
      • 5、外键约束
    • (三)、建表三大范式
      • 1、第一NF
      • 2、第二NF
      • 3、第三NF
    • (四)、查询语句
    • (五)、事务
      • 1、控制事务
      • 2、临时开启事务手动提交
      • 3、事务的ACID特征和使用
        • 1、事务的四大特征:
        • 2、事务的隔离性
  • 二、可视化操作数据库--navicat
  • 三、python语言操作数据库

一、使用终端操作数据库

(一)、基本语句

1、登录数据库服务器

C:\Users\acer>mysql -u root -p    # 回车后输入密码即可登录

2、查询数据库服务器中所有的数据库

mysql> show databases;

3、如何选中一个数据库进行操作

mysql> select * from mysql;
ERROR 1046 (3D000): No database selected    # 当没有选择数据库就进行查询时会报错
mysql> use mysql;      # 选择数据库
Database changed

4、查看数据库中的表(table)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| classes        |
| pet            |
| students       |
| testtype       |
| user           |
| user10         |
| user2          |
| user3          |
| user4          |
| user5          |
+----------------+
10 rows in set (0.00 sec)

5、查看表中的数据结构

mysql> desc pet;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| species | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| birth   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
6 rows in set (1.62 sec)

6、查看表中的数据字段

mysql> select * from pet;
+-----------+-----------+---------+------+------------+-------+
| name      | owner     | species | sex  | birth      | death |
+-----------+-----------+---------+------+------------+-------+
| puffball  | diane     | hamster | f    | 1999-03-30 | NULL  |
| 旺财狗    | 周星驰    | 狗      | 公   | 1990-01-01 | NULL  |
| 猫咪      | 于洪      | 猫      | 母   | 2002-01-02 | NULL  |
+-----------+-----------+---------+------+------------+-------+
3 rows in set (1.65 sec)

7、退出数据库服务器

mysql> exit;    # 退出后需要重新登录MySQL
Bye

或者:

mysql> quit;    # 退出后需要重新登录MySQL
Bye

8、在数据库服务器里 创建/删除 一个数据库

mysql> create database test1;     #  创建
Query OK, 1 row affected (1.96 sec)mysql> drop database test1;       #  删除
Query OK, 0 rows affected (0.33 sec)

9、确认当前所处的数据库

mysql> select database();
+------------+
| database() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)

10、创建一个数据表(table)

mysql> create table pet(-> name varchar(20),-> owner varchar(20),-> species varchar(20),-> sex char(1),-> birth date,-> death date);
ERROR 1050 (42S01): Table 'pet' already exists
# 因为我的test数据库里已经有一个pet表了,所以不能重复table名,故而报错

注:删除table就是用drop对应create

11、插入/修改/删除数据(增删改查CRUD)

CRUD是指增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)
查看:

mysql> select * from pet;
+-----------+-----------+---------+------+------------+-------+
| name      | owner     | species | sex  | birth      | death |
+-----------+-----------+---------+------+------------+-------+
| 旺财狗    | 周星驰    | 狗      | 公   | 1990-01-01 | NULL  |
| 猫咪      | 于洪      | 猫      | 母   | 2002-01-02 | NULL  |
+-----------+-----------+---------+------+------------+-------+
2 rows in set (0.00 sec)

插入(增:创建table后要对表进行数据插入):

mysql> insert into pet values ('puffball', 'Diane', 'hamster', 'f', '1990-03-30', NULL);
Query OK, 1 row affected (1.87 sec)

删除表中数据(删):

mysql>delete from pet where name = "puffball";
Query OK, 2 rows affected (1.90 sec)mysql> select * from pet;
+-----------+-----------+---------+------+------------+-------+
| name      | owner     | species | sex  | birth      | death |
+-----------+-----------+---------+------+------------+-------+
| 旺财狗    | 周星驰    | 狗      | 公   | 1990-01-01 | NULL  |
| 猫咪      | 于洪      | 猫      | 母   | 2002-01-02 | NULL  |
+-----------+-----------+---------+------+------------+-------+
2 rows in set (0.00 sec)

更新数据(改):

mysql> update pet set name = "lala" where owner = "Diane";
Query OK, 1 row affected (1.80 sec)
Rows matched: 1  Changed: 1  Warnings: 0

查看结果:

mysql> select * from pet;
+-----------+-----------+---------+------+------------+-------+
| name      | owner     | species | sex  | birth      | death |
+-----------+-----------+---------+------+------------+-------+
| 旺财狗    | 周星驰    | 狗      | 公   | 1990-01-01 | NULL  |
| 猫咪      | 于洪      | 猫      | 母   | 2002-01-02 | NULL  |
| lala      | Diane     | hamster | f    | 1990-03-30 | NULL  |
+-----------+-----------+---------+------+------------+-------+
3 rows in set (0.00 sec)

12、常用的数据类型

MySQL支持多种类型,大致可以分为四类:数值型、浮点型、日期/时间和字符串(字符)类型。

(1).总览
1 数值型:整型:int、tinyint小数:定点数(dec),浮点数(float\double)
2 字符型:较短的文本:char、varchar较长的文本:text、blob(较长的二进制数据)
3 日期型日期+时间:datetime 时间戳:timestamp
(2).整型
分类:tinyint 、smallint、mediumint、int/integer、bigint字节数    1         2           3          4         8        如何设置无符号和有符号
mysql> CREATE TABLE tab_int(>t1 INT,>t2 INT UNSIGNED)  #无符号(即无符号指的是正数和0,有符号指的是负数)
(3).浮点数
分类:
1、浮点型  float(M,D)  、  double(M,D)
2、定点型 dec(M,D)  decimal(M,D)
特点:
①  M:整数部位+小数部位  总的位数D:小数部位 的位数如果超过范围,则插入临界值
②   M和D都可以省略如果是decimal,则M默认是10,D默认是0如果是float和double,则会根据插入的数值的精度来决定精度
③   定点型的精度较高,如果要求插入数值的精度较高如货币运算等则考虑使用原则:
所选择的类型越简单越好,能保存数值的类型越小越好
例:
mysql> INSERT INTO tab_float VALUES
(323.45,343.23,333.45),
(223.45,233.23,233.45);
(4).字符型
较短的文本:char: 存储字符数 0-255,定义时可省略长度,默认是1varchar:存储字符数 0-65535 ,定义时不可省略长度
区别:
{1、char的长度是不可变的,varchar的长度是可变的,比如现在定义一个char[10]和varchar[10],现在往里边存储’csdn’四个字符,
此时char中存储的是’csdn’四个字符外还有六个空格,而varchar则是存储是’csdn’四个字符。
2、char的存储速度还是比varchar快,因为其长度固定,方便程序的存储于查找。
3、char类型对英文的存储的ASCII码占一个字节,汉子占两个字节;而varchar则是英文和汉字都是两个字节;
}
其他:binary 和 varbinary 用于保存较短的二进制enum用于保存枚举set用于保存集合
较长的文本:textblob(较大的二进制)案例:
#创建表,只有一个枚举型字段,插入值的时候只能是枚举值,可以用来限定保存密码
mysql> CREATE TABLE tab_char(c1 ENUM('a','b','c')
);
mysql> INSERT INTO tab_char VALUES('a');#插入成功
mysql> INSERT INTO tab_char VALUES('d');#插入失败,插入的值必须是枚举的值#创建集合
mysql> CREATE TABLE tab_set(s1 SET('a','b','c','d')
);
mysql> INSERT INTO tab_set VALUES('a');#√
mysql> INSERT INTO tab_set VALUES('a,c');#√
mysql> INSERT INTO tab_set VALUES('b,c,d');#√
mysql> INSERT INTO tab_set VALUES('a','b','e');#×,e不在集合之中
(5).日期型
分类:
date 只保存日期
time 只保存时间
year 只保存年
datetime 保存日期+时间
timestamp 保存日期+时间
datetime  vs  timestamp字节           范围       是否受时区等影响I
datetime    8       1000-9999        不受
timestamp   4       1970-2038         受

(二)、建表约束

1、主键约束

使某个字段不重复且不得为空,确保表内所有数据的唯一性。
mysql>CREATE TABLE user (id INT PRIMARY KEY,name VARCHAR(20)
);

联合主键
联合主键中的每个字段都不能为空,并且加起来不能和已设置的联合主键重复。

CREATE TABLE user (id INT,name VARCHAR(20),password VARCHAR(20),PRIMARY KEY(id, name)
);

自增约束
自增约束的主键由系统自动递增分配。

mysql>CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,       # 自增约束:AUTO_INCREMENTname VARCHAR(20)
);

添加主键约束
如果忘记设置主键,还可以通过SQL语句进行设置(两种方式):

mysql>ALTER TABLE user ADD PRIMARY KEY(id);    #  没有设置时,增加一个主键
mysql>ALTER TABLE user MODIFY id INT PRIMARY KEY;    # 已经设置了,此时修改为int型,并设为主键

删除主键

mysql>ALTER TABLE user drop PRIMARY KEY;

2、唯一主键

-- 建表时创建唯一主键
mysql>CREATE TABLE user (id INT,name VARCHAR(20),UNIQUE(name)
);-- 添加唯一主键
-- 如果建表时没有设置唯一建,还可以通过SQL语句设置(两种方式):
mysql>ALTER TABLE user ADD UNIQUE(name);
mysql>ALTER TABLE user MODIFY name VARCHAR(20) UNIQUE;-- 删除唯一主键
mysql>ALTER TABLE user DROP INDEX name;    # 注意删除的是index
唯一主键UNIQUE和主键约束PRIMARY KEY 的区别:
保证唯一性      是否允许为空        一个表中可以有多少个        能否组合primary key      √               ×                  至多一个                √unique           √               √                  可以有多个               √

3、非空约束

– 建表时添加非空约束,约束某个字段不能为空

mysql>ACREATE TABLE user (id INT,name VARCHAR(20) NOT NULL          # 设置为非空的
);
-- 建表时添加非空约束
-- 约束某个字段不能为空
mysql>ACREATE TABLE user (id INT,name VARCHAR(20) NOT NULL
);
-- 移除非空约束
ALTER TABLE user MODIFY name VARCHAR(20);

4、默认约束

-- 建表时添加默认约束
-- 约束某个字段的默认值
mysql>CREATE TABLE user2 (id INT,name VARCHAR(20),age INT DEFAULT 10    # 年龄默认都是10岁;-- 移除非空约束
mysql>ALTER TABLE user MODIFY age INT;

5、外键约束

-- 班级表
mysql>CREATE TABLE classes (id INT PRIMARY KEY,name VARCHAR(20)
);
-- 学生表
mysql>CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(20),         class_id INT,                                     #  这里的 class_id 要和 classes 中的 id 字段相关联FOREIGN KEY(class_id) REFERENCES classes(id)      #  设置外键(班级表里面的id字段)
);                                                    #  表示 class_id 的值必须来自于 classes 中的 id 字段值
1. 主表(父表)classes 中没有的数据值,在副表(子表)students 中,是不可以使用的;
2. 主表中的记录被副表引用时,主表不可以被删除。

(三)、建表三大范式

1、第一NF

只要字段值还可以继续拆分,就不满足第一范式。
如:杭州市 西湖区 XX街道,可以拆分为市,区,街道 三个字段
第一范式即为:尽量拆分字段

2、第二NF

在满足第一范式的前提下,其他列都必须"完全"依赖于主键列。如果出现不完全依赖,只可能发生在联合主键的情况下:

mysql>CREATE TABLE myorder (product_id INT,customer_id INT,product_name VARCHAR(20),customer_name VARCHAR(20),PRIMARY KEY (product_id,customer_id)
);

然而这张表里,产品name只依赖产品id,消费者name只依赖消费者id,产品name和消费者id是没有关系的,因此这个 不满足第二范式,没有体现“完全”

CREATE TABLE myorder (                      # 对订单表进行拆分order_id INT PRIMARY KEY,product_id INT,customer_id INT
);CREATE TABLE product (id INT PRIMARY KEY,name VARCHAR(20)
);CREATE TABLE customer (id INT PRIMARY KEY,name VARCHAR(20)
);

拆分之后,myorder 表中的 product_id 和 customer_id 完全依赖于 order_id 主键,而 product 和 customer 表中的其他字段又完全依赖于主键。满足了第二范式的设计!

3、第三NF

在满足第二范式的前提下,除了主键列之外,其他列之间不能有传递依赖关系。

CREATE TABLE myorder (order_id INT PRIMARY KEY,product_id INT,customer_id INT,customer_phone VARCHAR(15)
);

可以发现,customer_phone字段依赖的字段可能式order_id 也可能是customer_id ,而只有
order_id式是主键,也就不满足了第三范式的设计:其他列之间不能有传递依赖关系。
进行拆分:

CREATE TABLE myorder (order_id INT PRIMARY KEY,product_id INT,customer_id INT
);CREATE TABLE customer (id INT PRIMARY KEY,      name VARCHAR(20),phone VARCHAR(15)        # 使手机这个字段只依赖customer_id
);

(四)、查询语句

------不做单独写,具体练习看sql面试50题:B站面试50题

(五)、事务

在 MySQL 中,事务其实是一个最小的不可分割的工作单元。事务能够保证一个业务的完整性。

比如我们的银行转账,a转给b一百元,执行下面的语句:

-- a -> -100
UPDATE user set money = money - 100 WHERE name = 'a';-- b -> +100
UPDATE user set money = money + 100 WHERE name = 'b';

但在实际项目中,假设只有一条 SQL 语句执行成功,而另外一条执行失败了,那么就会出现数据前后不一致。在银行系统管理是非常严重的。

因此,在执行多条有关联 SQL 语句时,事务可能会要求这些 SQL 语句要么同时执行成功,要么就都执行失败。

接下来如何解决

1、控制事务

在 MySQL 中,事务有一个默认自动提交的状态,这个自动提交状态是默认开启的

-- 查询事务的自动提交状态
mysql> select @@AUTOCOMMIT;
+--------------+
| @@AUTOCOMMIT |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

自动提交的作用:当我们执行一条 SQL 语句的时候,其产生的效果就会立即体现出来,且不能回滚,即不能撤回
举例:

mysql> CREATE DATABASE bank;   # 先创建一个库和表mysql> USE bank;mysql> CREATE TABLE user (id INT PRIMARY KEY,name VARCHAR(20),money INT
);

然后插入一条数据:

mysql> insert into user values(1,"a",1000);
Query OK, 1 row affected (0.22 sec)mysql> select * from user;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
+----+------+-------+
1 row in set (0.00 sec)

可以看到,在执行插入语句后数据立刻生效,原因是 MySQL 中的事务自动将它提交到了数据库中。那么所谓回滚的意思就是,撤销执行过的所有 SQL 语句,使其回滚到最后一次提交数据时的状态

在 MySQL 中使用 ROLLBACK 执行回滚:

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)mysql> select * from user;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
+----+------+-------+
1 row in set (0.00 sec)

可见,在事务状态是默认的情况下,sql语句一旦提交,就不能在回滚到提交前的状态了;

关闭自动提交:

-- 使用set 语句惊醒修改设置:
mysql> set AUTOCOMMIT = 0;
Query OK, 0 rows affected (0.00 sec)mysql> select @@AUTOCOMMIT;    #  可见autocommit已经被修改为 0
+--------------+
| @@AUTOCOMMIT |
+--------------+
|            0 |
+--------------+
1 row in set (0.00 sec)

此时,再试一下回滚:

mysql> insert into user values(2,"b",1000);
Query OK, 1 row affected (0.00 sec)     # 插入一条数据
-- 设置 AUTOCOMMIT = 0 后,数据的变化是在一张虚拟的临时数据表中展示,
-- 发生变化的数据并没有真正插入到数据表中。mysql> select * from user;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
|  2 | b    |  1000 |
+----+------+-------+
2 rows in set (0.00 sec)-- 数据表中的真实数据其实还是:
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
+----+------+-------+mysql> rollback;            # 回滚
Query OK, 0 rows affected (1.85 sec)mysql> select * from user;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
+----+------+-------+        #  可见,回滚成功
1 row in set (0.00 sec)

在AUTOcommit = 0的状态下,写完一个事务后使用commit即可提交事务,之后便不能再回滚了

mysql> select @@AUTOCOMMIT;      # 查询事务自动提交状态:是关闭状态
+--------------+
| @@AUTOCOMMIT |
+--------------+
|            0 |
+--------------+
1 row in set (0.50 sec)mysql> insert into user values(2,"b",1000);    # 此时插入一条数据;
Query OK, 1 row affected (1.79 sec)mysql> commit;                    # 提交插入语句
Query OK, 0 rows affected (0.29 sec)mysql> rollback;                  # 回滚
Query OK, 0 rows affected (0.00 sec)mysql> select * from user;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
|  2 | b    |  1000 |
+----+------+-------+
2 rows in set (0.13 sec)#    可见并没有产生回滚,通过提交commit手动提交了事务

总结
1、自动提交

  • 查看自动提交状态:select @@AUTOCOMMIT;
  • 设置自动提交状态:set AUTOCOMMIT = 1;

2、手动提交

  • 设置手动提交:set AUTOCOMMIT = 0;
  • 手动提交状态时@@AUTOCOMMIT = 0,当执行完事务语句后,要使用commit命令提交事务
  • 在手动提交状态下,没有使用commit命令前,可以使用rollback命令来实现事务回滚

2、临时开启事务手动提交

在@@AUTOCOMMIT = 1时,我们可以通过输入begin或者start transaction来实现临时开启事务手动提交,使其发生回滚:


mysql> set autocommit = 1;
Query OK, 0 rows affected (1.74 sec)mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)-- 使用 BEGIN 或者 START TRANSACTION 手动开启一个事务
mysql> begin;           # 开启临时手动提交
Query OK, 0 rows affected (0.00 sec)mysql> UPDATE user set money = money - 100 WHERE name = 'a';
Query OK, 1 row affected (1.80 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> UPDATE user set money = money + 100 WHERE name = 'b';   @ 更新两条数据
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> SELECT * FROM user;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |   900 |
|  2 | b    |  1100 |
+----+------+-------+
2 rows in set (0.00 sec)
-- 由于手动开启的事务没有开启自动提交,
-- 此时发生变化的数据仍然是被保存在一张临时表中。-- 测试回滚
mysql> ROLLBACK;
Query OK, 0 rows affected (1.28 sec)mysql> SELECT * FROM user;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
|  2 | b    |  1000 |
+----+------+-------+
2 rows in set (0.00 sec)    # 回滚成功!!!!!

仍然使用 COMMIT 提交数据,提交后无法再发生本次事务的回滚。

BEGIN;
UPDATE user set money = money - 100 WHERE name = 'a';
UPDATE user set money = money + 100 WHERE name = 'b';SELECT * FROM user;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |   900 |
|  2 | b    |  1100 |
+----+------+-------+-- 提交数据
COMMIT;
-- 提交回滚
mysql> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM user;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |   900 |
|  2 | b    |  1100 |
+----+------+-------+
2 rows in set (0.00 sec)      # 没有撤销成功

3、事务的ACID特征和使用

1、事务的四大特征:
  • A 原子性:事务是最小的单位,不可以再分割;
  • C 一致性:要求同一事务中的 SQL 语句,必须保证同时成功或者失败;
  • I 隔离性:事务1 和 事务2 之间是具有隔离性的;
  • D 持久性:事务一旦结束 ( COMMIT ) ,就不可以再返回了 ( ROLLBACK ) 。

上面的已经写过ACD这三部分了,接下来写隔离性:

2、事务的隔离性

事务的隔离性可分为四种 ( 性能从低到高 ) :

  • READ UNCOMMITTED ( 读取未提交 )
    如果有多个事务,那么任意事务都可以看见其他事务的未提交数据。
  • READ COMMITTED ( 读取已提交 )
    只能读取到其他事务已经提交的数据。
  • REPEATABLE READ ( 可被重复读 )
    如果有多个连接都开启了事务,那么事务之间不能共享数据记录,否则只能共享已提交的记录。
  • SERIALIZABLE ( 串行化 )
    所有的事务都会按照固定顺序执行,执行完一个事务后再继续执行下一个事务的写入操作。

查看当前数据库的默认隔离级别:

-- MySQL 8.x, GLOBAL 表示系统级别,不加表示会话级别。
SELECT @@GLOBAL.TRANSACTION_ISOLATION;
SELECT @@TRANSACTION_ISOLATION;
+--------------------------------+
| @@GLOBAL.TRANSACTION_ISOLATION |
+--------------------------------+
| REPEATABLE-READ                | -- MySQL的默认隔离级别,可以重复读。
+--------------------------------+-- MySQL 5.x
SELECT @@GLOBAL.TX_ISOLATION;
SELECT @@TX_ISOLATION;

修改隔离级别:

-- 设置系统隔离级别,LEVEL 后面表示要设置的隔离级别 (READ UNCOMMITTED)。
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
Query OK, 0 rows affected (0.00 sec)-- 查询系统隔离级别,发现已经被修改。
mysql> SELECT @@GLOBAL.TRANSACTION_ISOLATION;
+--------------------------------+
| @@GLOBAL.TRANSACTION_ISOLATION |
+--------------------------------+
| READ-UNCOMMITTED               |
+--------------------------------+
1 row in set (0.00 sec)
-- 其他的隔离设置类似

二、可视化操作数据库–navicat

三、python语言操作数据库

shimo的学习之MySQL 学习相关推荐

  1. MySQL使用学习使用,mysql学习--基本使用_MySQL

    一旦安装完成,MySQL 服务器应该自动启动.sudo start mysql #手动的话这样启动sudo stop mysql #手动停止 当你修改了配置文件后,你需要重启 mysqld 才能使这些 ...

  2. mysql创建全外连接的视图_「MySql学习」Mysql学习系列之常用数据库查询语句

    一.简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等.10.5pt;font-family:"A ...

  3. MySQL 学习笔记②

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/BV1Kr4y1i7ru 资料链接 ...

  4. 【mysql学习笔记整理】

    /*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作 #创建 #数据库的创建 USE mysql; CREATE DATABASE db_x; #删除 #删除数据库 DROP DA ...

  5. 数据库MYSQL学习系列三

    数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...

  6. 我的MYSQL学习心得(十六) 优化

    原文:我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看 ...

  7. 以下用于数据存储领域的python第三方库是-Python3爬虫学习之MySQL数据库存储爬取的信息详解...

    本文实例讲述了Python3爬虫学习之MySQL数据库存储爬取的信息.分享给大家供大家参考,具体如下: 数据库存储爬取的信息(MySQL) 爬取到的数据为了更好地进行分析利用,而之前将爬取得数据存放在 ...

  8. 4月22日MySQL学习

    前面学习的知识基本都是概念知识没有什么代码,然后还有图形界面来辅助学习. 今天学习了MySQL的存储引擎,最常用的两种 MYISAM:不支持事务,也不支持外键,但是访问速度快. INNODB:支持事务 ...

  9. 我的MYSQL学习心得(4) : 数据类型

    我的MYSQL学习心得(1) :简单语法 我的MYSQL学习心得(2) :数据类型宽度 我的MYSQL学习心得(3) : 查看字段长度 MYSQL里的BLOB数据类型 BLOB是一个二进制大对象,用来 ...

  10. 数据库MYSQL学习系列一

    数据库MYSQL学习系列一 一.MYSQL数据库基础 1.1-认识MYSQL 什么是数据库 计算机处理和存储的一切信息都是数据 计算机系统中一种用于存取数据的程序 一种: 计算机系统中有很多种能够存取 ...

最新文章

  1. opencv dnn face
  2. LeetCode(9) - Palindrome Number
  3. wxWidgets:用于测试 TAB 导航的示例
  4. Triangle Leetcode
  5. 从产品展示页面谈谈Hybris系列之二: DTO, Converter和Populator
  6. Linux 常用的帮助命令
  7. Android学习之Image操作及时间日期选择器
  8. 如何将应用程序分为三个主要层
  9. Vue框架搭建快速入门
  10. 退休后能领到4000元以上的养老保险金处于什么水平呢?
  11. ajax是什么实现的步骤,AJAX使用步骤及实现过程
  12. mac新手入门:从启动台Launchpad中完全删除应用程序
  13. 《圈圈教你玩USB》之 USB键盘 【串口输出】
  14. java工厂模式_java工厂模式
  15. 软考软件设计师下午真题-面向对象的程序设计与实现-策略设计模式(2015年下半年试题六))代码讲解
  16. 项目整体流程及项目经理工作职责
  17. h5阿里云播放器 常规使用
  18. EXPLAIN 使用
  19. 个人永久性免费-Excel催化剂功能第86波-人工智能之图像OCR文本识别全覆盖
  20. windows显示WiFi密码

热门文章

  1. 增加客流量的方法_7种成熟的方法来增加网站流量
  2. 苹果域对应关系 Manifest.db文件解析
  3. 科学家发明创可贴式MP3靠人体热量工作
  4. 机器人设计必备的软件有哪些
  5. SpringBoot测试:pom文件版本重复和不一致导致的问题xxxConfigurationPropertySource和Assert.state(ZLjava/util/function/Supp
  6. jzoj3339. wyl8899和法法塔的游戏
  7. blog增量追加ing~(1/10阶段)ctf oj
  8. TextView实现左边图片右边文字或 上面图片下面文字
  9. 【图像原理】rgb数字图片概念
  10. 如何在win7旗舰版下运行汇编的debug、masm、link等