目录

一、mysql引擎介绍 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

二、写在前面。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

三、sql基本规则。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

四、实例操作。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

 

总结:

1. like、in、between and 必须先有where作为条件引出字段后才能够搭配使用

2. 统计函数(sum、count)是在group by 分完组后才被执行的语句,它反馈的值是每组的统计结果

 

一、Mysql 中引擎

MyISAM存储引擎:

1) MyISAM管理非事务表。提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,是默认的存储引擎。

2)  MyISAM存储引擎不支持事务,不支持行级锁,只支持并发插入的表锁,主要用于高负载的select。

3)  MyISAM类型的表支持三种不同的存储结构:静态型、动态型、压缩型。

 

innoDB存储引擎:

1) innodb存储引擎该mysql表提供了事务,回滚以及系统崩溃修复能力和多版本迸发控制的事务的安全。

2)innodb支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空的话怎会进行自动存现有的值开始增值,如果有但是比现在的还大,则就保存这个值。

3)innodb存储引擎支持外键(foreign key) ,外键所在的表称为子表而所依赖的表称为父表。

4)innodb存储引擎最重要的是支持事务,以及事务相关联功能。

5)innodb存储引擎支持mvcc的行级锁。

总结:读操作多用MyISAM,各种查询,例如:12306,尤其是春节期间。写操作多用innodb,交易系统,股票交易系统。

 

二、写在前面:

1> dos和Linux环境下进入数据库:cmd进入mysql安装的bin目录下

2> 登录数据库:    cmd>mysql -uroot -p  

3> 列出所有库:     mysql>show databases

4> 进入某个数据库: mysql>use <库名>

5> 列出库中所有表:mysql>show tables

6> 描述表结构:    DESC <表名>

 

三、sql基本规则

1)Sql语句执行顺序:

〖❸确定要使用的数据列DELECT[DISTINCT]*|列名(别名),...常量;

〖❶确定要查找的数据来源〗FROM 表名称 [别名],表名称 [别名]

〖❷针对数据行的筛选〗WHERE 过滤条件

〖❹针对于返回结果进行排序ORDER BY 字段 [ASC|DESC,....]

 

2)表的命名规则

Ø 必须以字母开头

Ø 必须在1-30个字符之间

Ø 必须只能包含A-Z,a-z,0-9,_,$,#

Ø 不能和用户定义的其他对象重名

Ø 不能是mysql的保留字(关键字)

3)SQL的两种注释形式:

1.行注释:以 ‐‐ 开头,该行之后的内容以及SQL代码将会被注释掉。

2.多行注释:以 /* 开头,以 */ 结尾的,中间的部分将会被全部注释掉。

4)表的约束类型:

1.NOT NULL(非空约束):必须有值,值可以重复。

2.UNIQUE KEY(唯一键):该列不可以重复,可以为空(NULL)。

3.primary key(主键):简称PK=NOT NULL+NUIQUE,主键不允许为空,主键一定是唯一的标识,主键可以是一个或多个字段。

4.foreign key(外键):外键对应了另外表的主键,外键的值可以为空,如果不为空就必须是对应主键所在表的主键列表的值。

5.check 校验约束

4)ENGINE=MyISAM AUTO_INCREMENT=170 DEFAULT CHARSET=utf8

5)基本查询:

l Where 条件查询:><>=<=<>!=)不等于发;ANDORNOT

谓词范围查询:INNOT IN

BETWEEN AND 的范围查询,在---之间。Between 200 and 300

l NULL空值查询:IS NULLIS NOT NULL

l LIKE 模糊查询:LINK后面要用单引号 ‘ ‘,和LIKE一起使用的通配符有 "%""_"

n "%":作用是能匹配任意长度的字符。

n "_":只能匹配任意一个字符

n % _ 可以同时使用

关键字DISTINCT(查询结果不重复)

对查询结果排序:ORDER BY  字段|表达式  ASC升序|DESC降序

分组查询:GROUP BY

--------函数查询:掌握sql中的函数使用规则

 

四、实例操作

创建一个库

CREATE DATABASE rz_data;

创建空表NOT NULL、AUTO_INCREMENT、DEFAULT、primary key)

CREATE TABLE rz_adduser(ename CHAR(20),tname CHAR(20),dept CHAR(20),role CHAR(20),pwd1 CHAR(20),pwd2 CHAR(20),email CHAR(20),casetype CHAR(20));

插入数据

value(‘数据1’,’数据2’,。。。。’数据n’,)

2.插入全部字段:Insert into <表名称> values(‘数据1’,’数据2’,。。。’数据n’,)

示例:

INSERT INTO rz_adduser VALUES

('wu1','xing1','2','1','123456','123456','[email protected]','1'),

('wu2','xing2','2','1','123456','123456','[email protected]','1'),

('wu3','xing3','2','1','123456','123456','[email protected]','1'),

('wu4','xing4','2','1','123456','123456','[email protected]','1'),

('w','xing5','2','1','123456','123456','[email protected]','1'),

('wu6','fff','2','1','123456','123456','[email protected]','1');

('wu6','ff','2','1','123456','123456','[email protected]','1');

('wu6','','2','1','123456','123456','[email protected]','1');

('wu6','','2','1','123456','123456','[email protected]','1');

增加字段id在首列

ALTER TABLE rz_adduser ADD COLUMN id CHAR(20) FIRST;

id 设为自增

ALTER TABLE rz_adduser CHANGE id id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;

增加字段id且为自增型,整型,首列

ALTER TABLE USER ADD COLUMN) id INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;

设置主键:

alter table tablename add primary key(field_name);

 

删除字段pid

ALTER TABLE rz_adduser DROP COLUMN pid

ALTER TABLE USER DROP pid

删除某一行数据

DELETE FROM rz_adduser WHERE idd=10;

 

重命名表

Alter table 旧表名 rename 新表名

修改id的数据类型

ALTER TABLE rz_adduser MODIFY (COLUMN)id CHAR(20);

修改字段名称:id-->pid

ALTER TABLE rz_adduser CHANGE id pid CHAR(30);

修改字段中的数据

UPDATE rz_adduser SET casetype='name_wrong' WHERE pid=5;

UPDATE rz_adduser SET casetype='Tname_wrong' WHERE pid = 6;

 

 

 

Select就是一个输出显示函数

Select hhhh/88888  输出常量

SELECT NOW()  /*显示当前日期时间*/

SELECT YEAR(NOW()) /*显示当前年份*/

SELECT CURTIME()  /*显示当前时间*/

SELECT CURDATE()  /*显示当前的年、月、日*/

SELECT WEEKDAY(NOW()) /*返回当前日期是星期几(0是星期一。。6是星期六)*/

SELECT MONTHNAME(NOW()) /*返回日期月份*/

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H-%i-%s') /*指定格式输出时间*/

Select <字段> as <别名>。。。。

1>查询

SELECT * FROM rz_adduser;

2>查询字段

SELECT ename,tname,dept,role,pwd1,pwd2,email,id FROM rz_adduser

3>查看id的数据类型,查看表结构

DESC rz_adduser;

 MySQL部分

4>查询字段时,过滤重复行DISTINCT(所要查询的所有字段的数据都相等才可被过滤掉)

Select distinct <字段1>,<字段2>,<字段3> from <表名>

5>插入常量、连接字段

>concat_ws函数concat(separator,str1,str2,...) 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。

mysql>SELECT CONCAT_WS(':','姓名',ename,'真实姓名',tname) FROM rz_adduser

 MySQL部分

6>定义别名(AS可以不要)字段后面接别名

SELECT  ename AS sdd,tname FROM rz_adduser

 MySQL部分

7>四则运算

Select ename,tname,dept*3+7 总计 from rz_adduser

 MySQL部分

8>两张表合二为一显示(两张表的字段相同)

SELECT * FROM table1 UNION SELECT * FROM table2

9>过滤分组HAVING:作为group by 的过滤条件

(1) 在分组之后进行条件过滤

(2) 满足HAVING子句中的条件的分组将被显示

(3) 不满足的不被显示

例如:查询不及格科目数大于等于2的学生 学号和不及格科目数量:

 MySQL部分

10>嵌套查询:(内查询出的结果作为外查询的条件)

查询 不及格科目数大于等于2的学生学号、学生姓名、科目号、科目名称和分数,

并按学号降序、科目号升序排序:

 MySQL部分

查询员工工龄大于10 的员工信息

SELECT * FROM employee

WHERE (YEAR(NOW()) - YEAR(hireDate)) > 10;

 

Like查询:

DELETE FROM pw_members WHERE username LIKE 'zhou%'

 

MySQL() 数据库表的查询操作【重要】

https://www.cnblogs.com/whgk/p/6149009.html

相关文章:

  • 2021-12-11
  • 2021-12-26
  • 2022-12-23
  • 2021-09-22
  • 2021-10-01
  • 2022-01-26
  • 2021-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-09
  • 2021-07-18
  • 2021-11-11
  • 2021-08-05
  • 2022-12-23
  • 2021-04-28
  • 2021-05-21
相关资源
相似解决方案