Mysql小白学习笔记
数据库入门
DB
DBMS
E-R 模型
1)E-R图的三要素
(1)实体:用矩形表示实体,矩形内标注实体名称。
(2)属性:用椭圆形表示属性,椭圆形内标注属性名称,并用连线与实体连接起来。
(3)实体之间的联系:用菱形表示实体之间的联系,菱形内注明联系名称,并用连线将菱形分别与相关实体相连,同时在连线上注明联系类型。
两个实体之间的关系:除了多对一之外的关系都有。
两个以上的实体之间的关系:除了一对多其他都有。
一个
学生可以有一张学生证,也必须只有一张学生证。
一个学生必须在并且也只能在一个班级。一个班级最多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. | |
(\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. |
数据库基本操作
- SHOW DATABASE;查看数据库,注意后面有S,忘了几次
- CREATE DATABASE 数据库名字
- 如何查看2中建立的数据库路径——show variables like ‘datadir’;
- 查看已建立数据库具体情况—— SHOW CREATE DATABASE
- 修改数据库编码方式——这里坑好多
修改数据库编码
- 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'
数据表基本操作
-
显示方式:int(M) 在 integer 数据类型中,M 表示最大显示宽度。
在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。 -
建立一个表,表中最后一个元素定义完成后不加 , !!!!!
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
- 查看数据表,方法和我选的教程中有所不同
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)
- 不知道为何
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 | |
+---------+-------------+------+-----+---------+-------+
- int(M) 在 integer 数据类型中,M 表示最大显示宽度。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。
表中数据的基本操作
- decimal(10,2)——小数部分2位,整数部分 8位
SHOW TABLES;
查看已经建立的表;- 批量插入数据:
mysql> INSERT INTO emp(id,name)
-> VALUES(1,'sunkaien'),(3,'future');
- 查看表(区分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 |
+------+----------+--------+----------+--------+------------+--------+
- 更新全部数据
UPDATE emp(表名) SET gender='male';
更新部分数据UPDATE emp SET salary=5000 WHERE name='sunkaien';
注意这个where后面相当于是筛选条件。 - 删除数据
删除部分数据 DELETE FROM 表名 [WHERE 条件表达式]; - 查询指定字段
SELECT 字段名 FROM 表名;
- 关系运算符·带条件的查询
=——等于
<>——不等于(推荐使用这个)
!=——不等于
<——小于
<=——小于等于
除此之外还有 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;
- 模糊查询
mysql> SELECT *FROM stu
-> WHERE sname LIKE 'z%';#LIKE后面跟匹配字符串
%(百分号)表示任意0~n个字符,_(下划线)表示任意一个字符
- 去掉查询结果中的重复关键字
使用DISTINCT
mysql> SELECT DISTINCT gender FROM stu;
+--------+
| gender |
+--------+
| female |
| male |
+--------+
高级查询
- 排序查询
mysql> SELECT * FROM stu
-> ORDER BY age ASC;#ASC代表升序排列,DESC代表降序
-> SELECT * FROM stu
-> ORDER BY age ASC,sid DESC;#并列多个拆寻条件时,优先满足第一个,再第一个无法排序时,再看第二个。
- 排序求和运算
SELECT 函数名(字段名)FROM 表名;
函数: SUM求和 AVG 平均值 MAX MIN - 分组运算
mysql> SELECT gender,AVG(age) FROM stu #排序依据
-> GROUP BY gender; #分组依据
- 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入门
- 查看数据库及增加和删除条目
可能我们一开始联接到本地数据库发现没有一张表,这时候右键单击咱们的本地数据库然后选择编辑连接,如下图所示,在数据库选项卡中将我们之前建立的列表勾上。
双击本地服务器就可以连接上,然后本机上的数据表也显示出来
- 对数据表进行修改
双击待修改的表,进入编辑,看右下角红圈处,可以进行数据条目增删,是不是很方便。
我右键新建了数据库,刷新了主机之后发现没有,而后想到编辑连接???数据库那里没有勾选上
之后再在建好的数据库里运行文件。
或者直接把那个使用自定义数据库列表取消掉就好啦。