MYSQL必知必会读书笔记显示数据库
MySQL必知必会笔记

MySQL必知必会笔记(一)基础知识和基本操作第一章了解MySQL数据库保存有组织的数据的容器。
(通常是一个文件或一组文件)人们经常使用数据库这个术语代替他们使用的软件。
这是不正确的,确切的说,数据库软件应称为DBMS(数据库管理系统),数据库是通过DBMS创建和操纵的容器。
漱口可以是保存在硬件设备上的文件,但也可以不是。
你使用DBMS来代替自己访问数据库。
表表是一种结构化的文件可用来存储某种特定的类型的数据。
某种特定类型数据的结构化清单。
模式关于数据库和标的布局及特性的信息列表中的一个字段。
表由列组成。
列中存储着表里某部分的信息。
数据类型所容许的数据的类型。
每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据。
行表中的一个记录主键一列(或一组列),其值能够唯一区分表中的每个行。
虽然不是必须的,但是一般都建立主键。
便于以后的数据管理表中任何列都可以作为主键,只要满足以下条件:1 任意两行都不具有相同的主键值。
2 每个行都必须有一主键值(主键值不允许为NULL)主键的最好习惯:不更新主键列的值不重用主键列的值不在主键列中使用可能会更改的值什么是sqlSql是结构化查询语言的缩写。
Sql是一种专门用类与数据库通信的语言。
第二章 MySQL简介什么是Mysql Mysql是一种DBMS,即它是一种数据库软件。
Mysql版本主要更改4-——InnoDB引擎,增加了事务处理、并、改进全文搜索等支持4.1——对函数库、子查询、集成帮助等的重要增加、5——存储过程、触发器、游标、试图等。
第三章使用mysql连接主机名端口一个合法用户用户口令Mysql -u root -p -h myserver -P 9999选择数据库可使用USE关键字,mysql语言组成部分的一个关键字,绝不要使用关键字命名一个表或列USE dataname;显示数据库列表SHOW DATABASES;一个数据库内的表的列表(USE进入数据库的情况下)SHOW TABLES;SHOW也可以用来显示表列SHOW COLUMNS FROM column;DESCRIBE 是SHOW COLUMNS的一种快捷方式;DESCRIBE cust;其他的SHOW语句SHOW STATUS 显示广泛的服务器状态信息SHOW CREATE DATABASE 显示创建特定数据库的MYSQL语句SHOW CREATE TABLE 显示创建特定表的MYSQL语句SHOW GRANTS 显示授权用户的安全权限SHOW ERRORS 显示服务器的错误信息SHOW WARNINGS 显示服务器的警告信息MySQL必知必会笔记(二)SELECT语句检索排序过滤通配符搜索正则表达式搜索第四章检索数据检索单列SELECT columnOne FROM table;检索多列SELECT columnOne,columnTwo,columnThire FORM table;检索所有列SELECT * FROM products; //一般,除非你确实需要表中的每个列,否则最好不要用*通配符检索不同的行检索出来的数据不重复DISTINCT关键字,顾名思义返回不同的值SELECT DISTINCT columnOne FROM table; //检索出来的columnOne 没有重复值DISTINCT关键字应用于所有列而不仅是前置它的列SELECT DISTINCT vend_id,prod_price......要求vend_id,prod_price这两列都不出现重复的值限制结果条数sql语句后面加入下面sql语句LIMIT 5 显示结果的前5条LIMIT 3,4从行3开始的后4行LIMIT 4 OFFSET 3 从行3开始的后4行第五章排序检索数据子句 Sql语句是由子句构成,有些子句是必须的,有些事可选的。
Mysql知识点与笔记

Mysql知识点与笔记1. 数据库的三范式是什么?第⼀范式:强调的是列的原⼦性,即数据库表的每⼀列都是不可分割的原⼦数据项。
第⼆范式:要求实体的属性完全依赖于主关键字。
所谓完全依赖是指不能存在仅依赖主关键字⼀部分的属性。
第三范式:任何⾮主属性不依赖于其它⾮主属性。
2. ⼀张⾃增表⾥⾯总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,⼜插⼊了⼀条数据,此时 id 是⼏?表类型如果是 MyISAM ,那 id 就是 8。
表类型如果是 InnoDB,那 id 就是 6。
InnoDB 表只会把⾃增主键的最⼤ id 记录在内存中,所以重启之后会导致最⼤ id 丢失。
3. 如何获取当前数据库版本?使⽤ select version() 获取当前 MySQL 数据库版本。
4. 说⼀下 ACID 是什么?Atomicity(原⼦性):⼀个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。
事务在执⾏过程中发⽣错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执⾏过⼀样。
即,事务不可分割、不可约简。
Consistency(⼀致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
这表⽰写⼊的资料必须完全符合所有的预设约束、触发器、级联回滚等。
Isolation(隔离性):数据库允许多个并发事务同时对其数据进⾏读写和修改的能⼒,隔离性可以防⽌多个事务并发执⾏时由于交叉执⾏⽽导致数据的不⼀致。
事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串⾏化(Serializable)。
Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
5. char 和 varchar 的区别是什么?char(n) :固定长度类型,⽐如订阅 char(10),当你输⼊"abc"三个字符的时候,它们占的空间还是 10 个字节,其他 7 个是空字节。
MySQL必知必会读后感

MySQL必知必会读后感「MySQL必知必会」,上⼤学时,每个计算机专业的学⽣必备的数据库神书。
当时觉得枯燥乏味,毕业5年后,重新阅读了此书,发现此书真的是⼀本通俗易懂、涉及知识⾯⼴但浅尝辄⽌的数据库⼊门书。
以下为此次阅读后⼀些新的认识的总结。
1.DISTINCT-查询去重所有的字段的结果集,如下SQL会查询users表中name和age排重后的结果集select discitct name,age from users;2.LIKE和REGEXP的异同LIKE和REGEXP的不同在于,LIKE匹配整个串⽽REGEXP匹配⼦串。
利⽤定位符,通过⽤^开始每个表达式,⽤$结束每个表达式,可以使REGEXP的作⽤与LIKE⼀样。
3.BINARY区分⼤⼩写(MySQL3.23.4后)MySQL默认查询结果不区分⼤⼩写,如⼀下SQL语句,会把表中name为「apple」、「APPLE」、「Apple」、「aPPle」等结果都查出来。
select * from fruit where name = 'apple'如果只想查出「apple」,需要在字段前增加「BINARY」关键字,那么MySQL将进⾏区分⼤⼩写的查询,只会查出「apple」4.GROUP BY的使⽤(1) GROUP BY ⼦句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。
(2) 如果在 SELECT 中使⽤表达式,则必须在GROUP BY⼦句中指定相同的表达式,不能使⽤别名。
(3) 除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY⼦句中给出。
5.分组后的筛选-HAVING这⾥有另⼀种理解⽅法,WHERE在数据分组前进⾏过滤,HAVING在数据分组后进⾏过滤。
5.组合查询:UNION和UNION ALL组合查询意味着必须要有两条及以上的select语句,且两个语句中的字段必须⼀样,顺序可不⼀样。
mysql基础笔记

mysql基础笔记当学习MySQL 时,一些基础概念和语法是至关重要的。
以下是一份简单的MySQL 基础笔记,供参考:1. 数据库基础- 创建数据库:`CREATE DATABASE database_name;`- 选择数据库:`USE database_name;`- 显示数据库列表:`SHOW DATABASES;`- 删除数据库:`DROP DATABASE database_name;`2. 表操作- 创建表:```sqlCREATE TABLE table_name (column1 datatype,column2 datatype,...);```- 查看表结构:`DESCRIBE table_name;`- 插入数据:```sqlINSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...);```- 查询数据:`SELECT * FROM table_name;`- 更新数据:`UPDATE table_name SET column1 = value1 WHERE condition;`- 删除数据:`DELETE FROM table_name WHERE condition;`- 删除表:`DROP TABLE table_name;`3. 条件筛选和排序- 条件筛选:`SELECT * FROM table_name WHERE condition;`- 排序:`SELECT * FROM table_name ORDER BY column_name;`4. 连接和关联- 内连接:`SELECT * FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;`- 左连接:`SELECT * FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;`- 右连接:`SELECT * FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;`5. 聚合函数和分组- 计数:`SELECT COUNT(column_name) FROM table_name;`- 求和:`SELECT SUM(column_name) FROM table_name;`- 平均值:`SELECT AVG(column_name) FROM table_name;`- 最大值:`SELECT MAX(column_name) FROM table_name;`- 最小值:`SELECT MIN(column_name) FROM table_name;`- 分组:`SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;`这些是MySQL 的基础知识点,还有更多高级概念和命令需要逐步学习和掌握。
MySQL数据库学习笔记

MySQL数据库学习笔记数据库 DDL: 数据定义语⾔, 包含数据库和表相关的操作(MySQL中保存数据需要先建库再建表,最后把数据保存到表中) DML: 数据操作语⾔, 包含增删改查相关的SQL DQL: 数据查询语⾔, 只包含查询相关的SQL TCL: 事务控制语⾔, 包括和事务相关的SQL DCL: 数据控制语⾔, 包括⽤户管理及权限分配相关的SQLDDL数据定义语⾔ 数据库相关SQL 1. 查询所有数据库 show databases; 2. 创建数据库 格式: create database 数据库名; 指定字符集格式: create database 数据库名 character set utf8/gbk; 举例: create database db1; create database db2 character set utf8; create database db3 character set gbk; show databases; 3. 查询数据库详情 格式: show create database 数据库名; 举例: show create database db1; show create database db2; show create database db3; 4. 删除数据库 格式: drop database 数据库名; drop database db3; 5. 使⽤数据库必须使⽤了某个数据库之后才能执⾏表和数据相关的SQL 格式: use 数据库名; use db1; 表相关SQL 操作表相关的SQL 必须使⽤了某个数据库之后再操作use db1; 1. 创建表 格式: create table 表名(字段1名类型,字段2名类型); 指定字符集格式: create table 表名(字段1名类型,字段2名类型) charset=utf8/gbk; 举例: create table person (name varchar(20),age int); create table student(name varchar(20),score int) charset=utf8; create table car(name varchar(20),price int) charset=gbk; 2. 查询所有表 格式: show tables; 3. 查询表详情 格式: show create table 表名 举例: show create table person; 4. 查看表字段 格式: desc 表名; 举例: desc student; 5. 删除表 格式: drop table 表名 举例: drop table car; 表相关SQL(续) use db1; 1. 修改表名格式: rename table 原名 to 新名; rename table student to stu; 2. 添加表字段 最后添加格式: alter table 表名 add 字段名类型; 最前⾯添加个格式: alter table 表名 add 字段名类型 fifirst; xxx字段后⾯添加格式: alter table 表名 add 字段名类型 after xxx; 举例: alter table person add gender varchar(5); //最后⾯ alter table person add id int fifirst; //最前⾯ alter table person add salary int after name;//name后⾯ 3. 删除表字段 格式: alter table 表名 drop 字段名; alter table person drop salary; 4. 修改表字段 格式: alter table 表名 change 原名新名新类型; alter table person change gender salary int;DML数据操作语⾔(数据相关SQL语句) 1. 插⼊数据 全表插⼊格式: insert into 表名 values(值1,值2); 值的数量和表字段⼀致 批量插⼊格式: insert into 表名 values(值1,值2),(值1,值2),(值1,值2); 举例: insert into person values("Tom",18); //全表插⼊ insert into person(name) values("Jerry"); //指定字段插⼊ insert into person values("AAA",10),("BBB",20), ("CCC",30); 中⽂问题: insert into person values("刘德华",30); 如果执⾏上⾯包含中⽂的SQL 报以下错误执⾏ set names gbk; 2. 查询数据 格式: select 字段信息 from 表名 where 条件; 举例: select name from person; //查询表中所有的名字 select name,age from person; //查询表中所有名字和年龄 select * from person; //查询表中所有数据的所有字段信息 select * from person where age>20; //查询年龄⼤于20岁的信息 select * from person where name='Tom'; //查询Tom的信息 3. 修改数据 格式: update 表名 set xxx=xxx,xxx=xxx where 条件; 举例: update person set age=8 where name='Jerry'; update person set name="张学友",age=50 where name="刘德华"; update person set age=15 where age<20; 4. 删除数据 格式: delete from 表名 where 条件; 举例: delete from person where name='Tom'; delete from person where age<20; delete from person; 约束* 概念:对表中的数据进⾏限定,保证数据的正确性、有效性和完整性。
mysql必背50条语句

mysql必背50条语句1. 创建数据库:```sqlCREATE DATABASE dbname;```2. 删除数据库:```sqlDROP DATABASE dbname;```3. 选择数据库:```sqlUSE dbname;```4. 显示所有数据库:```sqlSHOW DATABASES;```5. 创建表:```sqlCREATE TABLE tablename (column1 datatype,column2 datatype,...);```6. 查看表结构:```sqlDESC tablename;```7. 删除表:```sqlDROP TABLE tablename;```8. 插入数据:```sqlINSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...);```9. 查询数据:```sqlSELECT * FROM tablename;```10. 条件查询:```sqlSELECT * FROM tablename WHERE condition;```11. 更新数据:```sqlUPDATE tablename SET column1 = value1, column2 = value2 WHERE condition;```12. 删除数据:```sqlDELETE FROM tablename WHERE condition;```13. 查找唯一值:```sqlSELECT DISTINCT column FROM tablename;```14. 排序数据:```sqlSELECT * FROM tablename ORDER BY column ASC/DESC;```15. 限制结果集:```sqlSELECT * FROM tablename LIMIT 10;```16. 分页查询:```sqlSELECT * FROM tablename LIMIT 10 OFFSET 20;```17. 计算行数:```sqlSELECT COUNT(*) FROM tablename;```18. 聚合函数:```sqlSELECT AVG(column), SUM(column), MIN(column), MAX(column) FROM tablename;```19. 连接表:```sqlSELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;```20. 创建索引:```sqlCREATE INDEX indexname ON tablename (column);```21. 查看索引:```sqlSHOW INDEX FROM tablename;```22. 删除索引:```sqlDROP INDEX indexname ON tablename;```23. 备份整个数据库:```sqlmysqldump -u username -p dbname > backup.sql;```24. 恢复数据库:```sqlmysql -u username -p dbname < backup.sql;```25. 修改表结构:```sqlALTER TABLE tablename ADD COLUMN newcolumn datatype;```26. 重命名表:```sqlRENAME TABLE oldname TO newname;```27. 增加主键:```sqlALTER TABLE tablename ADD PRIMARY KEY (column);```28. 删除主键:```sqlALTER TABLE tablename DROP PRIMARY KEY;```29. 增加外键:```sqlALTER TABLE tablename ADD CONSTRAINT fk_name FOREIGN KEY (column) REFERENCES othertable(column);```30. 删除外键:```sqlALTER TABLE tablename DROP FOREIGN KEY fk_name;```31. 查看活动进程:```sqlSHOW PROCESSLIST;```32. 杀死进程:```sqlKILL process_id;```33. 给用户授权:```sqlGRANT permission ON dbname.tablename TO 'username'@'host';```34. 撤销用户权限:```sqlREVOKE permission ON dbname.tablename FROM 'username'@'host';```35. 创建用户:```sqlCREATE USER 'username'@'host' IDENTIFIED BY 'password';```36. 删除用户:```sqlDROP USER 'username'@'host';```37. 修改用户密码:```sqlSET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');```38. 查看用户权限:```sqlSHOW GRANTS FOR 'username'@'host';```39. 启用外键约束:```sqlSET foreign_key_checks = 1;```40. 禁用外键约束:```sqlSET foreign_key_checks = 0;```41. 启用查询缓存:```sqlSET query_cache_type = 1;```42. 禁用查询缓存:```sqlSET query_cache_type = 0;```43. 查看服务器版本:```sqlSELECT VERSION();```44. 查看当前日期和时间:```sqlSELECT NOW();```45. 查找匹配模式:```sqlSELECT * FROM tablename WHERE column LIKE 'pattern';```46. 计算平均值:```sqlSELECT AVG(column) FROM tablename;```47. 查找空值:```sqlSELECT * FROM tablename WHERE column IS NULL;```48. 日期比较:```sqlSELECT * FROM tablename WHERE date_column > '2022-01-01';```49. 将结果导出为CSV 文件:```sqlSELECT * INTO OUTFILE 'output.csv' FIELDS TERMINATED BY ',' FROM tablename;```50. 将结果导入其他表:```sqlLOAD DATA INFILE 'input.csv' INTO TABLE tablename FIELDS TERMINATED BY ',';。
MySQL必知必会学习笔记

MySQL必知必会学习笔记1、sql在处理or操作之前,优先处理and操作符。
案例:select * from products where vend_id=1002 or vend_id=1003 and prod_price>=10 处理过程select * from products where vend_id=1002 or (vend_id=1003 and prod_price>=10)建议:在使用多个or 或and 语句的时候使用()来避免歧义。
2、in 操作符跟or的作用相同,但是:in的语法比or更简洁;in 比or执行速度快;in里面还可以包含其他select语句。
3、通配符效率很低,必须要用的话也不要放在where的最前面4、在MySQL中使用正则表达式。
like会匹配整个列,若果被匹配的文本只是在列值中出现,like不会查到,除非使用通配符,但是regexp在列值中进行匹配,如果在列值中出现,如regexp就会找到它。
select * from products where prod_name regexp …1000‟查处prod_name中包含1000的行。
常用的正则表达式有:. | ^ $[123] tong=[1|2|3] tong =…1 tong‟ or …2 tong‟ or …3 tong‟1|2|3 tong = …1‟ or …2‟ or …3 tong‟[1-9] 如果要匹配特殊字符必须要使用…\\ …做前导。
比如:select * from products where prod_name regexp …\\.‟如要转义\ 则需要\\\* + ? {n} {n,} {n,m}5、计算字段。
(1)、拼接concatenateselect concat(vend_name, …( … , vend_country, …)‟ ) from vendor ;rtrim 去掉右边的空格ltrim 去掉左边的空格trim 去掉两边的空格。
Mysql笔记(附Mysql基础书pdf版)

Mysql笔记(附Mysql基础书pdf版)资料数据库篇SHOW DATABASES; //显⽰数据库系统中已经存在的数据库CREATE DATABASE 数据库名; //创建数据库DROP DATABASE 数据库名; //删除数据库表篇注:在使⽤操作表语句前,⾸先要使⽤USE语句选择数据库。
选择数据库语句的基本格式为“USE 数据库名”。
否则会报错,1046;CREATE TABLE 表名 ( 属性名数据类型 [完整性约束条件],属性名数据类型 [完整性约束条件],属性名数据类型);表名不能为SQL语句的关键字,⼀个表可以有多个属性。
定义时,字母⼤⼩写均可,各属性之间⽤逗号隔开,最后⼀个属性不需要加逗号。
主键主键有唯⼀值单字段主键属性名数据类型 primary key //创建主键,写在属性名数据类型后⾯;多字段主键primary key(属性名 1,属性名2,属性名n)两者的组合可以确定唯⼀的⼀条记录;外键外键不⼀定必须为⽗表的主键,但必须是唯⼀性索引,主键约束和唯⼀性约束都是唯⼀性索引;外键可以为空值;设置外键的基本语法规则如下:CONSTRAINT 外键别名 FOREIGN KEY(属性 1.1,属性1.2,属性1.n)REFERENCES 表名(属性2.1,属性2.2,属性2.n)其中,“外键别名”参数是为外键的代号;“属性1”参数列表是⼦表中设置的外键;“表名”参数是指⽗表的名称;“属性2”参数列表是⽗表的主键。
设置表的⾮空约束设置表的唯⼀性约束设置表的属性值⾃动增加查看表结构DESCRIBE 表名; // 查看表基本结构语句,可缩写为desc 表名SHOW CREATE TABLE 表名; //查看表详细结构语句(包含存储引擎、字符编码)删除表DROP TABLE 表名;//删除没有被关联的普通表删除⽗表需要先将外键删除,然后才能去删除⽗表。
字段篇//通过ALTER TABLE语句ALTER TABLE 旧表名 RENAME [TO] 新表名;//修改表名 TO参数是可选参数,是否在语句中出现不会影响语句的执⾏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MYSQL必知必会读书笔记显示数据库
MySQL是一种开放源代码的关系型数据库管理系统,MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言进行数据库管理。
show column from tablename;
对每一个字段返回一行,行中包含字段名,数据类型、是否允许NULL、键信息、默认值以及其他信息。
describe 语句: MySQL支持使用describ作为show columns from 的一种快捷方式。
describ tablename 所支持的其他的show语句:
show status,用于显示广泛的服务器状态信息
show create database和show create table ,分别用来显示创建特定数据库或表的Mysql 语句。
show grants,用来显示授予用户的安全权限。
show errors 和show warnings ,用来显示服务器错误或警告消息。
MYSQL 5支持一个新的information_schema 命令,可用它来获得和过滤模式信息。