MySQL学习笔记 v1版 (以后再修改的更好看些)
数据库管理系统:DBMS,MySQL是一种DBMS。
缺点:并不总是支持其他DBMS提供的功能和特性。
能够适应不断增加的工作量而不失败,叫做可伸缩性。
tips
- 命令用\g或;结束,只按enter不执行命令。
- 必须先use数据库,才能读取其中数据。
- update/delete可同时更新/删除多表中的数据。
- LIMIT 5,5指示MySQL返回从行5开始的5行。
- IN(,)和OR功能一致。
- 头尾空格会干扰通配符匹配,可以在前面后面都加上%。更好的方式是使用函数去头尾空格。注意! LIKE ‘%jet%’中用的是单引号不是反引号。
- 通配符可以匹配任何东西除了NULL。
- LIKE 与 REGEXP,LIKE 匹配整个列,若文本在列值中出现,LIKE将找不到;而REGEXP在列值内进行匹配,可以找到。
- .匹配任意字符,因此每行都会被检索出来,想要检索到特殊字符.的话,要使用REGEXP ‘\.’
- ?匹配它前面的任何字符的0次或1次,等同于{0,1}
- 多数DBMS使用+或| |来实现拼接,而MySQL需要使用Concat()函数来实现。转换时应注意。
- 如果确定使用函数,要保证做好代码注释。
- SUM()函数忽略列值为NULL的行。
- COUNR(DISTINCT)是不被允许的。
- GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。
- 大部分WHERE的功能HAVING都能实现,唯一的区别是:WHERE过滤行,HAVING过滤分组聚集值
- 应总是给出ORDER BY,这是保证数据正确排序的唯一方法。
- 应该保证所有联结都有WHERE子句。
- 创建表的时候就指定FULLTEXT等索引。导入的话,先导入所有数据,再修改表,再定义FULLTEXT等索引。
- 使用列的列表可使SQL代码继续有用,即使表结构发生了变化。
- 删除某个列的值,可以SET其为NULL。
- 在对UPDATE或DELETE使用WHERE前,应先使用SELECT进行测试,保证其过滤的是正确的记录。
- MYSQL无撤销按钮,所以一定要小心!
- 创建时若某一列必须要有值则指定NOT NULL。
- CREATE TABLE均以ENGINE=InnoDB语句结束。
- ALTER TABLE的一个常见用途是定义外键。
- 注释前面放置- -
Error Code: 1046. No database selected Select the default DB to be used by double clicking
出现该错误是因为没有选定数据库,先双击选中左侧数据库就ok了。
基本情况
名称 | 描述 |
---|---|
表 | 1、存储在表中的数据是一种类型的数据或一个清单比说说顾客的清单以及订单的清单。2、一个清单一个表。 |
模式 | 关于数据库和表的布局及特性的信息。 |
列 | 1、一个列存储一条特定信息比如说顾客编号。2、每列都应有相应的可存储的数据类型比如说数值或字符。 |
行 | 每行存储一个顾客的信息。 |
主键 | 1、一列(或一组列),该列的值可以唯一区分表中的每一行。2、可使用多个列作为主键。3、养成好习惯 主键不更新 不重用 不使用会更改的。 |
SQL | description |
---|---|
DDL语句 | 对数据库内部对象进行创建、删除、修改等操作。创建数据库create database dbname;删除数据库drop database dbname;创建表 create table tablename();删除表drop table tablename;修改表(几种类型以后再说)。。。 |
DML语句 | 对数据库中表记录的操作,包括表记录插入、更新、删除、查询。插入记录 INSERT INTO tablename(field1,…,fieldn)VALUES(values1,…,valuesn);更新记录 UPDATE tablename SET field1=value1,…fieldn=valuen[WHERE CONDITION];删除记录 DELETE FROM tablename[WHERE CONDITION];查询记录 SELECT*FROM tablename[WHERE CONDITION] |
导入SQL文件
- 打开workbench打开schema,起个名字。
- 在file文件下open script。
流程
- 启动服务:
net start MySQL56
(我的mysql名称) - 找到bin位置:
cd C:\。。。
- 请求输入密码:
mysql -uroot -p
(实际设置的用户名是Xuyx但是在这里还是要输入root) - 输入密码:
wy。。。
- 创建数据库:输入
create database student
(student为数据库名) - 创建表:
create table tablename(
column_name column_type constrains,
…,
…)
注意!!!!!
MySQL引入反引号,列名称使用的是反引号`
不然将会报错ERROR 1064 (42000)。
上图黄框中的简单的写法
create table tb_stu1(name varchar(30), sex varchar(2), birthday date)
注释
vendors表-供应商表
products表-产品表
customers表-顾客表
orders表-顾客订单
orderitems表-订单细节表
productnotes表-产品注释表
cust_id、vend_id、order_num是自动增量字段
vendors表中vend_id与products表中prod_id关联
customers表中cust_id与orders表中order_num关联
orderitems表中order_num与orders表中order_num关联
orderitems表中prod_id与products表中prod_id关联