Mysql小白学习笔记

数据库入门

DB
DBMS

E-R 模型

1)E-R图的三要素

(1)实体:用矩形表示实体,矩形内标注实体名称。
(2)属性:用椭圆形表示属性,椭圆形内标注属性名称,并用连线与实体连接起来。
(3)实体之间的联系:用菱形表示实体之间的联系,菱形内注明联系名称,并用连线将菱形分别与相关实体相连,同时在连线上注明联系类型。

两个实体之间的关系:除了多对一之外的关系都有。

两个以上的实体之间的关系:除了一对多其他都有。

image.png

一个在这里插入图片描述
学生可以有一张学生证,也必须只有一张学生证。
在这里插入图片描述

一个学生必须在并且也只能在一个班级。一个班级最多40个学生,最少30个。

作者:小幸运Q
链接:https://www.jianshu.com/p/19610fafcc2b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

关系模式

关系名(属性1、属性2…)

Mysql

安装方式

端口号

Mysql相关命令

? (?) Synonym for `help’. 。。。。。。。
clear (\c) Clear the current input statement.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
notee (\t) Don’t write into outfile.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (#) Rebuild completion hash.
source (.) Execute an SQL script file. Takes a file name as an argument. 执行一个脚本
status (\s) Get status information from the server.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don’t show warnings after every statement.
resetconnection (\x) Clean session context.

数据库基本操作

  1. SHOW DATABASE;查看数据库,注意后面有S,忘了几次
  2. CREATE DATABASE 数据库名字
  3. 如何查看2中建立的数据库路径——show variables like ‘datadir’;
    在这里插入图片描述
  4. 查看已建立数据库具体情况—— SHOW CREATE DATABASE
  5. 修改数据库编码方式——这里坑好多

修改数据库编码

  • latin1,这1和l在命令行中一模一样,下面是一大串报错,待解决
mysql> ALTER DATABASE hzh DEFAULT CHARACTER
    -> SET latinl COLLATE gbk;
ERROR 1115 (42000): Unknown character set: 'latinl'
mysql>  ALTER DATABASE hzh DEFAULT CHARACTER
    -> SET latin1 COLLATE gbk;
ERROR 1273 (HY000): Unknown collation: 'gbk'
mysql> ALTER DATABASE hzh DEFAULT CHARACTER
    -> SET latin1 COLLATE utf8;
ERROR 1273 (HY000): Unknown collation: 'utf8'
mysql> ALTER DATABASE hzh DEFAULT CHARACTER
    -> SET latin1 COLLATE utf-8;
ERROR 1273 (HY000): Unknown collation: 'utf'
mysql> ALTER DATABASE hzh DEFAULT CHARACTER
    -> SET latin1 COLLATE gbk_bin;
ERROR 1253 (42000): COLLATION 'gbk_bin' is not valid for CHARACTER SET 'latin1'
mysql> ALTER DATABASE hzh DEFAULT CHARACTER
    ->  SET latin1 COLLATE utf8_general_ci;
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

数据表基本操作

  1. 显示方式:int(M) 在 integer 数据类型中,M 表示最大显示宽度。
    在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。

  2. 建立一个表,表中最后一个元素定义完成后不加 , !!!!!

mysql> CREATE TABLE HOBBY(
    -> ho_id INT(10),
    -> ho_name VARCHAR(50),
    -> ho_fre INT(6),
    -> );
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 5
  1. 查看数据表,方法和我选的教程中有所不同
mysql> SHOW CREATE TABLE hobby;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                       |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| hobby | CREATE TABLE `hobby` (
  `ho_id` int(10) DEFAULT NULL,
  `ho_name` varchar(50) DEFAULT NULL,
  `ho_fre` int(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
  1. 不知道为何SHOW CREATE TABLE hobby\G;这个要报错
    使用DESC方式查看
mysql> DESC hobby;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| ho_id   | int(10)     | YES  |     | NULL    |       |
| ho_name | varchar(50) | YES  |     | NULL    |       |
| ho_fre  | int(6)      | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
  1. int(M) 在 integer 数据类型中,M 表示最大显示宽度。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。

表中数据的基本操作

  1. decimal(10,2)——小数部分2位,整数部分 8位
  2. SHOW TABLES;查看已经建立的表;
  3. 批量插入数据:
mysql> INSERT INTO emp(id,name)
    -> VALUES(1,'sunkaien'),(3,'future');
  1. 查看表(区分DESC指令)
 mysql> SELECT *FROM 表名;
+------+----------+--------+----------+--------+------------+--------+
| id   | name     | gender | birthday | salary | entry_date | resume |
+------+----------+--------+----------+--------+------------+--------+
|    1 | sunkaien | NULL   | NULL     |   NULL | NULL       | NULL   |
|    3 | future   | NULL   | NULL     |   NULL | NULL       | NULL   |
+------+----------+--------+----------+--------+------------+--------+
  1. 更新全部数据 UPDATE emp(表名) SET gender='male';
    更新部分数据 UPDATE emp SET salary=5000 WHERE name='sunkaien';注意这个where后面相当于是筛选条件。
  2. 删除数据
    删除部分数据 DELETE FROM 表名 [WHERE 条件表达式];
  3. 查询指定字段
  SELECT 字段名  FROM 表名;
  1. 关系运算符·带条件的查询
    =——等于
    <>——不等于(推荐使用这个)
    !=——不等于
    <——小于
    <=——小于等于
    除此之外还有 IN 和 NOT IN 语句
    体会下面条件查询语句的异同:
mysql> SELECT age FROM stu
    -> WHERE age>=24;
+-----+
| age |
+-----+
|  24 |
|  26 |
|  24 |
+-----+

mysql> SELECT *FROM stu
    -> WHERE age>=24;
+--------+----------+-----+--------+
| sid    | sname    | age | gender |
+--------+----------+-----+--------+
| S_1003 | hzh      |  24 | male   |
| S_1004 | zhangli  |  26 | female |
| S_1005 | zhaoyuan |  24 | male   |
+--------+----------+-----+--------+

查询为NULL的信息:

mysql> SELECT *FROM emp
    -> WHERE salary IS NULL;
  1. 模糊查询
 mysql> SELECT *FROM stu
    -> WHERE sname LIKE 'z%';#LIKE后面跟匹配字符串

%(百分号)表示任意0~n个字符,_(下划线)表示任意一个字符

  1. 去掉查询结果中的重复关键字
    使用DISTINCT
mysql> SELECT DISTINCT gender FROM stu;
+--------+
| gender |
+--------+
| female |
| male   |
+--------+

高级查询

  1. 排序查询
 mysql> SELECT * FROM stu
    -> ORDER BY age ASC;#ASC代表升序排列,DESC代表降序
    -> SELECT * FROM stu
    -> ORDER BY age ASC,sid DESC;#并列多个拆寻条件时,优先满足第一个,再第一个无法排序时,再看第二个。
  1. 排序求和运算
    SELECT 函数名(字段名)FROM 表名;
    函数: SUM求和 AVG 平均值 MAX MIN
  2. 分组运算
 mysql> SELECT gender,AVG(age) FROM stu  #排序依据
    -> GROUP BY gender; #分组依据
  1. LIMIT分页
    限制查询结果数量

PyMysql

基础读写

import pymysql
db=pymysql.connecte("localhost","root","1234","future")

cursor=db.cursor()

cursor.execute("SELECT VERSION()")

data=cursor.fetchone()

print("Database version:%s"% data)

db.close()

1

AttributeError: 'module' object has no attribute 'connect'  

connect写错
2

TypeError: __init__() takes 1 positional argument but 5 were given

**db=pymysql.connect(host=“localhost”,user=“root”,password=“1234”,database=“hzh”)**python版本原因,要在参数前加名字

运行结果:

Database version:5.7.24-log

Navicat入门

  1. 查看数据库及增加和删除条目
    可能我们一开始联接到本地数据库发现没有一张表,这时候右键单击咱们的本地数据库本地数据库然后选择编辑连接,如下图所示,在数据库选项卡中将我们之前建立的列表勾上。

在这里插入图片描述
双击本地服务器就可以连接上,然后本机上的数据表也显示出来
在这里插入图片描述

  1. 对数据表进行修改
    双击待修改的表,进入编辑,看右下角红圈处,可以进行数据条目增删,是不是很方便。
    在这里插入图片描述
    我右键新建了数据库,刷新了主机之后发现没有,而后想到编辑连接???数据库那里没有勾选上
    在这里插入图片描述
    之后再在建好的数据库里运行文件。
    或者直接把那个使用自定义数据库列表取消掉就好啦。

猜你喜欢

转载自blog.csdn.net/weixin_54594861/article/details/115366169