MySQL数据库_1

一、概述

  1、数据(DATA)

    描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机。

  2、数据库(DataBase,简称DB)

    数据库就是一个文件夹!

    数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。

    过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用。

    数据库是长期存放在计算机内、有组织、可共享的数据即可。

    数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种 用户共享。

  3、数据库管理系统(DataBase Management System,简称DBMS)

    在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键。

    这就用到了一个系统软件---数据库管理系统。

    如MySQL、Oracle、SQLite、Access、MS SQL Server

    mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
    oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
    sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。

  4、数据库管理人员(Database administrator)

  5、结构化查询语言(Structured Query Language,简称SQL)

二、MySQL介绍

  1、介绍

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

  2、MySQL是什么?

    * mysql就是一个socekt服务端
    * 客户端软件
       mysql自带
       python模块  

  3、其它类型的数据库

    关系型:MySQL、sqllite,db2,oracle,access,sql server

    非关系型:mongodb,redis,memcache

三、语句概述

  SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。由IBM公司开发。

  1、SQL规范

    #################### 注意事项 ###################

    1)、在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;

    2)、SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。(不见“;”不结束啊)

    3)、用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。

    4)、注释:  单行注释:--

      多行注释:/*......*/

    5)、sql语句可以折行操作

    6)、DDL,DML和DCL区别:     

      DDL(data definition language)语句 数据库定义语言: 数据库、表、视图、索引、存储过程,

        例如CREATE DROP ALTER

      DML(data manipulation language)语句 数据库操纵语言:

        插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT

      DCL(Data Control Language)语句 数据库控制语言:

        例如控制用户的访问权限GRANT、REVOKE

  2、MySQL 基本管理 之修改登录密码

1 mysqladmin -uroot -p"旧密码" password "新密码"    --注意语句格式

1 -- 登陆MySQL
2 mysql -uroot -p

  3、数据库的操作

 1 -- 1 创建数据库
 2         CREATE DATABASE chaoxuan(db_name) [CHARACTER SET GBK];
 3
 4 -- 2 查看数据库
 5         SHOW DATABASES;  -- 查看所有数据库
 6         SHOW CREATE DATABASE chaoxuan(db_name);  -- 查看指定数据库信息
 7
 8 -- 3 修改数据库
 9         ALTER DATABASE chaoxuan(db_name) CHARACTER SET UTF8;  -- 修改设置
10
11 -- 4 删除数据库
12         DROP DATABASE chaoxuan(db_name);
13
14 -- 5 使用数据库
15         USE oldboy_test2(db_name);  -- 使用数据库
16         SELECT DATABASE();  -- 查看当前的数据库

  4、数据表的操作

 1 -- 1 创建数据表
 2          CREATE TABLE salary(
 3     ->         ID int primary key auto_increment,
 4     ->         NAME varchar(20),
 5     ->         TIME date,
 6     ->         JOB varchar(20),
 7     ->         SALARY double(5,2) unsigned,
 8     ->         RESUME text  -- 最后一个字段不加逗号
 9     -> );
10
11 /* 约束:
12        primary key (非空且唯一)  :能够唯一区分出当前记录的字段称为主键!
13        unique
14        not null
15        auto_increment :用于主键字段,主键字段必须是数字类型
16   */
17
18 -- 2 查看表结构
19         DESC salary;
20 /*
21 +--------+----------------------+------+-----+---------+----------------+
22 | Field  | Type                 | Null | Key | Default | Extra          |
23 +--------+----------------------+------+-----+---------+----------------+
24 | ID     | int(11)              | NO   | PRI | NULL    | auto_increment |
25 | NAME   | varchar(20)          | YES  |     | NULL    |                |
26 | TIME   | date                 | YES  |     | NULL    |                |
27 | JOB    | varchar(20)          | YES  |     | NULL    |                |
28 | SALARY | double(5,2) unsigned | YES  |     | NULL    |                |
29 | RESUME | text                 | YES  |     | NULL    |                |
30 +--------+----------------------+------+-----+---------+----------------+
31 */
32
33 -- 3 查看表结构
34         SHOW COLUMNS FROM salary;
35
36 -- 4 查看当前数据库中的所有表
37         SHOW TABLES;
38
39 -- 5 查看当前数据库建表语句
40         SHOW CREATE TABLE salary(db_name);

-- 1 增加列字段ALTER TABLE salary ADD maxsalary double(5,2);-- 2 修改一列类型ALTER TABLE salary MODIFY JOB int;-- 3 修改列名ALTER TABLE salary CHANGE JOB JOBNB int;-- 4 删除一列ALTER TABLE salary DROP maxsalary;
---- 删除多列,再加一列ALTER TABLE salary DROP JOBNB,->                               ADD job int,->                               DROP TIME;-- 5 修改表名RENAME TABLE salary TO lala;-- 6 修改表用的字符集ALTER TABLE lala CHARACTER SET utf8;

-- 删除表格DROP TABLE dachao;

  5、表记录的操作

/*
数据类型:int 整型varchar(20) 字符串 Text    大文本字符串float(6,2)  浮点型,小数点后两位,一共6位有效数字最大:9999.99
其它:auto_increment 自增 1、2、3……
*/

  

CREATE TABLE teacher(
id int PRIMARY KEY auto_increment,
gender BIT DEFAULT 1,
name VARCHAR(20) NOT NULL,
age int,
salary FLOAT(8,2) unsigned,
work_time DATE,
resume text
);

 

-- 插入表记录 insertINSERT INTO teacher (gender,name,age,salary,work_time) VALUES (0,"egon",18,10000,"1990-12-12"),(1,"yuanhao",78,2000,"1980-1-12"),(0,"alex",998,666666,"2000-6-6"),(0,"wusir",5,9999,"1212-8-8");-- 修改表记录 update
WHERE (条件) -- 筛选条件UPDATE teacher SET salary = 9999 WHERE id = 1;UPDATE teacher SET salary=salary+4444 WHERE name="alex";  -- 在alex的salary的基础上,再加4444。-- 删除表记录 -- deletedelete只能用来删除一行记录-- delete语句只能删除表中的内容,不能删除表本身,想要删除表,用drop
DELETE FROM table_name 字句;DELETE FROM teacher WHERE name="wusir";
TRUNCATE TABLE table_name;  -- 可以删除表中所有数据,词语句首先摧毁表,再新建表。此种方式删除的数据不能在事务中恢复。-- ***查询表记录***
/*
查询语法 SELECT di,name... FROM teacherWHERE 条件GROUP BY fielg_nameHAVING 筛选ORDER BY field_nameLIMIT 限制条数
*/CREATE TABLE shop_menu(id int PRIMARY KEY auto_increment,p_name VARCHAR (20),p_price FLOAT(6,2),p_date DATE,p_number INT unsigned,class VARCHAR (20)
) CHARACTER SET utf8;INSERT INTO shop_menu (p_name,p_price,p_date,p_number,class) VALUES ("苹果",5,20170725,100,"水果"),("香蕉",10,20170725,500,"水果"),("床单",100,20170725,10,"家具"),("西瓜",2,20170720,30,"水果"),("冰箱",1000,20170725,1000,"电器"),("沙发",800,20170720,20,"家具"),("电饭煲",200,20170725,100,"电器");/*
+----+-----------+---------+------------+----------+--------+
| id | p_name    | p_price | p_date     | p_number | class  |
+----+-----------+---------+------------+----------+--------+
|  1 | 苹果      |    5.00 | 2017-07-25 |      100 | 水果   |
|  2 | 香蕉      |   10.00 | 2017-07-25 |      500 | 水果   |
|  3 | 床单      |  100.00 | 2017-07-25 |       10 | 家具   |
|  4 | 西瓜      |    2.00 | 2017-07-20 |       30 | 水果   |
|  5 | 冰箱      | 1000.00 | 2017-07-25 |     1000 | 电器   |
|  6 | 沙发      |  800.00 | 2017-07-20 |       20 | 家具   |
|  7 | 电饭煲    |  200.00 | 2017-07-25 |      100 | 电器   |
+----+-----------+---------+------------+----------+--------+
*/SELECT id,p_name,p_price,p_number FROM shop_menu;
/*
+----+-----------+---------+----------+
| id | p_name    | p_price | p_number |
+----+-----------+---------+----------+
|  1 | 苹果      |    5.00 |      100 |
|  2 | 香蕉      |   10.00 |      500 |
|  3 | 床单      |  100.00 |       10 |
|  4 | 西瓜      |    2.00 |       30 |
|  5 | 冰箱      | 1000.00 |     1000 |
|  6 | 沙发      |  800.00 |       20 |
|  7 | 电饭煲    |  200.00 |      100 |
+----+-----------+---------+----------+
*/SELECT id,p_name 姓名,p_price 价格,p_number 数量 FROM shop_menu;  -- 临时指定字段的名字,只在显示时变化
/*
+----+-----------+---------+--------+
| id | 姓名      | 价格    | 数量   |
+----+-----------+---------+--------+
|  1 | 苹果      |    5.00 |    100 |
|  2 | 香蕉      |   10.00 |    500 |
|  3 | 床单      |  100.00 |     10 |
|  4 | 西瓜      |    2.00 |     30 |
|  5 | 冰箱      | 1000.00 |   1000 |
|  6 | 沙发      |  800.00 |     20 |
|  7 | 电饭煲    |  200.00 |    100 |
+----+-----------+---------+--------+
*//* -- WHERE> < >= <= !=between 1 and 100  -- 在1和100之间,含1,100!!!in(5,10,100)  -- 含值5,10,100的like "a%"  --     开头含a  "a___"  -- 开头含a且后面有3个字符串and or not
*/SELECT * FROM shop_menu WHERE p_price BETWEEN 1 AND 100;
/*
+----+--------+---------+------------+----------+--------+
| id | p_name | p_price | p_date     | p_number | class  |
+----+--------+---------+------------+----------+--------+
|  1 | 苹果   |    5.00 | 2017-07-25 |      100 | 水果   |
|  2 | 香蕉   |   10.00 | 2017-07-25 |      500 | 水果   |
|  3 | 床单   |  100.00 | 2017-07-25 |       10 | 家具   |
|  4 | 西瓜   |    2.00 | 2017-07-20 |       30 | 水果   |
+----+--------+---------+------------+----------+--------+
*/SELECT * FROM shop_menu WHERE p_price IN(5,10,100);
/*
+----+--------+---------+------------+----------+--------+
| id | p_name | p_price | p_date     | p_number | class  |
+----+--------+---------+------------+----------+--------+
|  1 | 苹果   |    5.00 | 2017-07-25 |      100 | 水果   |
|  2 | 香蕉   |   10.00 | 2017-07-25 |      500 | 水果   |
|  3 | 床单   |  100.00 | 2017-07-25 |       10 | 家具   |
+----+--------+---------+------------+----------+--------+
*/SELECT * FROM shop_menu WHERE p_name LIKE "苹%";
/*
+----+--------+---------+------------+----------+--------+
| id | p_name | p_price | p_date     | p_number | class  |
+----+--------+---------+------------+----------+--------+
|  1 | 苹果   |    5.00 | 2017-07-25 |      100 | 水果   |
+----+--------+---------+------------+----------+--------+
*/SELECT * FROM shop_menu WHERE p_name LIKE "苹_";
/*
+----+--------+---------+------------+----------+--------+
| id | p_name | p_price | p_date     | p_number | class  |
+----+--------+---------+------------+----------+--------+
|  1 | 苹果   |    5.00 | 2017-07-25 |      100 | 水果   |
+----+--------+---------+------------+----------+--------+
*/-- order by 字段名称 排序查询-- 默认从小到大(ASC)从大到小排序
SELECT * FROM shop_menu ORDER BY p_price; -- 后面加(DESC)默认从大到小排序
SELECT * FROM shop_menu ORDER BY p_price DESC;
/*
+----+-----------+---------+------------+----------+--------+
| id | p_name    | p_price | p_date     | p_number | class  |
+----+-----------+---------+------------+----------+--------+
|  5 | 冰箱      | 1000.00 | 2017-07-25 |     1000 | 电器   |
|  6 | 沙发      |  800.00 | 2017-07-20 |       20 | 家具   |
|  7 | 电饭煲    |  200.00 | 2017-07-25 |      100 | 电器   |
|  3 | 床单      |  100.00 | 2017-07-25 |       10 | 家具   |
|  2 | 香蕉      |   10.00 | 2017-07-25 |      500 | 水果   |
|  1 | 苹果      |    5.00 | 2017-07-25 |      100 | 水果   |
|  4 | 西瓜      |    2.00 | 2017-07-20 |       30 | 水果   |
+----+-----------+---------+------------+----------+--------+
*/-- 分组查询 ***group by***SELECT * FROM shop_menu GROUP BY class;
/*
+----+--------+---------+------------+----------+--------+
| id | p_name | p_price | p_date     | p_number | class  |
+----+--------+---------+------------+----------+--------+
|  3 | 床单   |  100.00 | 2017-07-25 |       10 | 家具   |
|  1 | 苹果   |    5.00 | 2017-07-25 |      100 | 水果   |
|  5 | 冰箱   | 1000.00 | 2017-07-25 |     1000 | 电器   |
+----+--------+---------+------------+----------+--------+
*/SELECT class,SUM(p_price) FROM shop_menu GROUP BY class;  -- 按类分组后,再显示每组价格总和
/*
+--------+--------------+
| class  | SUM(p_price) |
+--------+--------------+
| 家具   |       900.00 |
| 水果   |        17.00 |
| 电器   |      1200.00 |
+--------+--------------+
*/SELECT class,SUM(p_price) FROM shop_menu GROUP BY class HAVING SUM(p_price)>100;  -- 按类分组后,再显示每组价格总和大于100
/*
+--------+--------------+
| class  | SUM(p_price) |
+--------+--------------+
| 家具   |       900.00 |
| 电器   |      1200.00 |
+--------+--------------+
*/-- 聚合函数就是应用在group by--<1> 统计表中所有记录-- COUNT(列名):统计行的个数-- 统计一共有多少行,再用count包上SELECT COUNT(*) FROM shop_menu;-- 统计价格大于100的商品有多少个?SELECT COUNT(p_price) FROM shop_menu WHERE p_price>100;-- 统计总价格大于10000的商品有多少?SELECT COUNT(p_name) FROM shop_menu WHERE (ifnull(p_price,0)*ifnull(p_number,0))>10000;-- 注意:count(*)统计所有行;     count(字段)不统计null值.  ifnull(p_price,0) 如果输入为空,则为0.-- SUM(列名):统计满足条件的行的内容和-- 统计所有水果p_price的总价?先查出所有的水果,再用sum包上每种水果总价SELECT SUM(p_price*p_number) AS 总价格 FROM shop_menu WHERE class="水果";SELECT SUM(p_price*p_number) AS 总价格 FROM shop_menu GROUP BY class HAVING class="水果";-- 注意:sum仅对数值起作用,否则会报错。-- AVG(列名):-- 求平均价格?先查出所有的价格,然后用avg包上。SELECT AVG(p_price) FROM shop_menu;-- Max、Min-- 求单价最高和最低(数值范围在统计中特别有用)SELECT MAX(p_price) AS 单价最高 FROM shop_menu;SELECT Min(p_number) AS 数量最少 FROM shop_menu;-- 注意:null 和所有的数计算都是null,所以需要用ifnull将null转换为0!--      -----ifnull(JS,0)-- having 配合使用/*
having 和 where两者都可以对查询结果进行进一步的过滤,差别有:<1>where语句只能用在分组之前的筛选,having可以用在分组之后的筛选;<2>使用where语句的地方都可以用having进行替换<3>having中可以用聚合函数,where中就不行。
*/-- limit 表记录限制SELECT * FROM shop_menu LIMIT 2,3;  -- 限制显示id2后三行的内容
/*
+----+--------+---------+------------+----------+--------+
| id | p_name | p_price | p_date     | p_number | class  |
+----+--------+---------+------------+----------+--------+
|  3 | 床单   |  100.00 | 2017-07-25 |       10 | 家具   |
|  4 | 西瓜   |    2.00 | 2017-07-20 |       30 | 水果   |
|  5 | 冰箱   | 1000.00 | 2017-07-25 |     1000 | 电器   |
+----+--------+---------+------------+----------+--------+
*/-- 正则表达式 REGEXPSELECT * FROM shop_menu WHERE p_name REGEXP "^床";
/*
+----+--------+---------+------------+----------+--------+
| id | p_name | p_price | p_date     | p_number | class  |
+----+--------+---------+------------+----------+--------+
|  3 | 床单   |  100.00 | 2017-07-25 |       10 | 家具   |
+----+--------+---------+------------+----------+--------+
*/

  6、出现的问题

--  出现的问题 select * from shop_menu group by class;/*
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and
表达式select list 不在group by分句中
contains nonaggregated column 'day_25.shop_menu.id' which is not functionally dependent on columns
in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
*/SELECT @@sql_mode;  -- 查询,并去掉ONLY_FULL_GROUP_BY
SET @@sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

转载于:https://www.cnblogs.com/LiChaoAI/p/7229708.html

Day 1 MySQL数据库相关推荐

  1. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!

    连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...

  2. MySQL数据库+命令大全+常用操作

    格式:mysql -h主机地址 -u用户名 -p用户密码 1. 例:连接到本机上的MYSQL 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示 ...

  3. mysql数据库是一个软件呐_15款好用的mysql管理软件

    1. Induction Induction是一款用于理解数据关系的开源管理工具,它可用来探索行/列,运行查询和数据可视化等方面.该工具支持多种数据库,包括PostgreSQL,MySQL,SQLit ...

  4. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  5. C语言对mysql数据库的操作

    C语言对mysql数据库的操作 原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎 ...

  6. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  7. python用django连接mysql_三分钟了解Django如何连接Mysql数据库

    处理用户注册请求.Django连接MysqL数据库相关配置.数据库迁移命令: my_Dproject/app01/views.py    在views函数文件中添加register函数,来处理用户注册 ...

  8. mysql数据库比对视频教程_MySQL数据库全学习实战视频教程(27讲 )

    一)mySQL数据库简介:MySQL属于关系型数据库,是当前最流行的关系型数据库管理系统之一,在WEB项目使用方面,MySQL是最好的 RDBMS应用软件. 二)本mySQL数据库视频教程目录如下:  ...

  9. eclipse关闭mysql数据库,有关于用eclipse连接mysql数据库出现的问题以及解决办法

    写帖子是为了让更多的程序员减少再调试bug中的时间,也希望大家能一起把自己遇到的错误及解决方法写出来.我是一个刚开始学java的大二学生,用的是<java开发实战经典>.在写p646的程序 ...

  10. bd2和mysql语法区别,经验:在MySQL数据库中,这4种方式可以避免重复的插入数据!...

    最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下 ...

最新文章

  1. 0510JS基础:定义、输出、变量
  2. ionic开发:第一步
  3. Delphi通过ICMP检测与远程主机连接
  4. jqueryui的Tooltip使用方法
  5. 制作两个字符串字谜的最小步骤数
  6. CXF WebService视频教程,自己录的(更新第7集 异步调用 2009.1.15)。
  7. 英知汇——名词、动词、形容词、副词的形容词,绕不绕?
  8. [愚见]《EnlightenGAN: Deep Light EnhancementWithout Paired Supervision》
  9. win10系统mongoDB 错误1053的处理方法
  10. 深度学习利器之自动微分(2)
  11. AHB总线介绍及其时序图
  12. jmeter5.4.1 调整默认工具栏图片大小
  13. 雄文 | VAS 对标的不是ETH而是Libra
  14. Python Pyside2 Pinger新手QQ音乐网易云酷狗爬虫下载
  15. 尚硅谷前端-京东左侧导航栏及网易新闻列表练习——CSS
  16. jquery-1.11.1.min.js文件(下拉选带搜索)
  17. 所有老板看完都会说一句“卧槽”!一套营销方案,彻底颠覆你思维!
  18. matlab ode45三体问题,关于ode45中erf函数(输入必须为实数完全数的报错问题)
  19. 网站复制工具:HTTrack
  20. 【作业题】后台管理系统中的课程管理模块(后端篇)

热门文章

  1. [Xamarin] 客製化的ListView之章 (转帖)
  2. 小白一步步:EntLib5.0 - Data Access 最简练习
  3. Solr搜索引擎——初识Solr
  4. 使用Timer实现异步调用方法
  5. formatter function (value,row,index){} 参数的含义
  6. vue路由(router)设置:父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失
  7. 一些Select检索高级用法(适用于mssql)
  8. in与exist , not in与not exist 的区别
  9. 经典排序算法(十)--希尔排序Shell Sort
  10. Protobuf import文件导入其他proto